首页 / 课程 / S07: MCP Protocol

S07: MCP Protocol Model Context Protocol

"MCP is the USB of AI tools" -- 统一协议连接无限可能。

Harness 层: MCP -- 外部工具集成的标准接口。

本章导图:MCP:外部工具服务通过协议挂入 Agent 上下文。

🎯 问题

AI 工具需要:

  • 访问外部数据源 (数据库、API)
  • 调用专业服务 (搜索、分析)
  • 扩展功能 (自定义工具)
  • 标准化集成方式

💡 解决方案

MCP (Model Context Protocol) 提供标准化集成:

+-------------+     +-------------+     +-------------+
| Claude Code | --> | MCP Client  | --> | MCP Server  |
|   (Host)    |     | (Protocol)  |     |   (Tool)    |
+-------------+     +-------------+     +-------------+
                           |
                    +------+------+
                    |             |
               +----+----+   +----+----+
               | Server  |   | Server  |
               |   A     |   |   B     |
               +---------+   +---------+
                        

🔑 传输类型

stdio标准输入输出 (启动本地进程)
sseServer-Sent Events (HTTP 流)
wsWebSocket 连接
httpHTTP 传输

📐 连接流程

// 1. 根据类型创建传输
let transport: Transport
switch (config.type) {
  case 'stdio':
    transport = new StdioClientTransport({
      command: config.command,
      args: config.args,
    })
    break
  case 'sse':
    transport = new SSEClientTransport({
      url: config.url,
    })
    break
}

// 2. 创建客户端并连接
const client = new Client({ name: 'claude-code' })
await client.connect(transport)

// 3. 获取能力
const capabilities = await client.listTools()

⚙️ 配置示例

{
  "mcpServers": {
    "github": {
      "type": "stdio",
      "command": "mcp-server-github",
      "args": ["--repo", "owner/repo"]
    },
    "postgres": {
      "type": "stdio",
      "command": "mcp-server-postgres",
      "env": { "DATABASE_URL": "postgresql://..." }
    },
    "api": {
      "type": "sse",
      "url": "https://api.example.com/mcp"
    }
  }
}