MCP原理与开发及与大模型交互流程
模型上下文协议(MCP,Model Context Protocol)顾名思义它是一个协议,做开发的朋友看到Protocol是不是DNA动了。TCP/IP协议、HTTP协议、UDP协议、RESP协议各种各样的协议,本质上就是定义了应用之间的交互格式和行为。MCP协议也一样,定义了就是定义了MCP Server与MCP Host(MCP Client)之间的交互标准。
简介
模型上下文协议(MCP,Model Context Protocol)顾名思义它是一个协议,做开发的朋友看到Protocol是不是DNA动了。
TCP/IP协议、HTTP协议、UDP协议、RESP协议各种各样的协议,本质上就是定义了应用之间的交互格式和行为。
MCP协议也一样,定义了就是定义了MCP Server与MCP Host(MCP Client)之间的交互标准。
具体的标准可以看:MCP Specification
MCP Server通常是我们提供给AI的服务、工具,MCP Host通常是AI Agent,例如Cline、Cherry Studio之类。
一个简单的MCP服务
为了简化流程,我们这里就直接使用MCP为我们提供的SDK和例子,来简单的说明一下。
这里我们使用Python语言来实现,可以直接看modelcontextprotocol提供的:python-sdk
首先使用uv命令来初始化项目,并且把MCP的Python-sdk依赖包添加进来:
uv init
uv add "mcp[cli]"
不清楚uv是啥的可以参考:Python虚拟环境与包管理工具(uv、Conda)
添加我们的MCP服务:
from mcp.server.fastmcp import FastMCP
# Create an MCP server
mcp = FastMCP("Demo")
# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
"""Get a personalized greeting"""
return f"Hello, {name}!"
# Add a prompt
@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:
"""Generate a greeting prompt"""
styles = {
"friendly": "Please write a warm, friendly greeting",
"formal": "Please write a formal, professional greeting",
"casual": "Please write a casual, relaxed greeting",
}
return f"{styles.get(style, styles['friendly'])} for someone named {name}."
if __name__ == "__main__":
mcp.run(transport="stdio")
通过MCP Client使用MCP服务
我们已经有一个MCP服务了,那如何使用这个服务呢?
这里我们使用国产的AI客户端Cherry Studio来测试,因为国产的对国内的很多大模型平台支持要好很多,避免很多网络问题。
可以去下面的链接查看、下载:
下载,直接安装就可以了。
安装好,我们打开Cherry Studio,首先要设置一下大模型平台,这里我们选择硅基流动。
平台的模型广场上有很多大模型可供选择,很多是免费的,因为我们要使用Cherry Studio通过API调用,所以要先申请密钥。
当然,你也可以选择你自己熟悉的大模型平台,Key的申请基本上在个人中心找到。
然后我们就可以选择模型,来测试一下:
上面这是我们使用DeepSeek-V3没有使用MCP时的调用过程。
然后我们配置好我们的自己开发的MCP。
这里我们配置我们自己的MCP:
参数:
--directory
D:\project\python\learn-mcp
run
main.py
实际上Cherry Studio在需要MCP服务的时候,就会去执行下面的命令,来启动我们的MCP服务:
# 就是运行指定的Python文件,启动MCP服务
uv --directory D:\project\python\learn-mcp run main.py
像Cline这样的工具使用的Json工具,其实Cherry Studio也一样,只不过Cherry Studio为我们提供了用户界面配置的方式而已,实际上最终使用的还是像下面的Json。
{
"mcpServers": {
"YQbsNQ1zCOdbEV94oCJGr": {
"name": "my-first-mcp-server",
"type": "stdio",
"description": "",
"isActive": true,
"registryUrl": "https://pypi.tuna.tsinghua.edu.cn/simple",
"command": "uv",
"args": [
"--directory",
"D:\\project\\python\\learn-mcp",
"run",
"main.py"
]
}
}
}
然后,我们在设置一下MCP服务器,然后再让大模型【请帮忙计算:147258369 + 147258369】
我们可以看到最终大模型识别出了加法计算,并通过Cherry Studio这个Agent调用了我们的MCP服务得到了结果。
MCP、AI客户端、大模型之间的交互流程
整个的交互流程大概就是下面这个样子:
注意:MCP不是直接与大模型进行的交互,而是与Agent的进行交互。
Agent(MCP Client)与MCP Server交互是有MCP规定的标准化的,但是Agent与大模型之间的交互不是标准的,所以还是会出现牛头不对马嘴的情况。

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。
更多推荐
所有评论(0)