🧠 向所有学习者致敬!
“学习不是装满一桶水,而是点燃一把火。” —— 叶芝
我的博客主页: https://lizheng.blog.csdn.net
🌐 欢迎点击加入AI人工智能社区!
🚀 让我们一起努力,共创AI未来! 🚀
引言
随着AI技术的快速发展,大型语言模型(LLM)的应用场景不断扩大。然而,单一的AI模型往往难以直接访问和操作外部数据源和工具,这限制了其应用场景。Model Context Protocol(MCP)作为一种开放协议,为解决这一问题提供了标准化的解决方案。本报告将深入探讨MCP服务器的原理、实现方式,以及如何利用Python和代理AI工具实现MCP服务器的集成。
MCP是什么?
MCP(Model Context Protocol,模型上下文协议)是由Anthropic在2024年底推出的一种开放协议,旨在通过提供标准化的接口,实现AI模型与外部数据源和工具之间的无缝集成[4]。无论你是构建AI驱动的IDE、改善chat交互,还是构建自定义的AI应用,MCP都能提供统一的标准,使AI模型能够充分发挥其潜力。
MCP的出现解决了AI系统与数据源集成分散的问题。之前,每个工具和数据源都需要特定的集成方式,而现在MCP提供了一个统一的标准,使得AI模型可以通过"即插即用"的方式连接多种工具与数据源[42]。
MCP服务器的核心概念
MCP服务器是实现MCP协议的服务器端组件,它为MCP客户端提供上下文、工具和prompt信息。MCP服务器的主要职责是暴露特定的数据源或工具功能,并通过标准化协议与客户端交互[1]。
根据MCP协议的规范,MCP服务器具有以下特点:
- 轻量级:MCP服务器设计为轻量级程序,旨在高效地与客户端交互
- JSON-RPC 2.0:采用JSON-RPC 2.0作为通信格式,支持请求、响应和通知三种交互方式[1]
- 安全访问:允许MCP客户端安全地访问本地资源,如文件、数据库等[0]
MCP服务器的主要组件
一个完整的MCP生态系统通常包括以下组件:
- MCP服务器:实现MCP协议,暴露特定的数据源或工具功能
- MCP客户端:与MCP服务器交互,获取上下文、工具和prompt信息
- 本地资源:可供MCP服务器安全访问的本地资源,如文件、数据库等[0]
MCP服务器的实现方式
使用官方Python SDK实现MCP服务器
官方提供了MCP Python SDK,这是MCP的Python实现,为LLM提供了客户端和服务器功能,以标准化方式将上下文提供给LLM,并分离工具功能[15]。
安装和初始化
要使用MCP Python SDK开发MCP服务器,首先需要安装该库:
pip install mcp
然后,可以按照以下步骤创建一个简单的MCP服务器:
from mcp.server import Server
from mcp.resources import FileResource
# 创建服务器实例
server = Server()
# 注册资源
server.register_resource(FileResource())
# 启动服务器
server.start()
这个示例创建了一个简单的MCP服务器,并注册了一个文件资源,允许AI模型通过MCP协议访问文件系统[6]。
实现自定义资源
MCP服务器的核心是资源(Resource)的概念。资源代表了可以被AI模型访问的外部数据源或工具。你可以通过实现自定义资源来扩展MCP服务器的功能。
以下是一个简单的自定义资源示例:
from mcp.resources import Resource
from mcp.types import ResourceAction, ResourceActionInput, ResourceActionResult
class MyCustomResource(Resource):def __init__(self):super().__init__()async def handle_action(self, action: ResourceAction, input: ResourceActionInput) -> ResourceActionResult:if action == "my_action":# 处理自定义动作result = f"Processed input: {input}"return ResourceActionResult(success=True, result=result)else:return ResourceActionResult(success=False, error="Unknown action")
这个示例实现了一个自定义资源,它支持一个名为"my_action"的动作。当AI模型调用这个动作时,服务器会返回处理结果[14]。
使用现有MCP服务器实现
除了从头开始实现MCP服务器,你还可以使用现有的MCP服务器实现。在GitHub上有一个比较活跃的开源MCP服务器实现仓库,这些实现都是基于官方的MCP SDK开发的(TypeScript或Python)[9]。
例如,Gitee MCP服务器是一个用于Gitee的模型上下文协议服务器实现,它提供了一系列与Gitee API交互的工具,使AI助手能够管理仓库、问题、拉取请求等[3]。
使用Python与代理AI工具集成MCP服务器
OpenAI Agents SDK与MCP集成
OpenAI最近宣布其Agents SDK支持MCP协议,这是一个重大更新。MCP类似AI的"USB接口",是统一标准,可让智能体连接多种工具与数据源,实现"即插即用"[42]。
使用OpenAI Agents SDK将MCP服务器与代理AI工具集成的主要步骤如下:
- 安装OpenAI Agents SDK:
pip install openai-agents
- 注册MCP服务器为工具:
from openai_agents import Agent
from openai_agents.tools import FunctionTool
# 创建MCP客户端
mcp_client = ... # 初始化MCP客户端的代码
# 将MCP客户端注册为工具
mcp_tool = FunctionTool(name="mcp",description="通过MCP协议与外部工具和数据源交互",func=lambda x: mcp_client.execute(x)
)
# 创建代理并添加工具
agent = Agent(name="my_agent",tools=[mcp_tool]
)
- 使用代理与MCP服务器交互:
# 执行代理
result = agent.run("查询最新的新闻")
print(result)
这种方法允许代理通过MCP协议访问各种外部工具和数据源,从而显著增强其功能[39]。
PydanticAI与MCP集成
PydanticAI是另一个使用Python构建生产级AI应用的框架,它也支持与MCP服务器的集成。PydanticAI旨在让生成式AI的应用开发更加轻松愉快,比笨重的替代品如LangChain更简单[21]。
使用PydanticAI与MCP服务器集成的主要步骤如下:
- 安装PydanticAI:
pip install pydantic-ai
- 初始化MCP客户端和代理工具:
from mcp import MCPClient
from pydantic_ai import AIAssistant
# 连接到MCP服务器
mcp_client = MCPClient("http://localhost:8080")
# 创建AI助手
assistant = AIAssistant(name="my_assistant",tools={"mcp": {"description": "通过MCP协议与外部工具和数据源交互","func": lambda x: mcp_client.execute(x)}}
)
- 使用AI助手与MCP服务器交互:
# 执行AI助手
result = assistant.run("查询最新的新闻")
print(result)
这种方法允许AI助手通过MCP协议访问各种外部工具和数据源,从而增强其功能[24]。
MCP服务器的实际应用场景
智能代码搜索和分析
你可以构建一个MCP服务器,用于智能搜索你的代码库并执行自定义代码分析。这样的服务器可以具有以下功能:
- 智能搜索代码库
- 执行自定义代码分析
- 提供代码改进建议
以下是一个简单的实现示例:
from mcp.server import Server
from mcp.resources import CodeSearchResource, CodeAnalysisResource
# 创建服务器实例
server = Server()
# 注册资源
server.register_resource(CodeSearchResource())
server.register_resource(CodeAnalysisResource())
# 启动服务器
server.start()
这个示例创建了一个MCP服务器,它支持代码搜索和代码分析功能[12]。
多智能体工作流
MCP服务器支持主机通过客户端连接多个MCP服务器,每个服务器都提供独立的功能,实现模块化、灵活的集成。MCP服务器主要提供以下三种类型的公开接口:
- 资源接口
- 工具接口
- 数据源接口
这种方法允许你构建复杂的多智能体工作流,每个智能体可以连接到不同的MCP服务器,访问不同的工具和数据源[39]。
处理客诉的AI系统
你可以使用Agents SDK接入Stripe(支付平台)的API,处理客诉。这也是众多商户常见的场景。以下是实现这一功能的示例:
from openai_agents import Agent
from openai_agents.tools import FunctionTool
# 创建Stripe API客户端
stripe_client = StripeAPIClient("your_api_key")
# 创建处理退款的工具
refund_tool = FunctionTool(name="process_refund",description="处理退款请求",func=lambda x: stripe_client.process_refund(x)
)
# 创建处理纠纷的工具
dispute_tool = FunctionTool(name="handle_dispute",description="处理支付纠纷",func=lambda x: stripe_client.handle_dispute(x)
)
# 创建代理
agent = Agent(name="customer_complaint_handler",tools=[refund_tool, dispute_tool]
)
# 处理客诉
result = agent.run("用户声称他们没有收到他们订购的产品,并要求退款")
print(result)
这个示例展示了如何使用Agents SDK和MCP协议构建一个能够处理客诉的AI系统[47]。
MCP服务器的未来发展趋势
随着AI技术的不断发展,MCP服务器也在不断演进。未来,我们可以期待以下发展趋势:
- 更广泛的支持:更多的AI框架和平台将支持MCP协议,使AI模型能够更方便地访问外部工具和数据源
- 更丰富的资源库:将有更多现成的MCP服务器实现可供使用,涵盖更多的应用场景
- 更好的安全性和隐私保护:MCP协议将提供更强大的安全机制,确保AI模型访问外部数据源时的数据安全和隐私保护
- 更高效的通信协议:MCP协议将不断优化其通信机制,提高AI模型与外部工具和数据源交互的效率
结论
MCP服务器作为一种标准化的接口,为AI模型与外部工具和数据源之间的交互提供了统一的标准。通过使用Python和代理AI工具集成MCP服务器,你可以显著增强AI应用的功能,使其能够访问和操作各种外部数据源和工具。
无论是使用官方的MCP Python SDK,还是通过OpenAI Agents SDK或PydanticAI等框架,将MCP服务器与代理AI工具集成都是一个相对简单的过程。随着MCP协议的不断发展和完善,我们可以期待它在AI领域的应用将越来越广泛。
参考文献
[0] 一文看懂:MCP(大模型上下文协议) - 知乎专栏. https://zhuanlan.zhihu.com/p/27327515233.
[1] 一文搞懂MCP Servers - 虫师- 博客园. https://www.cnblogs.com/fnng/p/18744210.
[3] 开源中国/mcp-gitee. https://gitee.com/oschina/mcp-gitee.
[4] MCP 是什么,现状和未来 - onevcat. https://onevcat.com/2025/02/mcp/.
[6] MCP (Model Context Protocol),一篇就够了。 - 知乎专栏. https://zhuanlan.zhihu.com/p/29001189476.
[9] 大模型上下文协议——MCP详解 - 知乎专栏. https://zhuanlan.zhihu.com/p/19707405738.
[12] 构建您自己的MCP服务器:连接Cursor的终极指南 - 知乎专栏. https://zhuanlan.zhihu.com/p/30079943120.
[14] Python的MCP Server开发实战原创 - CSDN博客. https://blog.csdn.net/crisschan/article/details/145985521.
[15] modelcontextprotocol-python-sdk - OSCHINA - 中文开源技术交流社区. https://www.oschina.net/p/modelcontextprotocol-python-sdk.
[21] PydanticAI代理利用MCP服务器- 汇智网. http://www.hubwiz.com/blog/use-mcp-servers-with-pydanticai-agents/.
[24] Agentic RAG与MCP集成指南 - 汇智网. http://www.hubwiz.com/blog/agentic-rag-and-mcp-integration-guide/.
[39] 如何使用OpenAI Agents SDK 构建MCP - 哥不是小萝莉- 博客园. https://www.cnblogs.com/smartloli/p/18801374.
[42] OpenAI 智能体重大更新:Agent SDK 接入MCP 服务解锁无限工具扩展. https://finance.sina.com.cn/tech/roll/2025-03-27/doc-inerachu0880805.shtml.
[47] 【OpenAI中文文档】使用Agents SDK自动处理客诉 - 知乎专栏. https://zhuanlan.zhihu.com/p/31453918175.
这篇文章就来自于用mcp打造的ai应用