随着现代应用程序变得越来越互联和智能化,与外部 API 集成已成为软件开发的核心组成部分。然而,对于许多开发者来说,管理这些集成仍然涉及重复的样板代码、复杂的身份验证流程以及花费大量时间维护脆弱的连接。这种手动流程会减慢开发速度,引入错误,并分散团队对真正产品创新的关注。模型上下文协议(MCP)应运而生,它就像大模型时代的“USB-C”接口,为 AI 应用连接工具和上下文提供了一种标准化的、高效的方式。
MCP:重新定义 AI 应用集成
传统的 API 集成方式繁琐且容易出错,而 MCP 的出现彻底改变了这一局面。它提供了一个强大的自动化层,重新定义了我们连接系统的方式。MCP 由 Anthropic 开发,是一种连接工具和上下文到 AI 应用程序的标准方法。正如 USB-C 为计算机提供了一种通用方式来连接任何设备一样,MCP 为 AI 应用程序提供了一种通用方式来连接外部工具和上下文。例如,我们可以将 Slack 或 Google Drive 连接到 Claude,以便它可以从这些外部应用程序获取上下文。这极大地拓展了 AI 应用的能力边界,使其能够更智能地处理各种任务。
MCP 架构:客户端-服务器模式的优势
MCP 采用客户端-服务器架构。MCP 客户端负责向 MCP 服务器发送请求,它直接构建在 AI 应用程序中。例如,Claude Desktop 内置了一个 MCP 客户端。一个 MCP 客户端可以连接到多个 MCP 服务器。MCP 服务器负责监听来自客户端的请求并做出相应的响应。这种架构的优势在于其灵活性和可扩展性。我们可以随时添加新的工具,而无需更改 AI 应用程序,只需像将新设备插入计算机一样插入新的 MCP 服务器即可。这种即插即用的特性极大地简化了集成过程,降低了开发和维护成本。
Python 实战:构建一个 MCP 服务器
为了更好地理解 MCP 的工作原理,我们可以通过 Python 创建一个 MCP 服务器。通过这个实践活动,我们将学习如何使用 Python 中的 MCP(多模式控制协议)构建一个强大而智能的工具服务器。在本活动结束时,你将拥有一个可连接到 Neon 托管的 PostgreSQL 数据库的工作服务器,异步获取员工数据,并将这些操作公开为 AI 助手 Claude 可以实时使用的可调用工具。
- 环境准备: 首先,你需要安装 Claude Desktop。
- UV 包管理: 使用 UV (一种快速的 Python 包管理器) 来初始化项目。你可以使用 pip 安装 UV,然后使用
uv init <项目名称>
命令创建一个 UV 管理的项目,例如uv init mcp-server
。 - 添加依赖: 使用
uv add "mcp[cli]"
命令将 MCP 添加到你的项目依赖中。为了直接从你的 Python MCP 工具连接到你的 Neon PostgreSQL 在线数据库,而无需本地 REST API,你可以使用一个异步 PostgreSQL 客户端,比如 asyncpg。使用uv add asyncpg
将其添加到你的依赖中。 - 创建 Python 脚本: 创建 Python 脚本,例如
employee.py
(或者使用main.py
文件)。你需要导入asyncpg
库和FastMCP
类。初始化 MCP 服务器实例并将其命名为 “employee”。定义 Neon PostgreSQL 数据库的连接字符串 (URL)。
以下是一个简单的 Python 代码示例,用于从 Neon PostgreSQL 数据库中获取员工数据:
import asyncpg
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("employee")
NEON_DB_URL = "postgresql://neondb_owner:*******************@ep-wispy-sun-a1n6mwse-pooler.ap-southeast-1.aws.neon.tech/neondb?sslmode=require"
async def fetch_rows(query: str, *args):
try:
conn = await asyncpg.connect(NEON_DB_URL)
rows = await conn.fetch(query, *args)
await conn.close()
return rows
except Exception as e:
print(f"Database error: {e}")
return None
@mcp.tool()
async def get_employee_by_id(employee_id: int) -> str:
"""Get a specific employee by ID directly from Neon."""
query = "SELECT * FROM employee WHERE id = $1"
rows = await fetch_rows(query, employee_id)
if not rows:
return f"No employee found with ID {employee_id}."
row = rows[0]
return f"""
ID: {row['id']}
Name: {row['firstname']} {row['lastname']}
Email: {row['email']}
Salary: LKR {float(row['salary']):,.2f}
Age: {row['age']}
Location: {row['location']}
Hire Date: {row['hiredate']}
"""
这段代码定义了一个 get_employee_by_id
函数,该函数接受一个 employee_id
作为参数,并从 Neon PostgreSQL 数据库中检索相应的员工信息。@mcp.tool()
装饰器将该函数注册为 MCP 中的一个工具,使其可以被 AI 助手 Claude 调用。
- 注册 MCP 服务器: 使用
mcp install <filename>
命令将你的服务器注册为 Claude Desktop 或其他 MCP 兼容 UI 工具中可用的 MCP 工具。这将把你的工具服务器添加到本地 MCP 客户端注册表中。 例如:mcp install employee.py
- 配置 Claude Desktop: 如果 Claude Desktop 是打开的,则完全从任务栏关闭它并再次打开它。现在,你可以看到它已将员工服务器加载到 Claude Desktop 中,并且可以使用它了。你定义的工具可以在 Claude 中使用。
MCP 的优势:简化集成,提升效率
通过使用 MCP,开发者可以避免编写大量的样板代码,简化复杂的身份验证流程,并节省维护连接的时间。这使得开发者能够更加专注于产品创新,而不是被繁琐的集成工作所困扰。此外,MCP 还提供了一系列内置功能,例如身份验证处理、重试逻辑、监控和版本控制,进一步提高了开发效率和可靠性。
- 加速开发: MCP 通过提供预配置的连接器和可重用的组件,大大缩短了开发时间。
- 提高可靠性: MCP 的内置功能,如重试逻辑和监控,确保了集成的稳定性和可靠性。
- 降低维护成本: MCP 的自动化特性减少了手动干预,降低了维护成本。
- 增强可扩展性: MCP 提供了灵活的可扩展性,可以轻松地适应不断变化的需求。
MCP 应用场景:赋能 AI 应用,连接现实世界
MCP 的应用场景非常广泛,它可以用于连接各种不同的工具和上下文到 AI 应用程序。例如:
- 连接 CRM 系统: 将 CRM 系统连接到 AI 助手,使其能够访问客户数据,并提供个性化的服务。
- 连接 ERP 系统: 将 ERP 系统连接到 AI 助手,使其能够访问财务和运营数据,并提供智能化的决策支持。
- 连接 IoT 设备: 将 IoT 设备连接到 AI 平台,使其能够收集和分析设备数据,并实现智能化的设备管理。
- 连接知识库: 将知识库连接到 AI 助手,使其能够访问海量的知识信息,并提供专业的知识问答服务。
正如文章示例中所展示的,我们可以将 Neon PostgreSQL 数据库连接到 Claude,使其能够访问员工数据,并根据用户的自然语言请求提供相应的服务。例如,我们可以询问 “给我 ID 为 2 的员工的全部信息”,Claude 就能通过 MCP 连接到数据库,检索数据,并以结构化的方式返回结果。更进一步,即便 firstName 和 lastName 是两列,大模型也能将他们concat起来。
MCP:大模型时代的基础设施
MCP 不仅仅是一个简化集成的工具,它代表了后端系统与未来软件交互方式的重大转变。通过将真实的 API、数据库和内部服务作为可在 Claude 和其他 AI 环境等自然语言界面中调用的工具公开,MCP 弥合了传统基础设施与现代 AI 驱动的工作流程之间的差距。这使其不仅成为一种开发者生产力工具,而且成为构建智能、上下文感知应用程序的基础组件。
在如今的大模型时代,AI 应用需要能够访问各种不同的数据源和工具,才能真正发挥其潜力。MCP 正是连接这些资源的关键桥梁,它使得 AI 应用能够更好地理解用户的意图,并提供更加智能化的服务。正如互联网的发展离不开 HTTP 协议一样,大模型时代的发展也离不开像 MCP 这样的基础设施。
MCP 的未来:开放标准,共建生态
MCP 的目标是成为一个开放的标准,让更多的开发者和企业能够参与到 MCP 生态的建设中来。Anthropic 已经开源了 MCP 的相关代码和文档,并积极推广 MCP 的应用。未来,我们可以期待看到更多的工具和平台支持 MCP,从而构建一个更加繁荣的 AI 应用生态。
无论是管理少量的 API 还是构建由 AI 代理驱动的平台,MCP 都提供了保持领先所需的灵活性、效率和前向兼容性。现在是时候停止手动集成 API 了 —— 让 MCP 处理一切,并释放下一代互联体验。
结语
MCP 作为大模型时代连接基础设施的“USB-C”接口,为 AI 应用的集成带来了革命性的变化。它简化了集成流程,提高了开发效率,并赋能 AI 应用连接现实世界。随着 MCP 生态的不断发展壮大,我们可以期待看到更多的 AI 应用能够利用 MCP 的强大功能,为人们的生活和工作带来更多的便利和价值。
参考资料:
- GitHub 仓库: https://github.com/Rashmina2000/mcp-server.git
- MCP 文档: https://modelcontextprotocol.io/introduction
- MCP GitHub 仓库: https://github.com/modelcontextprotocol
- MCP Python SDK: https://github.com/modelcontextprotocol/python-sdk
- UV 文档: https://docs.astral.sh/uv/
- Claude Desktop: https://claude.ai/download