编程笔记

lifelong learning & practice makes perfect

模型上下文协议(MCP)入门(1):架构

模型上下文协议简介

MCP(model context protocol)是一个开放协议,它标准化了应用程序如何为大型语言模型 (LLM) 提供上下文。
可以将MCP比作AI应用程序的USB-C端口。正如USB-C提供了一种标准化的方式来将您的设备连接到各种外围设备和配件一样,MCP提供了一种标准化的方式来将AI模型连接到不同的数据源和工具。

为什么选择MCP?

MCP帮助您在LLM之上构建代理和复杂的流程。LLM经常需要与数据和工具集成,而MCP提供:

  • 不断增长的预构建集成工具,您的LLM可以直接接入
  • 在LLM提供商和供应商之间切换的灵活性
  • 在基础设施中保护您的数据的最佳实践

架构

MCP架构

MCP的核心遵循客户端-服务端架构,其中主机应用程序可以连接到多个服务端:

  • MCP主机: 像Claude Desktop、IDE或希望通过MCP访问数据的AI工具之类的程序
  • MCP客户端: 与服务器保持1:1连接的协议客户端
  • MCP服务端: 每个服务端都通过标准化的模型上下文协议公开特定功能的轻量级程序
  • 本地数据源: 您的计算机的文件、数据库和MCP服务器可以安全访问的服务
  • 远程服务: 通过互联网(例如,通过API)提供的外部系统,MCP服务器可以连接到这些系统

需要注意的是,这里提到的服务端和传统后端服务端有些许差异,大部分实际需要运行在MCP主机或主机能访问的网络内,参考文档的章节:Using an MCP Client,单独运行MCP服务端并不是很有用,应该将其配置到MCP客户端中。

这是Claude Desktop(MCP的客户端之一)配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"]
},
"git": {
"command": "uvx",
"args": ["mcp-server-git", "--repository", "path/to/git/repo"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
}
}
}

文档

欢迎关注我的其它发布渠道