MCP以及其Cursor实践
一、MCP:连接AI与外部世界的桥梁
1.1 MCP的核心概念
模型上下文协议(Model Context Protocol,MCP)是由Anthropic公司于2024年11月推出并开源的一种开放标准,旨在统一大型语言模型(LLM)与外部数据源和工具之间的通信协议。你可以将MCP想象成AI应用程序的“USB-C接口”[1]。就像USB-C为设备连接各种外设和配件提供了标准化的方式一样,MCP为AI模型连接各种数据源和工具提供了标准化的接口[2]。
MCP的核心价值在于解决LLM与外部世界交互的瓶颈。传统的LLM在生成响应时,往往局限于其训练数据,无法实时获取最新信息或与外部系统进行交互。MCP通过提供一种安全且标准化的“语言”,使得AI不再局限于静态知识,而能够检索当前信息、操作外部工具,从而生成更高质量、更具时效性和实用性的响应[3]。
1.2 MCP的工作原理
MCP的工作原理可以概括为以下几个关键点:
•标准化通信: MCP定义了一套统一的规则和消息格式,用于LLM(作为“Host”)与外部工具或服务(作为“Server”)之间构建安全且结构化的通信通道[4]。这种标准化确保了不同LLM和外部工具之间的互操作性。
•上下文提供: MCP允许应用程序向LLM提供丰富的上下文信息。这些上下文可以包括代码库、文档、数据库、API接口等,使得LLM在生成代码、回答问题或执行任务时,能够充分理解当前环境和需求[5]。
•工具调用: MCP使得LLM能够通过标准化的接口调用外部工具和API。这意味着LLM不再仅仅是“说话”的机器,而是能够执行实际操作的AI Agent。例如,LLM可以调用代码生成工具、数据库查询工具、网页操作工具等,从而完成更复杂的任务[6]。
•数据传输: MCP支持LLM与外部数据源之间的数据传输,使得LLM能够获取实时数据,并根据数据进行决策和响应。这对于需要最新信息的应用场景至关重要。
1.3 MCP的重要性
MCP的出现,标志着AI Agent技术发展的重要突破。它解决了AI无法访问外部数据的瓶颈,让AI能够通过标准化协议与本地或远程的各种工具和数据源进行交互。这使得AI能够从一个“说”的机器,转变为一个能够“做”的机器,极大地扩展了AI的应用边界和能力[7]。对于开发者而言,MCP为构建更智能、更实用的AI应用程序提供了强大的基础。
mcp.so
阿里云百炼
二、MCP在AI加持的IDE中的应用
AI加持的IDE通过集成大型语言模型,为开发者提供了前所未有的智能辅助功能。MCP的引入,进一步增强了这些IDE的能力,使其能够更深入地理解项目上下文、调用外部工具,并提供更精准、更高效的开发体验。在IDE中,MCP通常以以下几种方式体现其价值:
2.1 增强代码理解与生成
传统的代码补全和生成工具主要依赖于预设规则和有限的上下文。而集成MCP的IDE,能够通过MCP与代码库、文档、项目配置等外部数据源进行通信,从而获取更全面的项目上下文信息。这意味着AI助手可以:
•理解项目结构: 深入了解项目的模块划分、依赖关系、文件路径等,从而在代码生成时避免引入不必要的错误或冲突。
•感知业务逻辑: 通过读取相关的业务文档、API定义等,理解代码所承载的业务逻辑,生成更符合实际需求的业务代码。
•提供智能建议: 在编写代码时,AI助手可以根据当前的上下文和外部工具的反馈,提供更智能的重构建议、性能优化方案或潜在的bug预警。
2.2 自动化开发流程
MCP使得AI助手能够调用外部工具,从而实现开发流程的自动化。这不仅仅是简单的脚本执行,而是AI根据当前任务需求,智能地选择并调用合适的工具来完成任务。例如:
•自动化测试: AI助手可以根据代码变更,自动生成测试用例,并调用测试框架执行测试,甚至分析测试结果并提供修复建议。
•智能调试: 当代码出现问题时,AI助手可以调用调试工具,逐步分析代码执行过程,定位问题根源,并提供解决方案。
•环境配置与管理: AI助手可以根据项目需求,自动配置开发环境、安装依赖项,甚至管理容器化部署。
2.3 提升协作效率
在团队协作中,MCP也能发挥重要作用。AI助手可以作为团队成员的智能助理,协助完成各种协作任务:
•文档生成与更新: AI助手可以根据代码变更或项目进展,自动生成或更新技术文档、API文档等,确保文档与代码同步。
•代码审查辅助: AI助手可以对代码进行初步审查,发现潜在问题,并提供改进建议,减轻代码审查者的负担。
•知识共享与检索: AI助手可以帮助团队成员快速检索项目中的历史代码、解决方案或技术文档,加速知识共享。
2.4 示例:在Cursor中配置Context7 MCP
以Cursor为例,配置一个MySQL Server MCP可以极大地增强AI助手对数据库操作的理解和执行能力。以下是大致的配置步骤:
在mcp.so中,我们可以找到Context7
复制config
{
"mcpServers": {
"context7": {
"command": "npx",
"args": [
"-y",
"@upstash/context7-mcp"
]
}
}
}
在Cursor中打开配置页面
编辑配置json
保存后在配置页面可以看到,角标绿了,我们可以用右边的按钮控制起禁用
Context7简介
Context7 是 Upstash 推出的AI编程辅助工具,为大型语言模型(LLMs)和 AI 代码编辑器提供最新、版本特定的文档和代码示例。通过解析文档、丰富内容、向量化和重新排名等步骤,确保开发者能获取到准确且最新的代码示例和文档。Context7 支持多种工具,如 Cursor、Windsurf、Claude Desktop 等,通过模型上下文协议(MCP)实现集成。
Context7的主要功能
实时文档获取:从官方源(如 GitHub、官方文档网站)拉取最新文档和代码示例,确保开发者获取到的信息是最新的。
版本特定:能根据目标库的版本匹配相应的文档和代码示例,避免因版本不一致导致的问题。
无缝集成:只需在提示中添加 use context7,可触发文档注入,与多种 MCP 兼容客户端(如 Cursor、Windsurf、Claude Desktop 等)集成。
减少幻觉代码:降低 AI 生成不存在 API 或过时代码的可能性,提高代码生成的准确性。
多平台支持:兼容多种开发工具,如 Cursor、Windsurf、VS Code 等。
精准的上下文提取:从最新文档中提取干净、相关的代码片段,仅包含代码和描述,没有多余内容。
广泛的库支持:目前已支持超过 6000 个流行库,主流框架基本都能找到。
Context7的使用
Context7使用上比较简单,只需要在执行ai命令提示词后加上
use context7
模型将会按照指令执行resolve-library-id和get-library-docs,获取框架所应用版本的文档。
后续的开发也可以使用该命令,而不用担心代码版本不兼容和幻觉问题。