当前位置: 首页 > news >正文

MCP原理与开发及与大模型交互流程

文章目录

  • 简介
  • 一个简单的MCP服务
  • 通过MCP Client使用MCP服务
  • MCP、AI客户端、大模型之间的交互流程

简介

模型上下文协议(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服务

为了简化流程,我们这里就直接使用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服务目录结构

通过MCP Client使用MCP服务

我们已经有一个MCP服务了,那如何使用这个服务呢?

这里我们使用国产的AI客户端Cherry Studio来测试,因为国产的对国内的很多大模型平台支持要好很多,避免很多网络问题。

可以去下面的链接查看、下载:

Cherry Studio

Cherry Studio 下载

Cherry
Studio

下载,直接安装就可以了。

安装好,我们打开Cherry Studio,首先要设置一下大模型平台,这里我们选择硅基流动。

设置平台模型

硅基流动

平台的模型广场上有很多大模型可供选择,很多是免费的,因为我们要使用Cherry Studio通过API调用,所以要先申请密钥。

创建密钥

当然,你也可以选择你自己熟悉的大模型平台,Key的申请基本上在个人中心找到。

然后我们就可以选择模型,来测试一下:

无MCP时的调用

上面这是我们使用DeepSeek-V3没有使用MCP时的调用过程。

然后我们配置好我们的自己开发的MCP。
配置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】

添加MCP服务之后的调用

我们可以看到最终大模型识别出了加法计算,并通过Cherry Studio这个Agent调用了我们的MCP服务得到了结果。

MCP、AI客户端、大模型之间的交互流程

整个的交互流程大概就是下面这个样子:

MCP、AI客户端、大模型之间的交互流程

注意:MCP不是直接与大模型进行的交互,而是与Agent的进行交互。

Agent(MCP Client)与MCP Server交互是有MCP规定的标准化的,但是Agent与大模型之间的交互不是标准的,所以还是会出现牛头不对马嘴的情况。

http://www.lryc.cn/news/623948.html

相关文章:

  • 最小路径和
  • 【JAVASE】-9- 接口语法基础
  • Android中切换语言的方法
  • DNS总结
  • 【Linux内核】Linux信号机制
  • linux 常用代码
  • nodejs 错误处理
  • Collections.synchronizedList是如何将List变为线程安全的
  • vs studio 2017项目不支持studio vs2022
  • 【k8s】Kubernetes核心概念与架构详解
  • 从0实现系统设计
  • Leetcode 15 java
  • GitHub Copilot:AI编程助手的架构演进与真实世界影响
  • 浜掕仈缃戝ぇ鍘侸ava姹傝亴鑰呴潰璇曠幇鍦猴細褰撲弗鑲冮潰璇曞畼閬囦笂鎼炵瑧绋嬪簭鍛樿阿椋炴満
  • Conda 环境 在AI 私有化部署 有怎么用?
  • 电力设备状态监测与健康管理:基于多源异构数据融合的技术实现
  • 五、redis入门 之 客户端连接redis
  • 计算机网络 HTTP1.1、HTTP2、HTTP3 的核心对比及性能分析
  • ReactNode 类型
  • Java项目中短信的发送
  • 密码学系列 - 零知识证明(ZKP) - 多种承诺方案
  • Java ConcurrentHashMap 深度解析
  • 【LeetCode 热题 100】(八)二叉树
  • EC11编码器
  • 集成电路学习:什么是SIFT尺度不变特征变换
  • 43 C++ STL模板库12-容器4-容器适配器-堆栈(stack)
  • 基于DSP+ARM+FPGA架构的储能协调控制器解决方案,支持全国产化
  • 电子电气架构 --- 自动驾驶汽车的下一步发展是什么?
  • 下降路径最小和
  • 【网络通信】TCP/IP 协议全方位解析​