当前位置: 首页 > news >正文

MCP服务器:AI与外部工具交互的桥梁——Python和代理AI工具集成指南

🧠 向所有学习者致敬!

“学习不是装满一桶水,而是点燃一把火。” —— 叶芝


我的博客主页: 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服务器具有以下特点:

  1. 轻量级:MCP服务器设计为轻量级程序,旨在高效地与客户端交互
  2. JSON-RPC 2.0:采用JSON-RPC 2.0作为通信格式,支持请求、响应和通知三种交互方式[1]
  3. 安全访问:允许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工具集成的主要步骤如下:

  1. 安装OpenAI Agents SDK
pip install openai-agents
  1. 注册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]
)
  1. 使用代理与MCP服务器交互
# 执行代理
result = agent.run("查询最新的新闻")
print(result)

这种方法允许代理通过MCP协议访问各种外部工具和数据源,从而显著增强其功能[39]。

PydanticAI与MCP集成

PydanticAI是另一个使用Python构建生产级AI应用的框架,它也支持与MCP服务器的集成。PydanticAI旨在让生成式AI的应用开发更加轻松愉快,比笨重的替代品如LangChain更简单[21]。
使用PydanticAI与MCP服务器集成的主要步骤如下:

  1. 安装PydanticAI
pip install pydantic-ai
  1. 初始化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)
        }
    }
)
  1. 使用AI助手与MCP服务器交互
# 执行AI助手
result = assistant.run("查询最新的新闻")
print(result)

这种方法允许AI助手通过MCP协议访问各种外部工具和数据源,从而增强其功能[24]。

MCP服务器的实际应用场景

智能代码搜索和分析

你可以构建一个MCP服务器,用于智能搜索你的代码库并执行自定义代码分析。这样的服务器可以具有以下功能:

  1. 智能搜索代码库
  2. 执行自定义代码分析
  3. 提供代码改进建议
    以下是一个简单的实现示例:
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服务器主要提供以下三种类型的公开接口:

  1. 资源接口
  2. 工具接口
  3. 数据源接口
    这种方法允许你构建复杂的多智能体工作流,每个智能体可以连接到不同的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服务器也在不断演进。未来,我们可以期待以下发展趋势:

  1. 更广泛的支持:更多的AI框架和平台将支持MCP协议,使AI模型能够更方便地访问外部工具和数据源
  2. 更丰富的资源库:将有更多现成的MCP服务器实现可供使用,涵盖更多的应用场景
  3. 更好的安全性和隐私保护:MCP协议将提供更强大的安全机制,确保AI模型访问外部数据源时的数据安全和隐私保护
  4. 更高效的通信协议: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应用

相关文章:

  • vector的模拟实现
  • leetcode数组-螺旋矩阵Ⅱ
  • NSSCTF [FSCTF 2023]Fi3h
  • Python语言的测试用例设计
  • 【C#深度学习之路】如何使用C#实现Stable Diffusion的文生图功能
  • Linux文件特殊权限管理及进程和线程
  • Roo Code(前身为 Roo Cline)一个 AI 驱动的自主编码代理
  • C++stl map容器详解
  • openHalo:国产开源数据库新力量
  • HCIP【BGP协议(详解)】
  • 搜索与图论 树的深度优先遍历 树的重心
  • Windows 权限配置文件解析与安全分析(GPP,GPO,LSA)
  • 查询当前用户的购物车和清空购物车
  • 57.基于springboot和vue校园跑腿服务平台
  • CSS语言的硬件驱动
  • 第五讲(上) | string类的使用
  • Linux | 安装超级终端串口软件连接i.MX6ULL开发板(8)
  • Git 从入门到精通(开源协作特别版)
  • Windows安装Node.js+Express+Nodemon
  • 6.1 宽度优先搜索算法(BFS)
  • 怎么建设宣传网站/中国站长
  • 国内做网站比较好的公司有哪些/互联网营销案例
  • 高校网站建设要点/做百度推广代运营有用吗
  • 建设银行可以查房贷的网站/外贸展示型网站建设公司
  • 怎么做网站赚钱软件/焊工培训心得体会
  • 网站备案号怎么放/搭建网站需要什么技术