手把手教你:如何将自定义MCP工具接入Cherry Studio

上篇文章<<MCP Server开发入门:从零开始构建运维工具集>>我介绍了如何入门开发一个MCP server,这篇文章主要讲解如何将已开发的MCP server发布到PyPI并集成到Cherry Studio中。
MCP环境准备
Cherry Studio
目前只使用内置的uv和bun,不会复用系统中已经安装的uv和bun。参考Cherry Studio官方文档https://docs.cherry-ai.com/advanced-basic/mcp/install
安装uv和bun。
uv和bun的可执行程序安装目录:
Windows: C:\Users\用户名\.cherrystudio\bin
macOS: ~/.cherrystudio/bin
也可以将系统中的uv命令使用软链接的方式链接到Cherry Studio的安装目录下。在Cherry Studio中使用MCP server使用的是uvx
命令。uvx是uv tool run
的一个别名,所以我们需要对uv和uvx两个命令做软链接:
# /Users/lsp/.local/bin 为我本地macOS系统安装的uv命令路径
$ ln -s /Users/lsp/.local/bin/uv ~/.cherrystudio/bin/uv
$ ln -s /Users/lsp/.local/bin/uvx ~/.cherrystudio/bin/uvx
我们的MCP server是Python开发的,而
bun
是JavaScript和TypeScript应用程序的一体化工具包,所以文章不对bun工具做讨论。
将MCP server包发布到PyPI
Python包的双重角色:
作为库:提供可导入的模块和函数作为工具:提供可执行的命令行程序
uv提供了专门的命令集来管理和运行Python工具。通过uv tool run
命令可直接运行Python包提供的命令,这种情况下,工具的依赖会被安装在一个临时的虚拟环境中,与当前项目完全隔离。uv提供了uvx
作为uv tool run
的别名,这两个命令完全等价。
uvx默认需要连接到PyPI
来下载包和运行工具,所以我们需要将代码打包并推送到PyPI网站。
在发布包之前,需要先在PyPI 官网注册账号。注册完成后,需要获取API Token用于后续的发布包:
- 登录PyPI账号
- 点击右上角的用户名,选择”Account settings”
- 点击”Add API token”
- 填写token名称(比如 “mcp-ops-toolkit”)
- 选择token的作用范围(建议选择 “Entire account”)
- 点击”Create token”生成token
- 生成的token格式以”pypi-“为前缀:pypi-AgEIcHlwaS5vcmcCJDxxxxxxxx…xxxxxxxx
调整我们的项目结构,使用src
布局,项目源码托管在https://github.com/luashiping/mcp-ops-toolkit/tree/featuter_package
mcp-ops-toolkit
├── README.md
├── pyproject.toml
└── src
└── mcp_ops_toolkit
├── __init__.py
└── main.py
└── pricing_calculator.py
在原先的pyproject.toml
中增加[build-system]
和[project.scripts]
配置表:
[build-system]
requires=["hatchling"]
build-backend="hatchling.build"
[project.scripts]
mcp-ops-toolkit="mcp_ops_toolkit:app"
[build-system]
- 配置作用:这段配置定义了如何构建你的Python包
- requires: 依赖的构建工具,如这里的
hatchling
- build-backend: 指定执行构建的后端工具模块路径
[project.scripts]
- 配置作用:这段配置定义了一个命令行工具的入口点;安装包后,可以直接在命令行使用
mcp-ops-toolkit
命令;命令会执行mcp_ops_toolkit
模块中的app
对象/函数。 - 格式说明:
命令名 = 模块路径:可调用对象
,左侧mcp-ops-toolkit
是安装后可用的命令名,右侧mcp_ops_toolkit:app
指定了命令执行的入口点。
__init__.py
代码:
from.import main
defapp():
"""Main entry point for the package."""
main.main()
当在终端运行mcp-ops-toolkit
命令时,它会执行mcp_ops_toolkit
模块中的 app() 函数。 app() 函数会启动MCP服务器,使得所有定义的工具(excel_to_csv和open_wireshark)都可用。
使用uv build
构建项目,构建的完的包放在当前目录的dist/
子目录中:
$ cd mcp-ops-toolkit
$ uv build
通过uv publish
命令将包发布到PyPI:
# 使用 --token 设置 PyPI 令牌
$ uv publish --token pypi-AgEIcHlwaS5vcmcCJDxxxxxxxx...xxxxxxxx

登录PyPI,访问https://pypi.org/manage/projects/查看我的项目,我们看到项目已经成功的发布到了PyPI:

配置和使用MCP
参考https://docs.cherry-ai.com/advanced-basic/mcp/config
。
配置我们自己开发的MCP server,看到弹出”服务器更新成功”,说明我们的MCP server配置成功且已经启动:

在聊天对话框点击MCP服务器这小图标,启用我们配置的mcp-ops-toolkit
:

测试工具功能,这里我测试使用calculate_concurrent_price
这个新增的工具,用于计算基于某个业务场景并发文档数量的价格:

excel_to_csv
和open_wireshark
工具的使用上篇文章已经介绍过,这里不再测试了。