MCP 深度指南:AI 时代的通用插件系统
Model Context Protocol (MCP) 正在成为 AI 工具的事实标准。本文深入解析 MCP 的工作原理、安全考量,并手把手教你构建自己的 MCP Server。
Model Context Protocol (MCP) 正在成为 AI 开发领域最受关注的技术之一。从 Claude Code 到 OpenAI Agents SDK,MCP 正在重新定义 AI 工具的扩展方式。本文将带你深入理解 MCP,并手把手构建你的第一个 MCP Server。
什么是 MCP?
MCP (Model Context Protocol) 是一个开放标准,旨在让 AI 助手安全地与外部工具和数据源连接。简单来说,它就是 AI 世界的”USB-C 接口”——无论什么设备,只要支持 USB-C,就能互联互通。
为什么需要 MCP?
在 MCP 出现之前,AI 工具与外部系统的集成是这样的:
Claude: "我需要查一下数据库"
开发者: "好,我写一个 Python 脚本"
Claude: "我需要调用 GitHub API"
开发者: "好,我再写一个集成"
Claude: "我需要..."
开发者: "别说了,我写还不行吗?"
每个 AI 工具都需要单独的集成方案,导致:
- 重复开发:同样的功能要为不同 AI 产品写多遍
- 碎片化:用户需要在不同工具间切换
- 维护负担:每次 API 升级都是噩梦
MCP 的出现就是为了解决这个问题。
MCP 工作原理
架构概览
MCP 采用客户端-服务器架构:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ AI 模型 │ ←──→ │ MCP Host │ ←──→ │ MCP Server │
│ (Claude) │ │ (你的电脑) │ │ (工具服务) │
└─────────────┘ └─────────────┘ └─────────────┘
- MCP Host: 运行 AI 的环境(如 Claude Code、Cursor)
- MCP Server: 提供具体功能的外部服务
- AI Model: 通过 MCP 协议与 Server 通信
核心概念
MCP 定义了三种资源类型:
- Tools (工具): AI 可以调用的函数
- Resources (资源): AI 可以读取的数据
- Prompts (提示): 预定义的提示模板
MCP 安全问题:S 代表 Security
最近 Hacker News 上关于 MCP 安全性的讨论非常热烈。
主要安全担忧
-
Supabase MCP 可以泄露整个数据库
- 配置不当的 MCP Server 可能暴露敏感数据
-
GitHub MCP 被利用访问私有仓库
- 恶意 MCP Server 可能获取未授权的代码访问权限
-
输出投毒风险
- “No output from your MCP server is safe”
安全最佳实践
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["/path/to/server.js"],
"env": {
// 敏感信息通过环境变量传递
"API_KEY": "安全的存储方式"
}
}
}
}
提示:永远不要在 MCP Server 配置中硬编码敏感信息
实战:构建你的第一个 MCP Server
让我们用 Node.js 创建一个简单的 MCP Server。
1. 初始化项目
mkdir my-mcp-server && cd my-mcp-server
npm init -y
npm install @modelcontextprotocol/server stdio
2. 创建 Server 代码
import { Server } from '@modelcontextprotocol/server/stdio';
import { z } from 'zod';
const server = new Server(
{
name: 'my-first-mcp-server',
version: '1.0.0',
},
{
capabilities: {
tools: {},
},
}
);
// 定义一个简单的工具:获取当前时间
server.setRequestHandler('tools/list', async () => {
return {
tools: [
{
name: 'get_current_time',
description: '获取当前时间',
inputSchema: {
type: 'object',
properties: {
timezone: {
type: 'string',
description: '时区,如 "Asia/Shanghai"',
default: 'UTC',
},
},
},
},
],
};
});
server.setRequestHandler('tools/call', async (request) => {
const { name, arguments: args } = request.params;
if (name === 'get_current_time') {
const now = new Date();
const formatter = new Intl.DateTimeFormat('zh-CN', {
timeZone: args.timezone || 'UTC',
dateStyle: 'full',
timeStyle: 'medium',
});
return {
content: [
{
type: 'text',
text: formatter.format(now),
},
],
};
}
throw new Error(`Unknown tool: ${name}`);
});
server.run();
3. 配置 Claude Code
在 CLAUDE.md 所在目录创建 mcp.json:
{
"mcpServers": {
"time-server": {
"command": "node",
"args": ["/path/to/my-mcp-server/index.js"]
}
}
}
4. 使用
现在你可以让 Claude 调用这个工具:
请告诉我现在的北京时间
Claude 会自动调用 get_current_time 工具并返回结果。
有趣的 MCP Server 推荐
Hacker News 上涌现了许多创意十足的 MCP Server:
| 项目 | 功能 | 热度 |
|---|---|---|
| Browser MCP | 浏览器自动化 | 616 |
| GitMCP | 自动为 GitHub 仓库创建 MCP | 185 |
| MCP-Shield | MCP 安全扫描 | 134 |
| Ghidra MCP | AI 辅助逆向工程 | 298 |
| Apple Health MCP | 健康数据分析 | 199 |
| WhatsApp MCP | WhatsApp 消息控制 | 229 |
| Blender MCP | 3D 场景自然语言控制 | 151 |
MCP vs Skills:选哪个?
最近社区有个热门讨论:Claude Skills are awesome, maybe a bigger deal than MCP (738 points)
| 特性 | MCP | Skills |
|---|---|---|
| 适用场景 | 外部工具/数据集成 | 自定义指令/工作流 |
| 复杂度 | 较高 | 简单 |
| 灵活性 | 强 | 有限 |
| 学习曲线 | 陡 | 平缓 |
建议:
- 简单任务 → 用 Skills
- 需要外部数据/工具 → 用 MCP
总结
MCP 正在成为 AI 工具扩展的事实标准。虽然安全性还有待完善,但随着 OpenAI、Google 等大厂的加入,MCP 的生态正在快速成熟。
如果你正在开发 AI 应用的扩展能力,MCP 绝对值得深入研究。
参考来源
相关文章
AI 周报 2026年第10周(2026/03/07 - 2026/03/13)
AI Agent 伦理争议持续发酵,Claude 4.6 使用体验讨论,开源 AI 呼声高涨。本期涵盖 AI Agent 失控风险、开源 vs 闭源、LLM 轻量化等热门话题
🚀实战案例Claude Code:Anthropic 的 AI 编程助手
Claude Code 是 Anthropic 推出的 CLI 编程工具,让开发者通过终端与 Claude AI 协作完成编程任务
🤖Claude CodeClaude Code Agent Teams 完全指南
深入了解 Claude Code 的实验性功能 Agent Teams,学会如何协调多个 AI 代理并行工作。
评论
加载中...
评论
加载中...