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

MCP | LLM | Python类型的Stdio/SSE/HTTP模式的简单示例

当前测试环境:MACOS+Python3(conda)+uv+CherryStudio+LLM(Deepseek-chat)

Python类Stdio/SSE/HTTP形式MCP实例

1. 安装Python

不赘述Python的安装,如有需要,可移步文章列表搜索,常用的有这三种安装方式

  1. Python官网下载Python安装文件进行安装
  2. 使用venv虚拟环境进行安装
  3. 下载Anaconda,使用conda进行安装

2.安装uv

首先说明一下,uv是个包管理工具,就和pip做的事情一样,但是速度快10倍以上且依赖问题处理的很好.
所以你得先安装好Python环境,不论是用venv还是conda,必须将Python环境装好后再来装uv。

curl -LsSf https://astral.sh/uv/install.sh | sh
# 或者
pip install uv
# 或者
conda install uv# 删除旧版本安装新版本
pip uninstall uv && pip install uv
conda remove uv && conda install uv# 检查UV是否安装成功
uv --version

在这里插入图片描述

3. 安装MCP能力

# 创建MCP包文件夹
mkdir mcp_compute_tools
cd mcp_compute_tools
# uv安装当前MCP的Python版本
uv python install 3.13
uv init . -p 3.13
# 添加mcp[cli]包安装
uv add "mcp[cli]"

4. 测试工具安装

最简单的下载使用 cherry studio
后续可以使用vscode、cursor、dify等等各类方式进行集成MCP功能

5. 配置大模型LLM

使用deepseek作为测试展示

  1. 点击右上角的设置
  2. 在deepseek的key管理界面申请新的key 点击获取
  3. 将获取的key秘钥复制粘贴到cherry studio的API秘钥输入框中
  4. 点击右侧检测,只要网络OK,正常都会成功
    在这里插入图片描述在这里插入图片描述

6. 配置Cherry Studio的MCP【stdio模式本地调用】

即LLM调用的是和LLM在同一台服务器上的

1. 编写MCP Python代码

# 实现一个加减乘除的MCP工具例子
from mcp.server.fastmcp import FastMCPmcp = FastMCP()@mcp.tool()
def multi_add(numbers: list[float]) -> float:"""多个float数据相加,返回结果"""return sum(numbers)# @mcp.tool()
# def add(a: float, b: float) -> float:
#     return a + b@mcp.tool()
def subtract(a: float, b: float) -> float:"""多个float数据相减,返回结果"""return a - b@mcp.tool()
def multiply(a: float, b: float) -> float:"""多个float数据相减,返回结果"""return a * b@mcp.tool()
def divide(a: float, b: float) -> float:"""多个float数据相除,返回结果"""if b != 0:return a / belse:return -1.0if __name__ == "__main__":# 注意用什么模式打开什么方法## STDIO模式mcp.run(transport="stdio")## SSE模式## mcp.run(transport="sse")## streamable-http模式##mcp.run(transport="streamable-http")

2. 配置CherryStudio的MCP服务

# 参数
--directory
/Users/XXX/Documents/tools/mcp_server/mcp_compute_tools (注意换成自己的绝对路径)
run
main.py

在这里插入图片描述
如果配置没有问题,勾选右上角的启用按钮,会看见我们写的Python MCP的工具方法就展现出来了
在这里插入图片描述

3.测试MCP工具是否正常调用

测试数据

名称	金额
物品01	1808959852.86 
物品02	1288908696.69 
物品03	1534470414.07 
物品04	93302173.07 
物品05	6466439.24 
物品06	7491706.72 
物品07	425385493.21 
物品08	1643581076.38 
物品09	1149940723.23 
物品10	1220336240.95 
物品11	79472959.81 
物品12	4516915.52 
物品13	6249018.51 
物品14	375123086.81 
物品15	143317623.37 统计总金额。

在这里插入图片描述
可以看到,LLM通过分析我们的需求有金额加和的时候,调用了计算器MCP中的multi_add工具完成了金额相加计算,符合预期。
在这里插入图片描述

7. 配置Cherry Studio的MCP【SSE服务形式调用】

SSE模式下,需要运行Python环境,启动一个web服务能力,LLM就可以通过远程服务发现的方式进行能力使用。

1. 代码改造

# 1. 注意我们添加了FastMCP的Port和Host
# 2. 注意我们有多添加了工具方法:square和cubefrom mcp.server.fastmcp import FastMCPmcp = FastMCP(port=8000,host='127.0.0.1')@mcp.tool()
def multi_add(numbers: list[float]) -> float:"""多个float数据相加,返回结果"""return sum(numbers)# @mcp.tool()
# def add(a: float, b: float) -> float:
#     return a + b@mcp.tool()
def subtract(a: float, b: float) -> float:"""多个float数据相减,返回结果"""return a - b@mcp.tool()
def multiply(a: float, b: float) -> float:"""多个float数据相减,返回结果"""return a * b@mcp.tool()
def divide(a: float, b: float) -> float:"""多个float数据相除,返回结果"""if b != 0:return a / belse:return -1.0@mcp.tool()
def square(a: float) -> float:return a * a@mcp.tool()
def cube(a: float) -> float:""""""return a * a * aif __name__ == "__main__":# 注意用什么模式打开什么方法# STDIO模式# mcp.run(transport="stdio")# SSE模式mcp.run(transport="sse")# streamable-http模式#mcp.run(transport="streamable-http")

2. 服务启动

# 切换Python执行环境,我这里是conda,大家按照自己使用的情况进行切换# 如果没有环境记得初始化一个,然后注意回到顶部第一步安装uv和uv安装mcp[cli]
# conda create -n py312 python=3.12conda activate py312
python main.py

在这里插入图片描述

3. 配置CherryStudio的MCP服务

  1. 注意选择SSE模式
  2. 粘贴启动URL后面加 /sse
    在这里插入图片描述
  3. 激活检查MCP服务是否正常(比stdio模式多了我们新加的square、cube服务,说明SSE模式获取正常)
    在这里插入图片描述

4. Cherry Studio配置测试

注意对话框的 锤子 按钮点开后,清空一下,再选择新建的MCP服务,测试LLM调用了MCP工具进行了处理,符合预期。
在这里插入图片描述

8. 配置Cherry Studio的MCP【HTTP Stream模式调用】

类比参考7.

到这里,你已经成功掌握了Python MCP的Stdio/SSE/HTTP的应用,实际项目中,只需要斟酌MCP的Python方法需要实现什么样的功能,对应的函数名和方法注释写的尽量贴切详细;
注意:函数名、函数说明、入参变量名和类型、return类型一定要定义好,因为LLM是通过语义解析后发现工具并调用相关能力,我们得让LLM发现、理解、调用合适的工具。

That’s all.

http://www.dtcms.com/a/542174.html

相关文章:

  • 网站备案账号密码哪儿有那种网站
  • 育贤网站建设wordpress默认小工具
  • 代做淘宝联盟网站网站通知发送邮件
  • 增强版计算机管理脚本
  • 动易网站后台管理系统wordpress homepage plugin
  • 招聘网站对比这么做网站开发实训的心得
  • 河南平台网站建设制作云南网络营销公司
  • 三维重建【0-C】3D Gaussian Splatting:相机标定原理与步骤
  • 好的建站平台简述网站建设的主要内容
  • 公司网站无法收录百度推广是干什么的
  • 可上传多个视频的网站建设沈阳制作网站建站
  • 百度提交网站多久收录怎么搭建个人博客
  • PE之文件结构
  • wordpress创建多站点小型教育网站的开发与建设
  • 如何构建构高性能、高可用、可扩展的集群?
  • 潍坊在线制作网站产品推广外包
  • 海淀教育互动平台seo高效优化
  • Java8:Lambda表达式
  • 医院网站建设 价格石家庄网站优化招聘
  • 【AIGC】2025:MV-Crafter: An Intelligent System for Music-guided Video Generation
  • 电脑版网站建设合同营销网站开发
  • 下载office home and student 2019版本
  • 东莞南城网站建设公司怎么样免费流程图制作网站
  • 锦州做网站公司判断网站模板版本
  • 【测试理论和实践 3.BUG篇】
  • 媒体网站建设包头移动官网网站建设
  • 金华网站建设报价系统优化助手
  • Ninja Ripper游戏模型贴图提取
  • 51c大模型~合集43
  • 做网站开发要学什么网站营销的定义