LLM、AGENT、MCP之间的关系
- LLM:大模型,如GPT、豆包、claude。擅长处理语言,但是缺少自主行动和现实世界交互的能力,相当于大脑。
- AGENT:是一个实体,将 LLM 的语言理解能力与现实世界的执行能力结合起来,完成更复杂的任务。如智能客服、智能助手等。
- MCP:一个协议,定义了LLM与外部工具或服务之间通信的规范。各种LLM与外部对接的时候都需要根据自身各自实现,为了标准化和复用性,LLM只需要实现MCP协议就可以调用MCP实现的各种功能。AGENT可以将MCP当做一个工具箱。
MCP简介
官网:https://modelcontextprotocol.io/introduction
MCP采用的client-server架构,mcp server是对应的工具实现,用于实际与外部世界交互。mcp client需要对应的大模型进行开发适配。mcp client和mcp server通过mcp protocol交互,类似http协议。
与web开发一样,重点是在实现各种mcp server。
MCP Server开发
官方示例:https://modelcontextprotocol.io/quickstart/server
官方有python、node、java、kotlin四种版本。
环境:python(大于3.10)、uv(环境管理)、cursor
创建项目
# Create a new directory for our project
uv init mcp1
cd mcp1
# Create virtual environment and activate it
uv venv
.venv\Scripts\activate
# Install dependencies
uv add mcp[cli]
# 对应项目,打开cursor
cursor .
示例开发
#mymcp.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("申尧强的MCP")# 这个Demo就是MCP Server的名字
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
# print('...', file=sys.stderr)
print("a+b")
return a+b
@mcp.tool()
def todo(year) -> str:
"""年度规划"""
if year==2023:
return '看一本书'
elif year==2024:
return '跑一次马拉松'
elif year==2025:
return '看一场演出'
else:
return '没有规划了'
if __name__ == "__main__":
print("Starting MCP server...")
mcp.run(transport='stdio')
mcp = FastMCP(“申尧强的MCP”) 创建一个mcp server
@mcp.tool()是对应注解,标识这个函数是mcp的一个工具。
这个脚本有两个tool,分别是add和todo。
mcp测试
使用mcp dev进行测试。
mcp dev mymcp.py
登录页面:http://localhost:5173
点击connect连接server
点击tool标签,点击List Tools可以看到所有tools(add、todo两个)
选择对应的tool可以进行测试。
集成到cursor
在cursor设置里面找到mcp,选择添加mcp server。
{
"mcpServers": {
"mymcp": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\Administrator\\Downloads\\mymcp",
"run",
"mymcp.py"
],
"autoStart": true
}
}
}
配置完成后保存文件
如果会弹出窗口,不要关闭它,它是运行的server服务。
可以看到mymcp成功运行。
在对话这里需要使用Agent才能调用mcp。可以看到回答是正确的。
其他的MCP
常用mcp地址: https://github.com/modelcontextprotocol/servers
点进去,基本都有详细的讲解。
mcp server使用不同语言实现的话启动命令是不一样的,举一个node实现的server集成的例子。
filesystem https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem
文档中列举了对应的tool。
两种集成方式,本地可以使用npx方式(有node环境)。
window电脑不能直接用npx,需要使用 cmp /c npx。 我选择需要管理的文件目录是 C:\Users\Administrator\Downloads\oracle-sqoop-mtk-save
启动都可以看到有很多的tool。
测试一下,需要重启cursor
测试成功。