Skip to content

MCP 入门:连接 AI 与外部世界的桥梁

你有没有遇到过这样的场景:希望 AI 助手能读取你的本地文件、查询数据库、调用内部 API,却发现每个 AI 产品的集成方式都不一样?MCP(Model Context Protocol)正是为解决这个问题而生。

🎯 MCP 是什么#

Model Context Protocol(MCP) 是由 Anthropic 推出的开放协议,它标准化了 AI 应用与外部数据源、工具之间的通信方式。你可以把它理解为 AI 世界的”USB-C 接口”——一个统一的标准,让不同的 AI 应用和数据源能够即插即用。

┌─────────────┐ MCP ┌─────────────┐
│ AI 应用 │ ◄──────────► │ 外部服务 │
│ (Claude等) │ 标准协议 │ (文件/API) │
└─────────────┘ └─────────────┘

在 MCP 出现之前,每个 AI 应用都需要针对不同的数据源编写专门的集成代码。有了 MCP,只要数据源实现了 MCP Server,任何支持 MCP 的 AI 应用都能直接使用它。

为什么需要 MCP#

传统 AI 应用集成面临几个核心问题:

问题传统方案MCP 方案
碎片化每个 AI 产品各自实现插件系统统一协议,一次实现到处使用
上下文隔离AI 无法访问本地数据安全地暴露本地资源给 AI
能力有限AI 只能生成文本AI 可以执行实际操作
维护成本N 个应用 × M 个数据源N + M 次实现

核心架构#

MCP 采用 Client-Server 架构:

┌─────────────────────────────────────────────────────┐
│ Host │
│ (Claude Desktop / IDE / 自定义应用) │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ MCP Client │ │ MCP Client │ │ MCP Client │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
└─────────┼────────────────┼────────────────┼────────┘
│ │ │
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ MCP Server │ │ MCP Server │ │ MCP Server │
│ (文件系统) │ │ (数据库) │ │ (API) │
└────────────┘ └────────────┘ └────────────┘

三个核心角色

一个 Host 可以连接多个 MCP Server,每个 Server 专注于一个领域。

三大核心原语#

MCP 定义了三种核心能力,也叫”原语”(Primitives):

1. Tools(工具)#

Tools 是 AI 可以调用的函数,让 AI 具备执行实际操作的能力:

// 示例:一个搜索文件的 Tool
{
name: 'search_files',
description: '在指定目录搜索匹配的文件',
inputSchema: {
type: 'object',
properties: {
path: { type: 'string', description: '搜索目录' },
pattern: { type: 'string', description: '文件名模式' }
},
required: ['path', 'pattern']
}
}

🔶 注意:Tool 的调用需要用户确认(除非配置为自动执行),这是 MCP 的安全设计。

2. Resources(资源)#

Resources 是 Server 暴露给 AI 的数据,采用 URI 格式标识:

// 示例:暴露配置文件作为 Resource
{
uri: 'file:///config/app.json',
name: '应用配置',
description: '当前应用的配置信息',
mimeType: 'application/json'
}

Resources 是应用驱动的——由 Server 决定暴露哪些数据,AI 只能读取。

3. Prompts(提示)#

Prompts 是 预定义的交互模板,可以包含参数:

// 示例:代码审查 Prompt
{
name: 'code_review',
description: '生成代码审查建议',
arguments: [
{ name: 'code', description: '要审查的代码', required: true },
{ name: 'language', description: '编程语言' }
]
}

Prompts 让用户可以快速启动特定类型的 AI 对话,比如”审查这段代码”、“解释这个错误”。

原语对比#

特性ToolsResourcesPrompts
触发方AI 决定调用应用/用户选择用户选择
用途执行操作提供数据预设模板
安全级别需确认只读只读
典型场景发邮件、写文件读取配置、日志代码审查模板

Transport 传输层#

MCP 支持两种主要的传输方式:

stdio(标准输入输出)#

适用于本地进程通信,Client 启动 Server 作为子进程:

Client ──stdin──► Server
Client ◄─stdout── Server

特点

Streamable HTTP#

适用于远程服务,支持 HTTP POST/GET 和 SSE(Server-Sent Events):

Client ──HTTP POST──► Server
Client ◄───SSE────── Server

特点

快速体验:配置 Claude Desktop#

让我们在 Claude Desktop 中配置一个 MCP Server,体验 MCP 的实际效果。

1. 安装 Claude Desktop#

claude.ai/download 下载并安装 Claude Desktop。

2. 配置 MCP Server#

Claude Desktop 的配置文件位置:

添加一个官方的文件系统 Server:

{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/你的用户名/Documents"
]
}
}
}

🔶 注意:将路径替换为你实际要授权访问的目录。

3. 重启并测试#

重启 Claude Desktop 后,你可以这样测试:

“请列出我 Documents 目录下的所有 markdown 文件”

Claude 会通过 MCP 调用 filesystem Server 的 Tool 来完成这个任务。

生态系统#

MCP 已经有丰富的官方和社区 Server 实现:

官方 Server

支持 MCP 的客户端

下一步#

现在你已经了解了 MCP 的核心概念和架构。接下来的文章中,我们将:

  1. 从零搭建 MCP Server - 使用 TypeScript SDK 创建自己的 Server
  2. 深入 Tools - 掌握 Tool 的高级用法和最佳实践
  3. 探索 Resources 和 Prompts - 完整掌握 MCP 的三大原语

准备好开始构建了吗?

参考资料#