模型上下文协议简介
模型上下文协议 (MCP)
什么是模型上下文协议(MCP)?
MCP(Model Context Protocol)是由 Anthropic 推出的开放协议,旨在统一大型语言模型(LLM)与外部数据源、工具的通信标准。
它类似于“AI 的 USB-C 接口”,通过标准化协议解决LLM因数据孤岛限制无法充分发挥潜力的问题。
MCP允许AI应用安全访问本地和远程资源(如数据库、API、文件系统等),并为开发者提供工具、资源和提示模板的集成能力。
核心概念与架构
MCP采用客户端-服务器架构,核心组件包括:
-
MCP主机(Host):运行 LLM 的应用程序(如Claude Desktop、Cursor)。
-
MCP客户端(Client):与服务器建立1:1连接的协议实现,负责将用户查询转发给 LLM 并执行工具调用。
-
MCP服务器(Server):提供三类功能:
-
资源(Resources):如文件、API 响应等可读取的数据。
-
工具(Tools):可被LLM调用的函数(如数据库查询、Git 操作)。
-
提示(Prompts):预定义的交互模板,用于任务引导。
-
-
本地与远程资源:涵盖本地文件、数据库,以及通过 API 连接的远程服务(如GitHub、Slack)。
MCP的工作原理
- 工具发现:客户端从服务器获取可用工具列表。
- 请求处理:用户输入与工具描述一起发送给LLM,由其决定是否调用工具。
- 工具执行:若需调用工具,客户端通过服务器执行操作(如查询数据库)。
- 结果整合:工具返回的数据由LLM生成自然语言响应,最终展示给用户。
如何使用MCP
官方提供的服务器
Anthropic官方提供了多种预构建的 MCP 服务器,包括:
- Filesystem - 具有可配置访问控制的安全文件操作
- Git - 用于读取、搜索和操作 Git 仓库的工具
- GitHub - 仓库管理、文件操作和 GitHub API 集成
- Brave Search - 使用 Brave 的搜索 API 进行网络和本地搜索
- Fetch - 网络内容获取和转换以提高LLM使用效率
- PostgreSQL - 具有模式检查的只读数据库访问
- Puppeteer - 浏览器自动化和网络抓取
- Memory - 基于知识图谱的持久记忆系统
更多信息请访问:GitHub 上的 MCP 服务器
使用示例
在 Cursor 中使用 PostgreSQL:
- 在项目下配置特定的 MCP 服务器,使用
.cursor/mcp.json
文件。文件格式如下{ "mcpServers": { "postgres": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-postgres", "postgresql://<user>:<[password]>@localhost:5432/<database>" ] } } }
- 现在,在 Cursor 中可以直接查询数据库。例如,假如有个
user
表,可以这样询问:帮我查询今天新增用户数
返回的结果:
通过这种方式,MCP 极大简化了与外部系统的交互,使得在 Cursor 中使用数据库查询变得更加便捷。
总结
MCP 通过标准化协议极大简化了 LLM 与外部系统的交互,是构建复杂 AI 代理的关键技术。开发者可通过预构建的服务器快速接入常用服务,或基于 SDK 扩展自定义功能。