1,377
社区成员
发帖
与我相关
我的任务
分享现在一个AI助手可能需要连接:
GitHub
Google Drive
数据库
Slack
Notion
本地文件
搜索引擎
企业API
如果每连接一个系统都写一套专用适配代码,系统会越来越复杂。
类似:
connect_github()
connect_mysql()
connect_notion()
connect_slack()
connect_drive()
...
于是出现一个很自然的问题:
能不能定义一种标准,让大模型以统一方式连接各种外部系统?
MCP就是在解决这类问题。
MCP全称:
Model Context Protocol。
它试图标准化:
AI应用如何连接外部数据、上下文和工具。
可以类比USB。
过去:
设备A → 接口A
设备B → 接口B
设备C → 接口C
USB出现后:
设备A ┐
设备B ├→ USB
设备C ┘
MCP希望在AI工具生态中实现类似效果。
可以简单理解成:
flowchart LR
A[LLM Application]
--> B[MCP Client]
B --> C[MCP Server A]
B --> D[MCP Server B]
B --> E[MCP Server C]
C --> F[Database]
D --> G[File System]
E --> H[Business API]
其中:
例如AI IDE或者聊天应用。
负责和具体MCP Server通信。
对外暴露数据和工具能力。
一个Server通常可以暴露不同能力。
例如数据库Server:
Tools:
query_database
get_schema
Resources:
database_metadata
table_description
文件系统Server:
Tools:
read_file
write_file
Resources:
project_files
于是模型不用关心:
MySQL到底怎样连接?
而只需要知道:
“我现在有一个query_database工具。”
Function Calling更像:
模型知道如何调用某个函数。
例如:
{
"name": "get_weather",
"arguments": {
"city": "Chongqing"
}
}
MCP更加关注:
外部工具和上下文怎样以标准方式被AI应用发现和使用。
两者不是完全对立关系。
可以理解为:
Function Calling
→模型怎样调用函数
MCP
→怎样组织、连接和暴露大量外部能力
因为企业知识通常散落在多个系统:
flowchart TD
A[LLM]
--> B[MCP Layer]
B --> C[研发文档]
B --> D[Git仓库]
B --> E[ERP]
B --> F[CRM]
B --> G[数据库]
B --> H[知识图谱]
MCP可以成为连接这些知识源的一种统一接口层。
这样构建Agent时,不必把每一个系统都直接写进核心代码。
用户:
“帮我检查项目最近提交的代码,并看看需求文档是否同步更新。”
Agent可以:
Step1
调用Git MCP
→获取最新Commit
Step2
调用文件系统MCP
→读取需求文档
Step3
比较代码变化和需求
Step4
输出检查结果
用户看到的是一句自然语言。
背后其实完成了跨系统知识协作。
工具越多,风险也越高。
例如:
read_file
和:
delete_database
显然不是一个风险等级。
因此企业场景必须考虑:
否则“AI可以调用工具”很容易变成:
“AI拥有了过大的系统权限。”
MCP值得关注的原因不是又出现了一个缩写。
它背后的趋势是:
大模型正在从独立聊天机器人,变成连接各种数据和软件系统的智能入口。
未来Agent系统可能形成:
LLM
↓
Agent
↓
MCP / Tool Layer
↓
Database / Files / API / Software
当这种接口标准逐渐成熟,大模型知识协同的开发成本也可能进一步降低。