🧠 向所有學習者致敬!
“學習不是裝滿一桶水,而是點燃一把火。” —— 葉芝
我的博客主頁: 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應用