第三章 - 模型上下文协议 (MCP) 集成 MCP(模型上下文协议)简介 模型上下文协议(MCP)是一种开源标准,用于将人工智能应用程序连接到外部系统。通过使用 MCP,像 Claude 或 ChatGPT 这样的 AI 应用程序可以连接到数据源(例如本地文件、数据库)、工具(例如搜索引擎、计算器)以及工作流(例如专业提示),从而访问关键信息并执行任务。 可以将 MCP 想象成 AI 应用程序的 USB-C 接口。正如 USB-C 提供了一种标准化的方式来连接电子设备,MCP 提供了一种标准化的方式来连接 AI 应用程序与外部系统。 MCP 能实现什么?
模型上下文协议(MCP)是一种开源标准,用于将人工智能应用程序连接到外部系统。通过使用 MCP,像 Claude 或 ChatGPT 这样的 AI 应用程序可以连接到数据源(例如本地文件、数据库)、工具(例如搜索引擎、计算器)以及工作流(例如专业提示),从而访问关键信息并执行任务。
可以将 MCP 想象成 AI 应用程序的 USB-C 接口。正如 USB-C 提供了一种标准化的方式来连接电子设备,MCP 提供了一种标准化的方式来连接 AI 应用程序与外部系统。
MCP 为 AI 应用程序解锁了强大的功能:
MCP 在整个生态系统中提供了诸多优势:
对开发者而言:MCP 减少了构建或集成 AI 应用程序或代理时的开发时间和复杂性。
对 AI 应用程序而言:MCP 提供了访问数据源、工具和应用程序生态系统的能力,从而增强功能并改善最终用户体验。
对最终用户而言:MCP 使 AI 应用程序或代理能够更强大,可以在必要时访问您的数据并代表您采取行动。
小型语言模型代表了一种高效的 AI 部署方法,具有以下几个优势:
SLM 与 MCP 的结合创造了一个强大的组合,模型的推理能力通过外部工具得到了增强,从而弥补了其参数较少的不足。
Python MCP SDK 为构建支持 MCP 的应用程序提供了基础。该 SDK 包括:
让我们通过微软的 Phi-4 小型模型与 MCP 功能集成的实际应用来进行探索。
MCP 遵循 客户端-服务器架构,其中 MCP 主机(如 Claude Code 或 Claude Desktop 等 AI 应用程序)与一个或多个 MCP 服务器建立连接。MCP 主机通过为每个 MCP 服务器创建一个 MCP 客户端来实现这一点。
MCP 包括两个不同的层:
数据层:定义基于 JSON-RPC 的客户端-服务器通信协议,包括:
传输层:定义通信机制和渠道:
┌─────────────────────────────────────┐ │ MCP Host │ │ (AI Application) │ └─────────────────┬───────────────────┘ │ ┌─────────────────┴───────────────────┐ │ MCP Client 1 │ │ ┌─────────────────────────────────┐ │ │ │ Data Layer │ │ │ │ ├── Lifecycle Management │ │ │ │ ├── Primitives (Tools/Resources)│ │ │ │ └── Notifications │ │ │ └─────────────────────────────────┘ │ │ ┌─────────────────────────────────┐ │ │ │ Transport Layer │ │ │ │ ├── STDIO Transport │ │ │ │ └── HTTP Transport │ │ │ └─────────────────────────────────┘ │ └─────────────────┬───────────────────┘ │ ┌─────────────────┴───────────────────┐ │ MCP Server 1 │ │ (Local/Remote Context Provider) │ └─────────────────────────────────────┘
MCP 定义了原语,指定了可以与 AI 应用程序共享的上下文信息类型以及可以执行的操作范围。
MCP 定义了服务器可以公开的三个核心原语:
工具:AI 应用程序可以调用的可执行功能以执行操作
tools/list,tools/call资源:为 AI 应用程序提供上下文信息的数据源
resources/list,resources/read提示:帮助结构化与语言模型交互的可重用模板
prompts/list,prompts/getMCP 还定义了客户端可以公开的原语,以实现更丰富的交互:
采样:允许服务器从客户端的 AI 应用程序请求语言模型完成
sampling/complete引导:允许服务器向用户请求额外信息
elicitation/request日志记录:允许服务器向客户端发送日志消息
MCP 是一个需要生命周期管理的有状态协议。初始化过程具有以下几个关键目的:
# Example initialization request { "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2025-06-18", "capabilities": { "elicitation": {}, # Client supports user interaction "sampling": {} # Client can provide LLM completions }, "clientInfo": { "name": "edge-ai-client", "version": "1.0.0" } } }
初始化后,客户端可以发现并执行工具:
# Discover available tools tools_response = await session.list_tools() # Execute a tool result = await session.call_tool( "weather_current", { "location": "San Francisco", "units": "imperial" } )
MCP 支持实时通知以实现动态更新:
# Server sends notification when tools change { "jsonrpc": "2.0", "method": "notifications/tools/list_changed" } # Client responds by refreshing tool list await session.list_tools() # Get updated tools
安装所需依赖项:
pip install fastmcp mcp-python-client openai requests pyautogui Pillow
设置环境变量:
# System Configuration SYSTEM_PROMPT = "You are an AI assistant with some tools." # Ollama Configuration (Local) OLLAMA_URL = "http://localhost:11434/api/chat" OLLAMA_MODEL_ID = "phi4-mini:3.8b-fp16" # vLLM Configuration (Server) VLLM_URL = "http://localhost:8000/v1" VLLM_MODEL_ID = "microsoft/Phi-4-mini-instruct"
基本 Ollama 设置:
python ghmodel_mcp_demo.py
使用 vLLM 后端:
python ghmodel_mcp_demo.py --env vllm
服务器发送事件连接:
python ghmodel_mcp_demo.py --run sse
自定义 MCP 服务器:
python ghmodel_mcp_demo.py --server /path/to/server.py
import asyncio from ghmodel_mcp_demo import OllamaClient, Phi4MiniMCPClient async def automated_interaction(): # Configure MCP server parameters server_params = StdioServerParameters( command="npx", args=["@playwright/mcp@latest"], env=None, ) # Create MCP client and process tools async with Phi4MiniMCPClient(server_params) as mcp_client: tools = await process_mcp_tools(mcp_client) llm_client = OllamaClient() # Generate response with tool capabilities response, messages = await llm_client.generate_response( "Help me automate a web task", tools ) return response # Execute the automation result = asyncio.run(automated_interaction()) print(result)
实现支持 Ollama 和 vLLM 后端,您可以根据需求进行选择:
支持两种连接模式:
STDIO 模式:直接进程通信
SSE 模式:基于 HTTP 的流式传输
系统可以与各种工具集成:
实现包括以下方面的强大错误处理:
连接错误:
工具执行错误:
响应处理错误:
# Example: Automated web testing async def web_automation_example(): tools = await setup_playwright_tools() response = await llm_client.generate_response( "Navigate to example.com and take a screenshot", tools )
# Example: File analysis async def data_processing_example(): tools = await setup_file_tools() response = await llm_client.generate_response( "Analyze the CSV file and generate a summary report", tools )
# Example: API interactions async def api_integration_example(): tools = await setup_api_tools() response = await llm_client.generate_response( "Fetch weather data and create a forecast summary", tools )
模型上下文协议生态系统包括以下关键组件:
开始使用 MCP 构建:
构建服务器:创建 MCP 服务器,以公开您的数据和工具
构建客户端:开发应用程序,以连接到 MCP 服务器
学习概念:了解 MCP 的核心概念和架构
与 MCP 集成的小型语言模型代表了 AI 应用程序开发的范式转变。通过将小型模型的效率与外部工具的强大功能相结合,开发者可以创建既资源高效又功能强大的智能系统。
模型上下文协议提供了一种标准化方式,将 AI 应用程序连接到外部系统,就像 USB-C 为电子设备提供通用连接标准一样。这种标准化实现了:
关键要点:
本部分为构建您自己的基于 SLM 的 MCP 应用程序提供了基础,开启了自动化、数据处理和智能系统集成的可能性。
免责声明:
本文档使用AI翻译服务Co-op Translator进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。原始语言的文档应被视为权威来源。对于重要信息,建议使用专业人工翻译。我们不对因使用此翻译而产生的任何误解或误读承担责任。