核心定義
MCP(Model Context Protocol)是專為LLM(大語言模型)應用設計的標準化協議,通過安全可控的方式向AI應用暴露數據和功能。主要提供以下能力:
- 標準化的上下文管理
- 安全的功能調用接口
- 跨平臺的數據交互協議
- 可審計的操作日志記錄
MCP三大原語
MCP Server 提供了三種核心原語,每種原語都有其特定的用途和特點:
- Tool(工具):服務器公開可執行的函數,供客戶端和LLM調用,實現主動操作和數據寫入。
- Resource(資源):服務器提供的只讀數據,如文件、數據庫記錄、圖片等,供客戶端或應用獲取上下文。
- Prompt(提示模板):可重用的交互模板,引導或標準化與LLM的對話流程。
技術架構
+----------------+ +----------------+ +----------------+
| MCP Client | ← → | MCP Server | ← → | MCP Host |
+----------------+ +----------------+ +----------------+↓ ↓ ↓
+----------------+ +----------------+ +----------------+
| LLM Application | | API Endpoints | | Data Sources |
+----------------+ +----------------+ +----------------+
通信方式
MCP服務端支持兩種與客戶端的數據通信方式:
1. 標準輸入輸出(stdio)
- 原理:客戶端將服務端作為子進程啟動,通過標準輸入輸出進行數據交換。
- 適用場景:本地運行,低延遲、高效率,適合快速響應的本地應用。
2. 基于HTTP的服務器推送事件(SSE)
- 原理:客戶端與服務端通過HTTP協議通信,利用SSE實現服務端向客戶端實時推送數據。
- 適用場景:分布式或遠程部署,適合跨物理位置的服務集成。
開發指南
Python環境管理與FastMCP安裝
推薦使用uv進行Python環境管理:
- 安裝uv(Windows):
powershell -ExecutionPolicy ByPass -c “irm https://astral.sh/uv/install.ps1 | iex” - 初始化項目并指定Python版本:
uv init py-app -p 3.11.9 - 創建并激活虛擬環境:
uv venv
source .venv/bin/activate - 安裝FastMCP庫:
pip install fastmcp
版本推薦
- Python 3.10及以上,支持async/await
- FastMCP庫需通過pip安裝
Python服務端開發示例
以下為基于FastMCP的MCP服務端完整示例,包含Tool與Resource原語:
from mcp.server.fastmcp import FastMCPmcp = FastMCP("Demo 🚀")@mcp.tool()
def add(a: int, b: int) -> int:"""兩個數字相加"""return a + b@mcp.tool()
async def calculate(expression: str) -> str:"""計算一個簡單的數學表達式。Args:expression: 要計算的數學表達式(如"1 + 2")Returns:str: 計算結果"""try:result = eval(expression)return f"計算結果: {result}"except Exception as e:return f"計算錯誤: {str(e)}"@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:"""獲取個性化問候語"""return f"Hello, {name}!"if __name__ == "__main__":mcp.run(transport='stdio')
TypeScript 集成
import { MCPServer } from 'mcp-ts';
const server = new MCPServer('GitHubIntegrator');server.registerTool({name: 'search_repos',description: '搜索GitHub倉庫',execute: async (query: string) => {// 調用GitHub API}
});