Article / 2026/05/29

MCP_介绍

Model Context Protocol —— AI 与外部世界的标准化桥梁

MCP(Model Context Protocol)详细介绍

Model Context Protocol —— AI 与外部世界的标准化桥梁


一、什么是 MCP?

MCP(Model Context Protocol,模型上下文协议)是 Anthropic 于 2024 年 11 月发布的开放标准协议,旨在为 AI 模型与外部数据源、工具之间的交互提供统一的通信规范。

核心定位

传统 AI 应用集成外部服务时,每个服务都需要单独开发接口,维护成本高、扩展性差。MCP 的设计理念是:

就像 USB 统一了外设接口,MCP 统一了 AI 与外部工具的连接方式。

传统方式MCP 方式
每个服务单独写集成代码一套协议,所有服务通用
AI 只能访问训练数据AI 可实时访问外部数据
上下文窗口受限动态获取所需上下文
工具耦合度高松耦合、可插拔

二、MCP 的架构设计

MCP 采用经典的 Client-Server 架构,由三个核心角色组成:

┌─────────────────────────────────────────┐
│              MCP Host                   │
│  (Claude Desktop / IDE / AI 应用)        │
│                                         │
│   ┌──────────┐    ┌──────────┐          │
│   │MCP Client│    │MCP Client│  ...     │
│   └────┬─────┘    └────┬─────┘          │
└────────│───────────────│────────────────┘
         │  MCP Protocol │
    ┌────▼─────┐    ┌────▼─────┐
    │MCP Server│    │MCP Server│  ...
    │ (文件系统) │    │ (数据库)  │
    └──────────┘    └──────────┘

角色说明

MCP Host(宿主)

  • AI 应用程序本身,如 Claude Desktop、Cursor、自定义应用
  • 负责管理与多个 MCP Server 的连接
  • 处理 AI 模型的上下文和权限控制

MCP Client(客户端)

  • 内嵌在 Host 中的协议客户端
  • 与 MCP Server 保持一对一连接
  • 负责协议层的通信处理

MCP Server(服务端)

  • 独立的轻量级程序,暴露特定能力
  • 可以是本地进程,也可以是远程服务
  • 每个 Server 专注于一类功能(文件、数据库、API 等)

三、MCP 能做什么?

MCP Server 向 AI 提供三类核心能力:

3.1 Tools(工具/函数调用)

AI 可以调用工具来执行具体操作,类似函数调用。

典型场景:

  • 执行 Shell 命令
  • 操作文件系统(读写、搜索)
  • 调用外部 API(发邮件、创建任务)
  • 数据库 CRUD 操作
  • 控制浏览器(Web 自动化)

示例:

用户:"帮我查一下数据库中最近7天的订单数量"
AI   → 调用 MCP Tool: query_database(sql="SELECT COUNT(*) FROM orders WHERE ...")
MCP  → 执行 SQL,返回结果
AI   → "最近7天共有 1,234 笔订单"

3.2 Resources(资源)

AI 可以读取结构化数据资源,类似 REST API 的 GET 请求。

典型场景:

  • 读取本地文件内容
  • 获取数据库记录
  • 拉取配置信息
  • 访问文档/知识库

示例:

资源 URI: file:///project/src/main.cpp
资源 URI: database://orders/recent
资源 URI: github://repo/issues

3.3 Prompts(提示模板)

Server 可以预定义提示模板,让 AI 按标准化方式完成特定任务。

典型场景:

  • 代码审查提示模板
  • 写作风格模板
  • 特定领域分析框架

四、MCP 支持的传输方式

传输方式适用场景说明
stdio本地进程标准输入输出,最常用
HTTP + SSE远程服务Server-Sent Events,支持流式响应
WebSocket实时双向通信适合需要实时推送的场景

五、如何使用 MCP?

5.1 使用现成的 MCP Server

以 Claude Desktop 为例,配置文件路径:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

配置示例:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/stone/projects"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "your_token_here"
      }
    },
    "sqlite": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-sqlite", "--db-path", "/path/to/db.sqlite"]
    }
  }
}

5.2 常用官方 MCP Server

Server功能安装命令
@modelcontextprotocol/server-filesystem文件系统访问npx -y @modelcontextprotocol/server-filesystem
@modelcontextprotocol/server-githubGitHub 操作npx -y @modelcontextprotocol/server-github
@modelcontextprotocol/server-sqliteSQLite 数据库npx -y @modelcontextprotocol/server-sqlite
@modelcontextprotocol/server-brave-search网页搜索npx -y @modelcontextprotocol/server-brave-search
@modelcontextprotocol/server-puppeteer浏览器控制npx -y @modelcontextprotocol/server-puppeteer
@modelcontextprotocol/server-postgresPostgreSQLnpx -y @modelcontextprotocol/server-postgres

5.3 自己开发 MCP Server

MCP 官方提供 Python 和 TypeScript SDK。

  • 开发mcp的语言 Python, node
  • 对应的启动 Python -> uvx, node -> npx

Python 示例(最简单的 MCP Server)

# 安装:pip install mcp

from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import Tool, TextContent
import asyncio

server = Server("my-mcp-server")

@server.list_tools()
async def list_tools():
    return [
        Tool(
            name="get_weather",
            description="获取指定城市的天气信息",
            inputSchema={
                "type": "object",
                "properties": {
                    "city": {"type": "string", "description": "城市名称"}
                },
                "required": ["city"]
            }
        )
    ]

@server.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "get_weather":
        city = arguments["city"]
        # 这里调用真实的天气 API
        return [TextContent(type="text", text=f"{city} 今天晴,25°C")]

async def main():
    async with stdio_server() as streams:
        await server.run(streams[0], streams[1])

if __name__ == "__main__":
    asyncio.run(main())

TypeScript 示例

// 安装:npm install @modelcontextprotocol/sdk

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";

const server = new Server(
  { name: "my-mcp-server", version: "1.0.0" },
  { capabilities: { tools: {} } }
);

server.setRequestHandler(ListToolsRequestSchema, async () => ({
  tools: [{
    name: "calculate",
    description: "执行数学计算",
    inputSchema: {
      type: "object",
      properties: { expression: { type: "string" } },
      required: ["expression"]
    }
  }]
}));

server.setRequestHandler(CallToolRequestSchema, async (request) => {
  if (request.params.name === "calculate") {
    const result = eval(request.params.arguments?.expression as string);
    return { content: [{ type: "text", text: String(result) }] };
  }
  throw new Error("Unknown tool");
});

const transport = new StdioServerTransport();
await server.connect(transport);

六、实际应用场景

场景一:AI 辅助编程(结合文件系统 + GitHub)

"帮我审查 src/ 目录下所有 .cpp 文件,找出潜在的内存泄漏"

AI 操作流程:
1. filesystem.list_directory("src/")
2. filesystem.read_file("src/main.cpp") × N
3. 分析代码,生成报告
4. github.create_issue("潜在内存泄漏报告", ...)

场景二:数据分析助手(结合数据库)

"分析上个月的销售数据,找出TOP10产品"

AI 操作流程:
1. sqlite.query("SELECT product, SUM(amount) FROM sales ...")
2. 对数据进行分析
3. 生成可视化建议报告

场景三:自动化运维(结合 Shell)

"检查服务器状态,如果 CPU 超过 80% 就重启相关服务"

AI 操作流程:
1. shell.execute("top -bn1 | grep 'Cpu'")
2. 解析 CPU 使用率
3. 条件满足时:shell.execute("systemctl restart myservice")

七、MCP 的安全机制

  • 用户授权:每次连接新 Server 需要用户明确许可
  • 权限隔离:每个 Server 只能访问其声明的资源范围
  • 本地优先:敏感操作默认在本地执行,数据不经过云端
  • 沙箱运行:Server 作为独立进程运行,相互隔离

八、MCP 生态现状(2026年)

MCP 发布后快速获得行业认可,发展大事记:

时间事件
2024.11Anthropic 开源发布 MCP 协议
2025.06Claude Desktop 推出 Desktop Extensions(.mcpb 一键安装)
2025.09官方 MCP Registry 上线预览版
2025.12Anthropic 将 MCP 捐赠给 Linux 基金会下的 Agentic AI Foundation(AAIF),OpenAI、Block 共同创立
2026.01Claude.ai 上线 50+ 预置 Connectors,支持 Slack、Figma 等
2026.02Claude API MCP Connector 进入公测
2026.03TypeScript SDK 达到 v1.28.0,36,000+ 依赖包

平台支持:

  • IDE 工具:Cursor、VS Code、JetBrains、Claude Code

  • AI 平台:Claude Desktop/Web、Amazon Bedrock、各类 AI Agent 框架

  • Server 数量:社区已有 20,000+ MCP Server,覆盖开发、数据、办公、AI 等各类场景

  • SDK 语言:官方 Python / TypeScript;社区支持 Go、Rust、Java、C# 等


九、MCP 市场与目录导航

9.1 官方渠道

名称地址说明
Anthropic Connectors Directoryhttps://claude.ai/settings/connectorsClaude 官方审核目录,Claude Desktop / Web 一键安装
官方 MCP Servers 仓库https://github.com/modelcontextprotocol/serversAnthropic 维护的官方 Server 集合,含文件系统、GitHub、SQLite 等
官方协议文档https://modelcontextprotocol.ioMCP 规范、SDK 文档、快速上手指南
Claude Code MCP 文档https://code.claude.com/docs/en/mcpClaude Code 中使用 MCP 的专项文档

9.2 第三方社区市场

名称地址规模特点
MCP.sohttps://mcp.so21,000+ Servers最大社区目录,支持分类浏览和 Playground
Glama Registryhttps://glama.ai/mcp/servers23,000+ Servers开源 Server 为主,含质量评级和维护状态
PulseMCPhttps://www.pulsemcp.com/servers15,000+ Servers每日更新,含访问量统计,便于发现热门 Server
Awesome MCP Servershttps://github.com/punkpeye/awesome-mcp-serversGitHub 精选人工筛选高质量 Server,分类清晰
Claude Marketplaceshttps://claudemarketplaces.com持续更新专注 Claude Code 插件、MCP、Skills 的目录

9.3 按分类查找 Server

分类推荐 Server安装方式
文件系统@modelcontextprotocol/server-filesystemnpx -y
代码托管@modelcontextprotocol/server-github / server-gitlabnpx -y
数据库server-sqlite / server-postgresnpx -y
浏览器控制@modelcontextprotocol/server-puppeteernpx -y
网页搜索server-brave-search / server-fetchnpx -y
办公协作Google Drive、Notion、SlackClaude Connectors 目录
云服务AWS Marketplace MCPhttps://docs.aws.amazon.com/marketplace/latest/APIReference/marketplace-mcp-server.html
Adobe AEMAdobe Experience Manager ConnectorClaude Connectors 目录

9.4 如何提交自己的 MCP Server

  1. 提交到官方目录:满足 Anthropic MCP Directory Policy 要求后提交审核

  2. 提交到 MCP.so:在 GitHub Issues 中提交 Server 信息

  3. 提交到 Glama:通过 glama.ai 提交页面注册

  4. 提交到 Awesome 列表:向 GitHub 仓库发 PR

⚠️ 安全提示:连接第三方 MCP Server 前,确认来源可信。访问外部内容的 Server 存在 Prompt Injection 风险,建议优先使用官方审核目录中的 Server。


十、参考资源

资源地址
官方协议文档https://modelcontextprotocol.io
Python SDKhttps://github.com/modelcontextprotocol/python-sdk
TypeScript SDKhttps://github.com/modelcontextprotocol/typescript-sdk
官方 Server 集合https://github.com/modelcontextprotocol/servers
Anthropic Connectors 目录https://claude.ai/settings/connectors
MCP.so 社区市场https://mcp.so
Glama 开源注册表https://glama.ai/mcp/servers
PulseMCP 每日更新目录https://www.pulsemcp.com/servers
Awesome MCP Servershttps://github.com/punkpeye/awesome-mcp-servers
Claude Marketplaceshttps://claudemarketplaces.com
MCP Directory 审核政策https://support.anthropic.com/en/articles/11697096-anthropic-mcp-directory-policy

文档最后更新:2026年5月

Giscus 未启用:请在 src/site.config.ts 中配置 repoId 与 categoryId。