什么是 MCP

什么是 MCP?

MCP 是 Anthropic 提出的开源标准,连接 AI 与外部系统,类似 "AI 领域的 USB-C"。

MCP 能做什么?

  • 连接 Notion、Google Calendar
  • 根据设计稿生成代码
  • 数据库查询
  • 3D 设计生成

MCP vs 传统

主流服务器


Claude Code 生成

什么是 MCP

🔗
MCP(Model Context Protocol)是 Anthropic 于 2024 年提出的开源标准协议,旨在连接 AI 助手与外部数据源和工具。它被称为 AI 领域的 USB-C,提供统一的工具和数据访问接口。
在大语言模型应用中,让 AI 访问外部工具和数据是一个核心需求。传统方式为每个工具单独开发集成,效率低且难以复用。MCP 提供了一个标准化的解决方案,使 AI 能够以一致的方式与各种外部系统交互。

1. 为什么需要 MCP?

在 MCP 出现之前,AI 工具集成面临诸多挑战:每个集成方案都是定制化的,缺乏统一标准;工具描述格式各异,AI 难以理解;用户难以控制 AI 能访问哪些数据,存在安全风险。
MCP 解决的问题: 1. 标准化:统一的工具描述和数据访问协议 2. 可组合性:一次集成,多个 AI 应用复用 3. 安全性:用户明确授权,控制访问范围 4. 互操作性:不同 MCP 服务器之间可协同工作

2. MCP 的核心架构

MCP 采用客户端-服务器架构,包含三个核心概念:Host(宿主应用)、Client(客户端)和 Server(服务器)。
🏗️
MCP 架构组件: Host(宿主):如 Claude Desktop、Cursor 等 AI 应用 Client:在 Host 内运行,与 Server 建立连接 Server:提供工具和数据资源的外部服务 通信流程: 用户 → Host → Client → Server → 返回结果 → Client → Host → 用户

3. MCP 工具描述格式

MCP 使用 JSON Schema 格式描述工具,使 AI 能够理解每个工具的用途、参数和返回值。
{
  "name": "search_database",
  "description": "在数据库中搜索指定条件的记录",
  "inputSchema": {
    "type": "object",
    "properties": {
      "query": {
        "type": "string",
        "description": "搜索查询关键词"
      },
      "limit": {
        "type": "integer",
        "description": "返回结果数量限制",
        "default": 10
      }
    },
    "required": ["query"]
  }
}
这种标准化的描述格式让 AI 能够自动理解工具功能,正确构造调用参数。

4. MCP 服务器类型

MCP 服务器主要分为两类:资源服务器和工具服务器。
🖥️
MCP 服务器类型: 资源服务器(Resources): - 提供数据访问,如文件、数据库记录、API 响应 - AI 可读取但不能修改 - 示例:文件系统服务器、Git 服务器 工具服务器(Tools): - 提供可执行的函数或 API 调用 - AI 可调用以执行操作 - 示例:搜索工具、计算工具、数据库查询工具

5. 主流 MCP 服务器

MCP 生态正在快速发展,已有多款实用的 MCP 服务器可供使用:
🏆
主流 MCP 服务器: 1. Filesystem:本地文件系统访问 2. Git:Git 仓库操作 3. PostgreSQL:数据库查询 4. Puppeteer:浏览器自动化 5. Slack:Slack 消息操作 6. Google Maps:地图和位置服务 7. Memory:知识图谱存储 8. Sentry:错误追踪集成

6. MCP vs 传统集成方式

与传统定制化集成相比,MCP 具有显著优势:
⚖️
MCP vs 传统方式对比: 传统方式: - 每个工具单独开发适配 - 工具描述格式各异 - 难以复用和维护 - 安全控制粒度粗 MCP: - 标准化,一次开发多处使用 - 统一的工具描述格式 - 服务器可被多个应用复用 - 用户精细控制访问权限

7. 开发 MCP 服务器

使用 Python SDK 开发 MCP 服务器的示例:
from mcp.server import Server
from mcp.types import Tool
import asyncio

app = Server("my-server")

@app.list_tools()
async def list_tools():
    return [
        Tool(
            name="calculate",
            description="执行数学计算",
            inputSchema={
                "type": "object",
                "properties": {
                    "expression": {
                        "type": "string",
                        "description": "数学表达式,如 2 + 3 * 4"
                    }
                },
                "required": ["expression"]
            }
        )
    ]

@app.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "calculate":
        result = eval(arguments["expression"])
        return {"result": result}

async def main():
    from mcp.server.stdio import stdio_server
    async with stdio_server() as (read_stream, write_stream):
        await app.run(read_stream, write_stream, app.create_initialization_options())

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

8. MCP 的安全模型

MCP 强调用户控制和透明性。用户需要明确授权 AI 应用访问哪些 MCP 服务器,AI 的每次操作都在用户监督下进行。
🔒
MCP 安全特性: 1. 明确授权:用户选择启用哪些 MCP 服务器 2. 操作可见:AI 的工具调用对用户可见 3. 细粒度控制:可控制每个工具的访问权限 4. 本地优先:数据通常存储在本地而非云端

9. MCP 的局限性

尽管 MCP 是一个重要的标准,但仍存在一些局限性:
⚠️
当前局限性: 1. 生态早期:服务器数量和种类还在增长中 2. 兼容性问题:不同 MCP 服务器质量参差不齐 3. 学习成本:开发者需要理解 MCP 协议 4. 性能开销:额外的通信层带来一定延迟 5. 安全挑战:恶意服务器仍可能造成风险

10. MCP 的未来展望

MCP 有望成为 AI 工具集成的事实标准。随着生态发展,我们将看到更多服务器、更统一的规范和更好的互操作性。MCP 使得构建复杂的多工具 AI 应用变得更加简单和标准。

总结

MCP 是 Anthropic 提出的开源标准协议,为 AI 连接外部工具和数据提供了统一解决方案。它借鉴了 USB-C 的设计理念,具有标准化、可组合、安全可控等特性。虽然生态仍在早期,但 MCP 有望成为 AI 应用集成的事实标准。
⚠️
声明:本文由 AI 生成,可能存在错误或不准确之处。建议查阅 Anthropic 官方文档获取权威信息。
最后更新:2026-01-29