AI 系列之MCP Server:Model Context Protocol 服务器的系统介绍

张开发
2026/5/12 6:49:16 15 分钟阅读

分享文章

AI 系列之MCP Server:Model Context Protocol 服务器的系统介绍
作为一名开发人员您可能已经熟悉了 API 网关、微服务集成以及工具调用Tool Calling机制。在上一篇文章中我们讨论了 Tool Calling 如何让大语言模型LLM从单纯生成文本转向实际执行外部操作。今天我们聚焦一个更进一步的标准Model Context Protocol简称 MCP以及其中的核心组件——MCP Server。MCP 是 Anthropic 于 2024 年底开源的一项开放协议旨在为 AI 应用提供统一的、标准化的方式来访问外部数据源、工具和系统。它本质上是对 Tool Calling 机制的标准化与扩展类似于从自定义 REST API 转向 OpenAPI 规范的演进过程。从实际痛点引入为什么 Tool Calling 还需要一个新协议在之前的 Tool Calling 示例中我们看到模型可以通过 JSON 定义工具调用后端执行后将结果回传。这种方式在单一应用或单一模型如 OpenAI下运行良好但当您需要支持多个 AI 客户端Claude、ChatGPT、Cursor、VS Code Copilot 等复用同一套工具集成于不同产品确保安全、可观测、一致的认证与上下文管理时自定义的 Tool Calling 实现很快会面临碎片化问题每个 AI 提供商的工具格式略有差异维护成本激增。MCP 解决了这一问题。它定义了一个统一的客户端-服务器协议让 AI 应用MCP Client能够以标准方式连接到各种外部系统而无需为每个模型重写集成逻辑。MCP Server 正是这个协议的“服务端”实现负责暴露数据和能力。MCP Server 的核心思想标准化“AI 与外部世界的接口”什么是 MCP ServerMCP Server 是一个独立的轻量级服务程序通常用 Node.js、Python 或 Go 实现它通过 MCP 协议向 AI 客户端暴露两类主要能力Tools可执行的操作例如查询数据库、调用 API、执行计算、发送通知等。类似于 Tool Calling 中的函数定义。Resources可读取的上下文数据例如文件内容、Git 仓库、数据库记录、Slack 消息历史等。模型可以按需拉取实时上下文而非一次性全部注入。MCP 采用客户端-服务器架构MCP ClientAI 应用如 Claude Desktop、Cursor IDE、自定义 Agent负责发起请求。MCP Server您部署的服务处理认证、执行逻辑、返回结构化结果。整个交互流程类似于一个安全的 RPC 调用AI 模型决定“需要什么”MCP Server 负责“提供什么”并确保权限隔离和审计。为什么需要 MCP 而非继续使用普通 Tool Calling跨平台兼容同一套 MCP Server 可同时服务 Claude、ChatGPT、VS Code Copilot 等多个客户端。双向交互支持更丰富的上下文管理例如增量读取大文件、流式更新。安全性提升内置认证机制、资源级权限控制避免模型直接访问敏感凭证。生态复用社区已出现大量现成 MCP Server文件系统、GitHub、Slack、数据库、甚至 Minecraft 控制可直接集成。实际开发场景MCP Server 的典型落地方式本地文件系统访问开发者在 Cursor 或 Claude 中询问代码仓库问题MCP Server 暴露本地目录模型可读取任意文件。企业内部系统集成连接 CRM、ERP 或内部数据库。模型可查询订单、更新记录而无需将所有数据上传到云端模型。开发工具增强VS Code Copilot 通过 MCP Server 访问 Git 历史、运行测试、调用 CI/CD 管道。实时外部服务日历服务器Calendly、通信工具Slack、云服务AWS、Cloudflare。特殊场景社区甚至有 MCP Server 用于控制 Minecraft 角色让模型通过自然语言“玩游戏”或构建结构。代码示例一个简单的本地文件系统 MCP ServerPython以下是一个极简示例使用官方 MCP 参考实现基于 FastAPI 或类似框架。完整实现可参考 modelcontextprotocol/servers 仓库。# mcp_filesystem_server.pyfromfastapiimportFastAPI,HTTPException,DependsfrompydanticimportBaseModelimportosfromtypingimportList,Dict appFastAPI(titleSimple MCP Filesystem Server)# 模拟认证实际应使用 OAuth 或 tokendefverify_token(token:str):iftoken!secret-token:# 生产环境替换为真实验证raiseHTTPException(status_code401,detailInvalid token)returntokenclassReadFileRequest(BaseModel):path:strclassListDirRequest(BaseModel):path:str.app.post(/mcp/tools/read_file)defread_file(req:ReadFileRequest,token:strDepends(verify_token)):full_pathos.path.abspath(req.path)ifnotos.path.isfile(full_path):raiseHTTPException(404,File not found)withopen(full_path,r,encodingutf-8)asf:contentf.read()return{content:content[:100000]}# 限制大小避免过载app.post(/mcp/tools/list_directory)deflist_dir(req:ListDirRequest,token:strDepends(verify_token)):full_pathos.path.abspath(req.path)ifnotos.path.isdir(full_path):raiseHTTPException(404,Directory not found)entriesos.listdir(full_path)return{entries:entries}# MCP 发现端点客户端用此发现可用工具app.get(/mcp/discovery)defdiscovery():return{tools:[{name:read_file,description:读取指定文件内容,parameters:{path:{type:string}}},{name:list_directory,description:列出目录内容,parameters:{path:{type:string,default:.}}}],resources:[]# 可扩展为资源类型}# 启动uvicorn mcp_filesystem_server:app --reload运行后AI 客户端如 Claude Desktop可通过 localhost:8000 连接此服务器。模型即可调用这些工具读取本地文件。实际应用案例AI 增强的 IDECursor、VS Code 通过 MCP Server 访问项目文件、Git 仓库实现更智能的代码补全和重构。企业级 Agent连接内部 Jira、Confluence、数据库实现自动化报告、工单处理。个人生产力工具Claude Desktop 本地文件 MCP Server模型直接分析您的文档、代码库。跨工具自动化一个 MCP Server 同时服务多个 AI 产品形成“AI 操作系统”层。从工程角度总结 MCP Server 的价值与注意事项MCP Server 是 Agentic AI代理式 AI向生产级落地的关键基础设施。它将 Tool Calling 从“模型专属”提升为“生态标准”大幅降低集成成本并提升可复用性。核心价值一次构建多处复用。显著减少模型幻觉通过实时真实数据。便于企业级治理认证、审计、权限。开发注意事项安全第一严格控制访问范围使用最小权限原则避免暴露敏感操作。性能优化支持分页、流式传输防止大文件或查询导致超时。版本兼容关注 MCP 协议更新当前 v1使用官方 SDK 保持向前兼容。部署方式可本地运行、Docker 容器化或部署到 Cloudflare、Vercel 等边缘平台。

更多文章