从零完整实操:Python MCP服务打包、发布到Smithery、本地安装调用全流程

从零完整实操:Python MCP服务打包、发布到Smithery、本地安装调用全流程

前言

Model Context Protocol(MCP)是Anthropic推出的AI工具标准,允许开发者自定义工具服务,给Claude、Cursor、RooCode等AI客户端扩展能力。Smithery是目前主流的MCP开源仓库,支持一键打包、发布、分发、本地安装MCP服务。
本文以Python天气查询MCP服务为例,完整记录从项目初始化、打包、发布上架、本地拉取安装、接入AI客户端的全流程,踩坑点全部标注,新手可直接复刻。

一、环境前置准备

1. 全局工具安装

需要两个核心CLI工具:@anthropic-ai/mcpb(打包MCP包)、@smithery/cli(Smithery仓库管理)

# 安装MCP打包工具
npm install -g @anthropic-ai/mcpb
# 安装Smithery官方命令行
npm install -g @smithery/cli

2. Smithery账号登录

发布服务前必须登录账号,执行命令唤起浏览器授权:

smithery auth login

验证登录状态:

smithery auth status

注意:登录后的账号数字ID,就是后续发布命令的命名空间(namespace),不可随意修改。

3. 项目目录结构

本文示例项目:weather-mcp-server,Python实现的天气MCP服务

weather-mcp-server/
├─ server.py          # MCP服务启动入口
├─ requirements.txt   # Python依赖
├─ manifest.json      # mcpb init生成的打包配置(核心)
├─ server.mcpb        # mcpb pack生成的打包产物
└─ 其他说明/配置文件

不过在官方mcpb的介绍中,仅需要manifest.json就可以上传,这边一般加上依赖应该是方便了解
image

二、初始化MCP打包配置(mcpb init)

进入项目根目录,执行初始化命令生成manifest.json配置文件:

mcpb init

交互式参数填写完整说明(对应实操踩坑点)

  1. Extension name:内部唯一标识,纯英文小写,示例server
  2. Author name:作者名,和Smithery账号保持一致,示例cwk
  3. Display name:客户端展示名称(可选,支持中文),示例天气查询MCP工具
  4. Version:语义化版本,初次发布固定1.0.0
  5. Description:一句话工具简介,如提供实时城市天气查询的Python MCP服务
  6. Add a detailed long description?:测试选no,正式开源可填yes
  7. Author邮箱、主页、文档链接:个人测试全部回车留空跳过
  8. Icon、截图配置:测试全部选no跳过
  9. Server type:代码语言,Python项目选Python
  10. Entry point:服务启动入口文件(重点!)
    • 入口文件在项目根目录:直接填server.py
    • 入口文件在子文件夹:填server/main.py

    禁止填写Windows绝对路径,仅支持相对manifest.json的路径

  11. Add compatibility constraints?:测试选no,不限制客户端版本
  12. Add user-configurable options?:如果你的工具需要用户填写密钥/参数(如天气API Key),选yes
    • Configuration option key:配置项底层键名,示例weather_api_key(仅英文下划线)
    • 后续依次填写配置展示名、描述、类型string、必填yes,无默认值回车跳过

执行完成后,项目根目录自动生成manifest.json,是打包、发布的核心配置文件。

三、打包生成MCPB安装包

配置文件就绪后,一键打包生成server.mcpb压缩包(Smithery标准离线分发包):

mcpb pack

执行后目录出现server.mcpb,代表打包完成,可用于上传发布。

四、发布MCP服务到Smithery公共仓库

1. 发布命令格式

smithery mcp pack ./server.mcpb -n 你的账号ID/工具名

实操示例(避坑重点)

  1. 账号ID:登录Smithery后,个人主页数字ID,不可自定义
  2. 工具名:打包时extension name,全程拼写必须统一,大小写、字母不能错
    本次实操正确命令:
smithery mcp publish ./yourserver.mcpb -n namespace/weather-mcp-serve

发布流程输出解读

  1. Server xxx doesn't exist yet. Create it? Yes:首次发布输入Yes,自动在你的账号下创建服务条目
  2. Created server xxx:服务条目创建成功
  3. Release xxx accepted:打包文件校验上传完成
  4. Release successful!:发布流程全部完成
  5. 输出两条关键链接:
    • MCP远程URL:云端运行地址,可直接给AI客户端接入远程服务
    • Server Page:工具公开详情页,可编辑介绍、修改可见性、查看运行日志

关键状态说明

刚发布的服务默认是unlisted(未公开)状态:

  • 市场搜索不到,仅持有链接的人可访问
  • 如需公开上架,进入页面点击Change visibility切换为Public

五、本地拉取、安装、调用已发布的MCP服务

前置说明

旧命令smithery install已废弃,官方推荐使用smithery mcp add/smithery mcp pull

方式1:绑定AI客户端一键安装(推荐)

1. 先删除错误创建的连接(拼写错误时)

smithery mcp remove 错误的工具名

2. 正确添加服务(严格匹配发布时的名称)

smithery install namespace/仓库名

这样会选择比如cursor、claude、tome等客户端

3. 选择目标AI客户端

执行后弹出客户端列表,按需选择:

  • claude-desktop:Claude桌面客户端(最常用,向下翻页可见)
  • roocode:VSCode RooCode插件
  • cursor:Cursor编辑器AI
    选择完成后,输入打包时配置的必填参数weather_api_key,自动写入客户端配置。

方式2:仅本地下载源码,不绑定客户端

仅拉取代码到本地,自行调试:

smithery mcp add namespace/weather-mcp-serve

本地验证工具是否可用

安装完成后,列出服务内置的所有工具函数:

smithery tool list weather-mcp-serve

调用工具测试:

smithery tool call weather-mcp-serve get_weather '{"city":"北京"}'

六、高频踩坑汇总(实操避坑)

  1. 名称拼写不一致404报错
    发布时工具名weather-mcp-serve,安装时写成weather-mcp-server(多r),路径不存在,严格复制详情页链接内的服务全名。
  2. 入口文件路径填写错误
    mcpb init的entry point仅支持相对路径,禁止Windows绝对路径,文件不存在会导致服务启动失败。
  3. 云端无工具能力No capabilities found
    云端环境不会自动安装requirements.txt依赖,且缺少用户配置的API密钥;本地安装会自动处理依赖,无此问题。
  4. 个人主页看不到刚发布的服务
    ① 服务默认隐藏unlisted状态,切换Public后刷新;② Smithery列表存在缓存延迟,等待3-5分钟;③ 网页登录账号和终端登录账号不一致。
  5. smithery install命令废弃
    黄色警告提示无需慌张,改用smithery mcp add标准命令即可。

七、更新已发布的MCP服务

修改server.py代码或配置后,重新打包+发布,自动生成新版本覆盖仓库:

# 重新打包
mcpb pack
# 重新发布,名称和初次发布保持完全一致
smithery mcp publish ./server.mcpb -n namespace/weather-mcp-serve

总结

  1. 打包流程:mcpb init生成配置 → mcpb pack输出.mcpb包;
  2. 发布流程:登录Smithery → smithery mcp publish上传包,生成公开服务;
  3. 本地使用:smithery mcp add绑定AI客户端,填写密钥后直接调用自定义工具;
  4. 核心注意点:账号ID、工具名称全程拼写统一,入口路径使用相对路径,区分云端/本地运行的环境差异。

整套流程打通后,你可以自由开发任意自定义MCP工具(文件处理、数据库、联网搜索、第三方API封装等),一键分发到Smithery,供自己或其他开发者在各类AI客户端中使用。

smithery更改版本比较快,很多文章过时了参考意义不大,本文章是在学习hello-agents的过程中,出现了smithery上传不上的问题,因此拿出自己的经历进行分享,目前好像是不再支持可以填入github路径进行部署了,只能命令行和在线服务器上传。

posted @ 2026-07-19 09:45  好像是Cwk  阅读(7)  评论(0)    收藏  举报