十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MCP协议详解:从原理到Cursor、Claude Code等AI工具接入实践

MCP协议详解:从原理到Cursor、Claude Code等AI工具接入实践 这次我们直接聊一个可以改变 AI 工具使用方式的技术MCP。全称 Model Context Protocol模型上下文协议。2024 年 11 月由 Anthropic 开源目前已经成了 AI 应用与外部工具、数据源对接的事实标准。很多人第一次听到 MCP是从 Cursor、Claude Code 或 Trae 里配置插件开始的。比如“给 Cursor 配一个 MySQL MCP用自然语言查数据库”“给 Claude Code 装一个 Playwright MCP让模型自己操作浏览器”“给 Trae 接上蓝湖 MCP让 AI 直接读取设计稿”。这些操作背后用的都是同一套协议MCP。MCP 的核心价值可以概括为三点统一工具接入方式、简化上下文传递、让 AI 原生应用具备可扩展能力。它解决的不是某个模型的性能问题而是模型与外部世界连接方式碎片化的问题。过去每个 AI 应用接入一个工具都要单独写一套适配逻辑现在通过 MCP工具方只维护一份 MCP Server所有支持 MCP 的 AI 客户端都能直接调用。这篇文章会从协议结构讲起然后给出 MCP Server 的最小实现、在 Cursor / Claude Code / VS Code Cline / Trae / Codex 中的具体配置方法、MySQL 数据库 MCP 的接入示例、Playwright 浏览器自动化 MCP 的使用方式以及安全、性能、批量任务和常见问题排查。材料来自 MCP 官方文档、主流开发工具的官方说明以及社区公开配置经验所有代码都按当前主流版本写法给出。准备开始。1. MCP 核心能力速览能力项说明协议全称Model Context Protocol模型上下文协议开源方Anthropic2024 年 11 月开源核心作用统一 AI 客户端与外部工具、数据源之间的通信方式关键组件MCP Host客户端宿主、MCP Client、MCP Server传输方式stdio本地进程、Streamable HTTP远程服务服务能力Tools工具调用、Resources资源读取、Prompts提示词模板支持平台主流 AI IDE、Claude Desktop、自研应用均可接入是否支持 API支持MCP Server 本身可独立部署并提供接口是否支持批量任务支持协议层面支持工具并行调用具体取决于客户端实现适合场景AI 编程、数据库操作、浏览器自动化、设计稿转代码、安全测试、文档解析、内部工具集成关于“8.8.5”这个编号从材料看它更像一个课程章节号或文档版本号并不是 MCP 协议的正式版本命名。MCP 协议目前常见的版本标识是2025-03-26、2025-06-18这类日期格式。大家在配置 MCP Server 时如果看到协议版本字段优先以官方文档为准。2. MCP 是什么2.1 协议解决的问题传统 AI 应用接入外部工具常见做法是调用 API。比如让 AI 查天气开发者在代码里写一个get_weather()函数再通过 Function Calling 机制把函数描述和参数 schema 塞给模型。这能用但问题很明显每次接入一个新工具都要重新写一套函数定义和调用逻辑工具多了之后上下文窗口里塞满了函数描述而且不同 AI 平台之间的调用方式不互通。MCP 的做法是加一层抽象工具方实现一个 MCP Server按照协议标准暴露 Tools 和 ResourcesAI 客户端内置 MCP Client负责发现工具、解析参数、发起调用、接收结果。工具方不需要关心客户端是 Claude 还是 Cursor 还是自研应用客户端也不需要为每个工具单独写适配逻辑。这就是 MCP 常被比作“AI 应用的 USB-C 接口”的原因。2.2 协议核心结构一个完整的 MCP 架构包含三个角色MCP Host运行 AI 模型的应用比如 Claude Desktop、Cursor、VS Code Cline。MCP ClientHost 内部与 Server 建立 1:1 连接的组件。MCP Server独立进程或远程服务暴露具体的工具、资源和提示词。一个 Host 可以连接多个 Server一个 Server 也可以被多个 Host 连接。连接方式有两种stdio本地启动一个子进程通过标准输入输出通信。适合安装在本地的 MCP Server。Streamable HTTP通过 HTTP 端点通信适合部署在远端或作为 API 服务被多个客户端共享。2.3 MCP 与 Function Calling、API 的区别对比项传统 API 调用Function CallingMCP接入方式每个工具写一套代码模型平台私有机制统一协议一次接入多处复用工具发现人工定义并注册通过函数 schema 描述Server 自动暴露工具列表上下文传递开发者拼接平台自动注入协议层处理资源的读取与传递远程访问需要单独实现通常不支持支持 Streamable HTTP多客户端复用不能不能同一个 Server 可被多个客户端复用2.4 MCP 与 Computer Use 的区别MCP 和 Computer Use 经常被放在一起讨论但两者解决的问题不同。Computer Use 是让模型直接观察屏幕、移动鼠标、点击键盘以“像人一样操作电脑”的方式完成任务它解决的是“物理操作”问题。MCP 解决的是“结构化交互”问题AI 通过协议调用工具、读取资源、获取结构化数据不依赖图形界面。实际项目中两者可以互补。MCP 负责高效的数据交换Computer Use 负责处理没有 API 支持的遗留系统操作。如果你看到“computer use 和 mcp 的区别”这类问题核心答案就是MCP 是 API 级别的标准化通道Computer Use 是界面级别的模拟操作。3. 适用场景与使用边界3.1 适合的场景MCP 目前落地最密集的场景包括AI 编程辅助让 Cursor、Claude Code、Trae 通过 MCP 直接读写数据库、调用接口、执行测试。数据库操作通过 MySQL MCP、PostgreSQL MCP用自然语言生成 SQL 并执行查询。浏览器自动化通过 Playwright MCP让 AI 自动打开网页、爬取内容、填写表单。设计稿转代码通过 Figma MCP、蓝湖 MCP、MasterGo MCP让 AI 读取设计稿信息并生成前端代码。安全测试与逆向社区中出现了 wazuh MCP、burpsuite MCP、x64dbg MCP、Ghidra MCP用于把安全工具能力暴露给 AI。游戏开发与工控软件联动Unity MCP、UE MCP、CocosCreator MCP、MATLAB MCP 等开始出现在游戏和工作流自动化中。内部知识库与数据服务让 AI 接入公司内部的 API 和无代码平台形成统一工具入口。3.2 不适合的场景MCP 不适合解决模型本身的能力问题。模型推理质量弱、上下文理解差接再多 MCP 也补不了。也不适合做高频低延迟的接口调用MCP 的协议解析、工具发现、参数校验都有额外开销典型的工具调用延迟在几十到几百毫秒远高于直接 HTTP 调用。3.3 使用边界与合规要求使用 MCP 时要特别注意几点数据库类 MCP 默认拥有执行权限操作前必须确认环境是测试库还是生产库。浏览器自动化 MCP 可能访问带登录态的网站页面不能采集未授权数据不能绕过访问控制。设计稿转代码 MCP 读取的设计稿可能包含商业机密在团队内部使用时要做好权限隔离。涉及人脸、声音、肖像、版权素材的工具接入必须确认已获得合法授权。4. MCP 本地部署与最小 Server 搭建4.1 环境准备MCP Server 目前官方 SDK 提供 Python 和 TypeScript 两个版本社区还有 Go、Java、C# 等实现。本文用 Python 和 TypeScript 各写一个最小示例。前置条件Node.js 18 以上或 Python 3.10 以上。一个支持 MCP 的客户端比如 Claude Desktop、Cursor或者直接用官方 MCP Inspector 工具测试。如果是 HTTP 模式的 Server需要预留一个端口默认常见是 8000、8080 或 3001。4.2 用 Python 写一个最小 MCP Server以 FastMCP 为例这是官方 Python SDK 提供的高层封装写法非常简洁。# 创建虚拟环境并安装依赖 python -m venv .venv source .venv/bin/activate # Windows 下执行 .venv\Scripts\activate pip install mcp[cli]创建一个server.pyfrom mcp.server.fastmcp import FastMCP mcp FastMCP(demo) mcp.tool() def add(a: int, b: int) - int: 计算两个整数之和 return a b mcp.resource(config://app) def get_config() - str: 返回应用配置信息 return App name: MCP Demo, version: 1.0.0 if __name__ __main__: mcp.run()启动方式有两种# stdio 模式适合本地客户端连接 python server.py # HTTP 模式默认监听 0.0.0.0:8000 python server.py --transport http4.3 用 TypeScript 写一个最小 MCP Servermkdir mcp-server-demo cd mcp-server-demo npm init -y npm install modelcontextprotocol/sdk创建index.mjsimport { McpServer } from modelcontextprotocol/sdk/server/mcp.js; import { StdioServerTransport } from modelcontextprotocol/sdk/server/stdio.js; const server new McpServer({ name: demo, version: 1.0.0 }); server.tool(add, { a: { type: number }, b: { type: number } }, async ({ a, b }) ({ content: [{ type: text, text: String(a b) }] })); const transport new StdioServerTransport(); await server.connect(transport);启动命令node index.mjs4.4 用 MCP Inspector 验证 ServerSDK 自带的 MCP Inspector 可以在不打开 IDE 的情况下快速验证 Server 是否正常工作npx modelcontextprotocol/inspector node index.mjs或者对于 Python Servermcp dev server.py启动后访问 Inspector 提供的本地调试页面连接 Server在工具列表里应该能看到add工具输入参数后可以查看返回结果。这一步通过说明 MCP Server 本身没有问题可以进入下一步接入客户端。5. 在主流 AI IDE 中接入 MCP5.1 Claude Desktop 中接入Claude Desktop 是 MCP 的原生支持客户端。在配置文件里声明要启动的 MCP ServermacOS 路径~/Library/Application Support/Claude/claude_desktop_config.jsonWindows 路径%APPDATA%\Claude\claude_desktop_config.json{ mcpServers: { demo: { command: python, args: [/absolute/path/to/server.py] } } }重启 Claude Desktop在工具列表里就能看到add工具。5.2 Cursor 中接入Cursor 现在主推.mcp.json项目级配置方案。在项目根目录创建.mcp.json{ mcpServers: { demo: { command: python, args: [/absolute/path/to/server.py] } } }保存后Cursor 会检测到配置文件在 Settings MCP 里能看到 Server 状态。本地 Server 显示绿色圆点表示已连接。Cursor 推荐优先使用项目级配置这样多人在同一项目上协作时可以通过共享配置自动加载所需要的 MCP Server。如果你要用 Cursor 连接蓝湖 MCP 或 MasterGo MCP也是同样的思路。在 MCP 配置面板里添加{ mcpServers: { lanhu: { url: https://mcp.lanhuapp.com/sse } } }具体地址需要以蓝湖官方文档为准不同服务商给出的连接方式可能不同。接好之后AI 编程助手可以读取设计稿的标注、切图、样式信息直接生成结构相对准确的页面代码。5.3 VS Code Cline 中接入Cline 是 VS Code 里比较活跃的 AI 编程插件。打开 Cline 的设置面板找到 MCP Servers 区域点击添加{ mcpServers: { playwright: { command: npx, args: [playwright/mcplatest] } } }添加后点击连接Cline 会在~/Documents/Cline/MCP Settings下保存配置。连接成功后Cline 会自动发现工具列表编辑器里可以实时看到服务状态和每个工具加载情况。这个方案非常适合“AI 写代码再让 AI 打开浏览器验证页面”的完整闭环。5.4 Claude Code 中接入Claude Code 是 Anthropic 官方命令行编程工具。安装并授权后通过交互命令添加 MCPclaude mcp add demo -- python /absolute/path/to/server.py查看已连接的 MCP Serverclaude mcp list查看某个 Server 暴露的工具claude mcp get demoClaude Code 也支持配置文件声明。在.mcp.json或~/.claude.json中声明同一个格式的mcpServers配置重启后自动加载。Claude Code 接 MCP 读取数据库是社区里非常常见的用法。比如配置 MySQL MCP 后可以在命令行里直接输入自然语言指令由模型生成 SQL 并执行这个后面展开讲。5.5 Trae 中接入Trae 是国内开发者常用的 AI IDE也支持 MCP。与 Cursor 类似打开 MCP 管理面板添加 MCP Server。本地 stdio 类型的 Server 配置 command 和 args远程 Server 配置 URL。Trae 上比较常见的组合是 Trae Playwright MCP。配置好之后可以让 AI 自动启动浏览器、访问本地开发地址、执行点击和输入操作、返回页面控制台日志。用自然语言生成前端页面然后通过 MCP 打开浏览器实时预览验证整个流程可以串起来。5.6 Codex 中接入OpenAI Codex 的 MCP 接入方式也是通过配置文件。在~/.codex/config.toml中添加[mcp_servers.demo] command python args [/absolute/path/to/server.py]修改后需要重启 Codex。Codex 还支持远程 MCP Server在配置中指定 URL 即可。目前不少安全工具也通过 MCP 接入了 Codex比如 x64dbg MCP、Ghidra MCP、BurpSuite MCP。原理都一样先用对应的 MCP Server 封装工具能力然后授权 Codex 调用工具操作调试器、反编译器和抓包工具。6. 典型场景数据库 MCP 与浏览器自动化 MCP6.1 MySQL MCP让 AI 用自然语言查数据库以社区常用的 MySQL MCP 为例。这个 Server 通过官方 MySQL 连接库建立数据库连接暴露查询、写入等工具。配置方式在 Claude Desktop 的配置文件或 Cursor 的.mcp.json中增加一项{ mcpServers: { mysql: { command: npx, args: [-y, benborla29/mcp-server-mysql], env: { MYSQL_HOST: 127.0.0.1, MYSQL_PORT: 3306, MYSQL_USER: root, MYSQL_PASS: your_password, MYSQL_DB: your_database } } } }启动后客户端会加载一系列数据库操作工具包括查看表结构、执行 SQL、获取查询结果。使用示例用户输入“查询 user 表里最近 7 天注册的用户数量。”模型会先调用get_schema或类似工具了解表结构然后自动生成 SQL 并执行最后把结果整理成自然语言回复。注意事项优先使用只读账号连接不要用 root。生产数据库必须开启事务控制和操作确认机制。工具默认可能暴露写入能力要在 Server 层做权限过滤。每次查询前确认连接的是开发库还是生产库。6.2 Playwright MCP让 AI 操作浏览器Playwright MCP 是微软官方维护的浏览器自动化 MCP Server。它把浏览器自动化能力封装成 MCP 工具AI 可以发起网页导航、点击元素、填写表单、截取屏幕、读取控制台日志等操作。启动方式npx playwright/mcplatest常用参数# 无头模式适合服务器环境 npx playwright/mcplatest --headless # 指定浏览器 npx playwright/mcplatest --browser chromium # 指定远程调试端口 npx playwright/mcplatest --port 9222 # 允许访问指定域名 npx playwright/mcplatest --allowed-origins https://example.com在 Cursor 的.mcp.json中的配置{ mcpServers: { playwright: { command: npx, args: [-y, playwright/mcplatest] } } }使用场景示例用户输入“打开本地的 localhost:3000点击登录按钮输入测试账号截一张图。”AI 会调用browser_navigate、browser_click、browser_type、browser_screenshot等工具逐步完成操作。适合做前端自测、开发验证、简易爬虫场景。使用提示headless 模式适合自动化跑批有头模式适合观察 AI 操作过程。如果目标站点有登录态或访问控制必须先获得授权再操作。不要用该工具采集未授权的用户数据。6.3 Skills 与 MCP 工具的关系很多人在配置 IDE 时会把 Skills 和 MCP 混在一起。“skills 如何调用 mcp 工具”也是个高频问题。简单区分一下Skills 是给模型提供的指令包本质是结构化的能力描述文本教会模型“怎么做一件事”MCP 是给模型提供的工具通道本质是工具调用接口让模型“能执行一件事”。两者配合时Skill 里可以写明“在开始写代码前先检查 MCP 是否已连接优先使用 MCP 工具获取最新数据”。这样模型在执行任务时就会主动调用 MCP 暴露的工具而不是只依赖训练数据里的记忆。7. MCP 安全与性能观察7.1 安全边界MCP 的安全问题集中在三块权限、数据、认证。权限方面MCP Server 暴露的工具默认拥有与运行用户相同的权限。如果你用 root 用户跑了一个 MySQL MCP那 AI 就有 root 权限执行 SQL。建议所有数据库类 MCP 使用最小权限账号。文件操作类 Server 只开放指定目录。浏览器自动化工具只允许访问白名单域名。在 Server 层做操作确认机制重大操作前返回确认请求。数据方面MCP Server 可能读取到本地文件、数据库内容、剪贴板、浏览器信息。这些数据会随工具调用结果返回给 AI 客户端如果客户端是云端 API数据就会经过第三方服务。隐私敏感场景建议使用本地大模型或者对 MCP Server 做严格的数据脱敏。认证方面MCP 协议在 2025 年版本中引入了 OAuth 2.0 授权流程。远程 MCP Server 可以通过resource_server和authorization_server字段声明授权服务端点。实际部署时涉及远程调用的 Server 必须启用认证不能把工具端口裸奔在公网。7.2 资源占用观察MCP 不是大模型推理不占显存。需要关注的是端口、进程、内存和日志。每个本地 stdio MCP Server 都会启动一个子进程。进程数量越多内存开销越大。每个远程 MCP Server 都会监听一个端口。连接前用lsof -i :端口号或netstat -ano | findstr 端口号检查端口占用。MCP 请求响应都有结构化数据编码解码过程如果 Server 内部实现里做了大量同步阻塞调用会拖慢整体响应。使用 HTTP 模式部署时建议在 Server 前面加日志和监控记录每个工具调用的耗时、参数、返回状态。查看本地端口监听# macOS / Linux lsof -i :8000 # Windows netstat -ano | findstr :8000查看进程列表ps aux | grep mcp批量调用时建议在客户端侧加超时和重试逻辑。单个工具调用超过预期时不要无限等待。8. 常见问题与排查方法问题现象可能原因排查方式解决方案客户端显示 MCP Server 连接失败启动命令路径不对、Node/Python 版本不匹配在终端手动执行同样的启动命令修正命令和绝对路径确保依赖已安装工具列表为空Server 没有注册任何 tool/resource/prompt用 MCP Inspector 手动连接查看检查 Server 代码中的装饰器或注册逻辑配置后 IDE 没有反应配置文件未生效、需要重启检查配置文件路径是否正确保存后重启 IDE重新加载 MCP 配置端口被占用另一个进程占用了 HTTP 端口用 lsof/netstat 检查端口更换端口或停掉占用端口的进程调用工具时提示参数错误JSON Schema 参数类型不匹配查看客户端日志中的参数校验错误按工具描述修正参数注意类型和必填字段MySQL MCP 查询慢网络延迟、SQL 缺少索引在数据库端开启慢查询日志优化 SQL 和索引不要用 MCP 跑大查询Playwright MCP 无法启动浏览器浏览器未安装或驱动缺失单独执行npx playwright install chromium安装对应浏览器内核API 调用失败返回 401远程 Server 未认证或 Token 过期检查 Server 日志和 Token 配置刷新 Token确认鉴权信息写入请求头批量任务卡住单次工具调用超时、任务队列阻塞检查日志中最后一个完成的工具给客户端加超时和重试单批数量降低输出质量不稳定模型过度依赖 MCP 返回结果缺少任务上下文在提示词中明确说明工具结果如何使用优化提示词把 MCP 工具结果当作“信息源”而不是“最终答案”该 Server 工具被别人误调用远程 Server 无鉴权查看 Server 访问日志启用 OAuth 认证限制允许访问的客户端和 IP9. MCP 最佳实践与扩展方向9.1 工程化建议先跑通最小 Server再接入具体业务。第一次尝试 MCP 时不要直接上复杂的数据库或浏览器自动化先用一个返回固定字符串的 demo Server 跑通“配置 - 连接 - 调用工具 - 返回结果”的完整链路确认客户端和服务端通信正常再逐步增加真实工具。配置与代码要分离。数据库地址、密码、Token 这些敏感信息不要写死在 Server 代码里统一放到环境变量或配置文件。MCP 配置中的env字段就是干这个的。工具命名要符合团队习惯。add、get_order_by_id这类命名比tool_001可读性好得多。工具描述要写清楚“这个工具是干什么的、什么时候用、参数怎么传”因为模型会把这些描述作为生成调用参数的重要依据。9.2 批量任务设计MCP 协议层面支持工具并行调用但同一客户端内的行为取决于客户端实现。做批量任务时建议每个批次设置合理的并发上限默认先 1 并发跑通。每个工具调用都加超时建议 30 到 120 秒根据具体操作复杂度调整。批量任务需要记录日志至少包含工具名、入参、出参、耗时、结果状态。失败任务要支持重试重试时注意避免重复写操作。一个简单的批量调用脚本可以用 Python 写通过请求 MCP Server 的 HTTP 端点来批量调用工具import requests import time url http://127.0.0.1:8000/mcp # 实际请求格式以你使用的 MCP SDK 版本为准 payload { jsonrpc: 2.0, id: 1, method: tools/call, params: { name: add, arguments: {a: 1, b: 2} } } for i in range(10): try: resp requests.post(url, jsonpayload, timeout30) print(i, resp.status_code, resp.text) except Exception as e: print(i, failed, str(e)) time.sleep(0.5)9.3 扩展方向目前 MCP 生态正在快速成型值得关注的方向有MCP Registry官方和社区都在建设 MCP Server 的集中发现机制类似 npm registry未来查找和安装 MCP Server 会更方便。多智能体协作多个 AI Agent 可以通过 MCP 共享同一组工具避免每个 Agent 各自实现一遍工具调用逻辑。企业内部标准自研系统统一提供内部 API 的 MCP Server相当于给 AI 应用层做了一个标准数据出口。安全工具集成wazuh MCP、BurpSuite MCP 这类安全场景集成会越来越多但部署时要特别注意权限隔离和审计日志。10. 总结MCP 不是一个新的编程语言也不是某个框架而是一套让 AI 应用与外部世界标准化连接的协议。它最大的价值在于工具方写一次 Server就能被所有支持 MCP 的客户端复用AI 应用只需要实现一个 MCP Client就能接入整个生态里已有的工具。如果想要开始尝试最值得先跑通的是三步用 FastMCP 写一个本地 Server 并在 MCP Inspector 中验证在一个常用 AI IDE 里接入该 Server 并调用工具接一个真实场景的 MCP Server比如 Playwright 浏览器自动化让 AI 打开一个页面并截图。这三步走完MCP 的工作方式就基本清楚了。最容易踩的坑集中在配置路径、端口占用、参数类型不匹配、远程 Server 无鉴权这四类。配置前先确定用 stdio 还是 HTTP再决定是本地子进程还是远程服务。涉及数据库和浏览器工具时一定先确认权限边界。MCP 后续的发展重心大概率会从“连接工具”转向“连接上下文”把设计稿、数据库 schema、接口文档、日志流、监控指标全部封装成可读取的资源让 AI 在一个完整的上下文里执行任务。现在开始把 MCP 接入到日常开发流程里是比较值得投入的方向。建议先收藏这篇文章等到要配置 Cursor、Claude Code 或 Trae 的 MCP 环境时按章节对照操作即可。
返回列表