
MCP 协议初探Anthropic Model Context Protocol 标准架构在大模型应用与智能体Agent生态的早期演进中工具与数据源的接入方式处于极度碎片化的“万国牌时代”每个厂商、每个框架都有自己独特的 Tool Schema 格式OpenAI Function Calling、LangChain Tools、LlamaIndex Data Connectors 等。这种碎片化直接导致了巨大的工程浪费开发者为了让大模型连接本地文件、PostgreSQL 数据库、GitHub 仓库或 Slack不得不为每一个框架重复编写繁琐的适配层胶水代码一旦大模型从 Claude 切换到其他模型所有的工具插件可能都需要推倒重写。Anthropic 推出的MCPModel Context Protocol模型上下文协议旨在成为大模型时代的“Type-C 接口”或“USB 标准”。它通过一套开放、标准化的客户端-服务端协议彻底统一了大模型与数据源、外部工具之间的交互契约。一、MCP 核心架构的三大角色划分MCP 的设计借鉴了经典的 LSPLanguage Server Protocol语言服务器协议将系统清晰地划分为三个角色┌────────────────────────────────────────────────────────┐ │ 1. MCP Host (宿主环境 / 智能体客户端) │ │ 例如Claude Desktop、IDE 插件、自研 Agent 调度引擎 │ └──────────────────────────┬─────────────────────────────┘ │ (标准 JSON-RPC 2.0 协议通信) ▼ ┌────────────────────────────────────────────────────────┐ │ 2. MCP Client (协议客户端适配层) │ │ 负责连接管理、协议编解码、能力协商与权限校验 │ └──────────────────────────┬─────────────────────────────┘ │ (传输介质: stdio 管道 / SSE HTTP) ▼ ┌────────────────────────────────────────────────────────┐ │ 3. MCP Server (上下文/工具服务器) │ │ 垂直提供私有数据源与执行工具 (如 Git Server, DB Server) │ └────────────────────────────────────────────────────────┘二、MCP 协议暴露的核心三大基础能力MCP Server 向大模型主要暴露三种标准能力原语Primitives┌────────────────────────────────────────────────────────┐ │ 1. Prompts (提示词模板与用户动作) │ │ 作用服务端预先定义的结构化业务工作流与交互引导模板 │ ├────────────────────────────────────────────────────────┤ │ 2. Resources (只读上下文资源) │ │ 作用文件内容、数据库表 Schema、日志等只读数据流 │ ├────────────────────────────────────────────────────────┤ │ 3. Tools (可执行的确定性工具) │ │ 作用带有副作用的操作写数据库、发邮件、执行计算代码│ └────────────────────────────────────────────────────────┘三、基于 Python 编写一个标准的 MCP Server使用官方 Python SDK 构建一个标准的数据分析与 SQL 执行 MCP Server 极为轻量直观from mcp.server.fastmcp import FastMCP from pydantic import BaseModel, Field # 初始化 MCP Server 实例 mcp FastMCP(Enterprise Database Server) # 1. 暴露标准 Resources 资源 (只读) mcp.resource(db://schema/orders) def get_orders_schema() - str: 返回订单表的标准 DDL 与业务注释 return CREATE TABLE orders ( order_id VARCHAR(32) PRIMARY KEY, user_id VARCHAR(32), total_amount DECIMAL(10, 2), status VARCHAR(16), created_at TIMESTAMP ); # 2. 暴露标准 Tool 工具 (可执行) mcp.tool() def execute_readonly_sql(sql_query: str Field(..., description待执行的 SELECT 查询语句)) - str: 在沙箱环境中安全执行只读 SQL 查询 clean_sql sql_query.strip().upper() if not clean_sql.startswith(SELECT): return 【安全拦截】本工具仅允许执行 SELECT 只读查询 # 模拟真实数据库查询 return fQuery executed successfully for: {sql_query} | Rows returned: 3 if __name__ __main__: # 以标准 I/O (stdio) 方式运行等待 MCP Host 连接 mcp.run(transportstdio)四、为什么 MCP 是智能体生态的未来彻底解耦模型提供商与数据工具生态企业只需开发并维护一套标准的company-db-mcp-server无论是 Claude、GPT 还是开源的私有化模型都可以通过 MCP 客户端即插即用彻底杜绝厂商锁定。本地隐私安全与沙箱隔离MCP Server 可以完全运行在企业内网或本地开发者电脑中通过 stdio 进程管道通信。大模型只需要发送指令真实的敏感数据查询与代码执行完全留在本地极大降低了商业机密泄露的合规风险。生态复用与组件化分发开源社区已经涌现出海量的标准 MCP Server如 GitHub、Postgres、Slack、Brave Search、Filesystem。企业搭建专属 Agent 系统时90% 的通用能力都可以直接复用成熟的开源 MCP Server大幅降低交付周期。标准化是大模型走向工业级规模化应用的必经之路。全面理解并拥抱 MCP 协议是每一个 Agent 架构师构建高扩展、高安全基础设施的必备武器。