手把手教你:如何将自定义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用于后续的发布包:

  1. 登录PyPI账号
  2. 点击右上角的用户名,选择”Account settings”
  3. 点击”Add API token”
  4. 填写token名称(比如 “mcp-ops-toolkit”)
  5. 选择token的作用范围(建议选择 “Entire account”)
  6. 点击”Create token”生成token
  7. 生成的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,访问pypi.org/manage/project查看我的项目,我们看到项目已经成功的发布到了PyPI:

配置和使用MCP

参考https://docs.cherry-ai.com/advanced-basic/mcp/config

配置我们自己开发的MCP server,看到弹出”服务器更新成功”,说明我们的MCP server配置成功且已经启动:

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

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

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