miricy преди 8 месеца
родител
ревизия
320c9e23a2
променени са 1 файла, в които са добавени 262 реда и са изтрити 0 реда
  1. 262 0
      product/ai/mcp/mcp.md

+ 262 - 0
product/ai/mcp/mcp.md

@@ -0,0 +1,262 @@
+**Model Context Protocol (MCP)**,是 Anthropic 推出的用于大语言模型(LLM)与外部系统集成的开源协议。以下是详细解析,包含核心设计、消息格式和具体示例:
+
+---
+
+### **MCP 核心设计目标**
+1. **模型扩展性**:允许 LLM 调用外部工具(API、数据库、函数等)
+2. **上下文管理**:动态注入/更新模型上下文
+3. **标准化交互**:统一模型与外部系统的通信协议
+4. **安全控制**:通过沙箱机制限制模型权限
+
+---
+
+### **协议基础**
+- **传输方式**:HTTP/HTTPS 或 WebSocket
+- **数据格式**:JSON
+- **交互模式**:同步请求/响应 或 异步流式响应
+- **官方文档**:[Anthropic MCP GitHub](https://github.com/anthropics/model-context-protocol)
+
+---
+
+### **核心消息格式**
+#### **1. 模型请求(Model → 外部系统)**
+```json
+{
+  "mcp_version": "1.0",
+  "request_id": "req_123456",
+  "action": "execute_tool",
+  "tool": {
+    "name": "weather_api",
+    "parameters": {
+      "location": "San Francisco",
+      "unit": "celsius"
+    }
+  },
+  "context": {
+    "session_id": "sess_7890",
+    "user_id": "user_abc",
+    "memory": {
+      "previous_city": "New York"
+    }
+  }
+}
+```
+
+**字段说明**:
+| 字段 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| `mcp_version` | string | ✅ | 协议版本 (e.g., "1.0") |
+| `request_id` | string | ✅ | 唯一请求标识符 |
+| `action` | string | ✅ | `execute_tool`/`update_context`/`get_state` |
+| `tool` | object | △ | 工具调用详情(action=execute_tool时必填) |
+| `context` | object | △ | 会话上下文数据 |
+
+---
+
+#### **2. 工具响应(外部系统 → 模型)**
+```json
+{
+  "mcp_version": "1.0",
+  "request_id": "req_123456",
+  "status": "success",
+  "data": {
+    "temperature": 22,
+    "forecast": "sunny"
+  },
+  "context_updates": {
+    "last_location": "San Francisco"
+  }
+}
+```
+
+**字段说明**:
+| 字段 | 类型 | 说明 |
+|------|------|------|
+| `status` | string | `success`/`error`/`pending` |
+| `data` | object | 工具执行结果 |
+| `context_updates` | object | 需要更新的上下文字段 |
+| `error` | object | 错误时包含 `code` 和 `message` |
+
+---
+
+#### **3. 上下文更新(系统 → 模型)**
+```json
+{
+  "mcp_version": "1.0",
+  "action": "inject_context",
+  "context": {
+    "user_preferences": {
+      "language": "zh-CN",
+      "timezone": "Asia/Shanghai"
+    },
+    "document_summary": "会议重点:Q3 销售目标提升20%..."
+  },
+  "priority": "high"
+}
+```
+
+**特殊字段**:
+- `priority`: `low`/`medium`/`high`(上下文注入优先级)
+- `ttl`: 上下文有效时间(秒)
+
+---
+
+### **典型交互流程示例**
+#### **场景:旅行规划助手**
+```mermaid
+sequenceDiagram
+    participant User
+    participant LLM
+    participant MCP_Router
+    participant FlightAPI
+
+    User->>LLM: "帮我订周五纽约到伦敦的机票"
+    LLM->>MCP_Router: MCP 工具请求(航班查询)
+    MCP_Router->>FlightAPI: 标准API调用
+    FlightAPI->>MCP_Router: 航班数据
+    MCP_Router->>LLM: MCP 结构化响应
+    LLM->>User: "找到3个航班:1. AA101 $680..."
+```
+
+---
+
+### **安全机制**
+1. **工具沙箱**:
+   ```python
+   # 示例:Python 沙箱执行环境
+   from mcp_sandbox import execute_tool
+   
+   result = execute_tool(
+       tool_name="sql_query",
+       params={"query": "SELECT * FROM users"},
+       permissions=["read_only"]  # 禁止写操作
+   )
+   ```
+
+2. **权限控制清单**:
+   ```yaml
+   # mcp_permissions.yaml
+   tools:
+     - name: email_sender
+       allowed_domains: ["@company.com"]
+       rate_limit: 5/hour
+     
+     - name: database
+       allowed_operations: ["SELECT"]
+       row_limit: 100
+   ```
+
+3. **上下文过滤**:
+   ```json
+   {
+     "context": {
+       "financial_data": "FILTERED[GDP数据]",
+       "user_identity": "REDACTED"
+     }
+   }
+   ```
+
+---
+
+### **实际应用案例**
+#### **客户支持系统集成**
+```json
+// 1. LLM 发送工具请求
+{
+  "action": "execute_tool",
+  "tool": {
+    "name": "crm_lookup",
+    "parameters": {
+      "customer_id": "CUST-2023-789",
+      "fields": ["order_history", "support_tickets"]
+    }
+  }
+}
+
+// 2. CRM 系统响应
+{
+  "status": "success",
+  "data": {
+    "last_order": "2023-08-10",
+    "open_tickets": 2
+  },
+  "context_updates": {
+    "customer_tier": "gold"
+  }
+}
+
+// 3. LLM 使用上下文生成回复
+"您好金卡会员!您最近在8月10日有订单..."
+```
+
+---
+
+### **协议优势**
+1. **上下文感知工具调用**:
+   ```python
+   # 伪代码示例
+   if context.get("user_mood") == "angry":
+       tool_params["priority"] = "urgent"
+   ```
+
+2. **多工具链式调用**:
+   ```json
+   {
+     "action": "pipeline",
+     "steps": [
+       {"tool": "geocoder", "params": {"address": input}},
+       {"tool": "weather", "params": {"coords": "$step1.output"}}
+     ]
+   }
+   ```
+
+3. **动态上下文管理**:
+   ```json
+   {
+     "action": "update_context",
+     "operations": [
+       {"op": "merge", "path": "/user_prefs", "value": {"theme": "dark"}},
+       {"op": "delete", "path": "/temp_data"}
+     ]
+   }
+   ```
+
+---
+
+### **与类似协议对比**
+| 特性 | MCP | OpenAI Function Calling | LangChain |
+|------|-----|-------------------------|----------|
+| 上下文管理 | ✅ 动态注入 | ❌ 有限 | ⚠️ 需自定义 |
+| 工具链组合 | ✅ 原生支持 | ❌ 单次调用 | ✅ 通过代理 |
+| 安全沙箱 | ✅ 内置 | ❌ 依赖实现 | ⚠️ 部分支持 |
+| 多模态支持 | ✅ (v1.1+) | ❌ | ⚠️ 实验性 |
+
+---
+
+### **最佳实践建议**
+1. **上下文压缩**:
+   ```python
+   # 移除过期上下文
+   context = {k: v for k,v in context.items() if time() < v["expiry"]}
+   ```
+
+2. **工具降级策略**:
+   ```json
+   {
+     "fallback_chain": [
+       {"tool": "paid_flight_api", "budget": 0.1},
+       {"tool": "free_flight_api"}
+     ]
+   }
+   ```
+
+3. **审计日志**:
+   ```log
+   [MCP_AUDIT] req_id=req_123 
+   | Tool: stock_trade 
+   | Params: {"symbol":"AAPL","qty":100} 
+   | User: id123 
+   | Context_hash: a1b2c3d4
+   ```
+
+该协议目前处于活跃开发阶段,最新规范请参考 [Anthropic 官方 GitHub 仓库](https://github.com/anthropics/model-context-protocol)。