mcpField
🚀
🚀 MCPY-CLI: 快速从 Python 文件构建 MCP 服务

🚀 MCPY-CLI: 快速从 Python 文件构建 MCP 服务

本地服务
github.com/liuhaotian9420开发工具174 周前更新

关于 🚀 MCPY-CLI: 快速从 Python 文件构建 MCP 服务

MCPY-CLI 是面向 Python 开发者的命令行工具,可将函数或脚本转换为 MCP 服务。它支持本地开发与打包部署,并提供组合和路由两种服务架构。

主要功能

  1. 01将 Python 代码转换为 MCP 服务
  2. 02支持热重载的本地运行
  3. 03打包服务以供部署
  4. 04组合和路由模式
  5. 05Streamable HTTP 与传统 SSE
  6. 06事件存储和会话调用缓存

适用场景

  1. 01将 Python 函数作为 MCP 工具
  2. 02在开发中测试服务变更
  3. 03打包服务用于部署
  4. 04存储事件以恢复会话

MCP 相关

从 Python 文件或目录构建 MCP 服务,向 MCP 客户端公开其中的函数。服务可使用 Streamable HTTP 或传统 SSE 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

来自项目 README

🚀 MCPY-CLI: 快速从 Python 文件构建 MCP 服务

English Version

欢迎使用 mcpy-cli!本指南将帮助您快速上手,通过简单的步骤创建、运行、转换和部署自己的 MCP (模型上下文协议) 服务。

什么是 mcpy-cli?

这是一个专为简化 MCP 服务开发而设计的工具包。它能帮助您:

  • 📦 快速打包:将一个或是多个 Python 函数或脚本转换为标准 MCP 服务
  • 🚀 一键部署:通过命令行快速启动或发布服务
  • 🔄 自动路由:根据文件结构自动生成服务接口
  • 🌐 灵活配置:支持多种传输协议,持久化和缓存

🔥 快速开始

1. 环境要求:

Python >= 3.10, 且安装了 FastMCP, 推荐安装 uv

# 使用 pip 下载
pip install mcpy-cli

# 使用 uv (如已安装)
uv pip install mcpy-cli

# 使用 uv (未安装)
pip install uv
uv pip install mcpy-cli

2. MCP 服务示例
mcpy-cli example
3. 搭建 MCP 服务
# 假设在根目录下有一个 sample_tools.py 的文件
mcpy-cli run --source-path sample_tools.py

或者如果你安装了 uv

uvx --from mcpy-cli mcpy-cli --source-path sample_tools.py run

服务启动后,访问测试页面: http://localhost:8080/mcp-server/mcp

推荐使用 MCP inspector 打开该页面

📖 使用指南

🔬 核心工具:run & package

本项目提供两种将 .py 脚本转换为 MCP 服务的工具,本地运行工具(run)和打包(package)

1. 本地运行

  • 使用 mcpy-cli run 命令可以在本地将多个 Python 文件中的函数部署为指定端口的 MCP 服务
  • 支持自动重载,适合开发调试

2. 打包

  • 使用 mcpy-cli package 命令可以将指定文件夹打包在一个名为 project 的文件夹之中
  • 提供一个 start.sh 作为启动服务的脚本,方便部署和修改
# 启动服务
mcpy-cli run --source-path /path/to/your/code --port 8080
# 或者使用 uvx
uvx mcpy-cli run --source-path /path/to/your/code --port 8080

# 打包服务(用于生产部署)
mcpy-cli package --source-path /path/to/your/code --package-name my-service
# 或者使用 uvx
uvx mcpy-cli package --source-path /path/to/your/code --package-name my-service

# 查看帮助
mcpy-cli --help
# 或者使用 uvx
uvx mcpy-cli --help
🛠️ 两种架构模式

本项目提供两种不同的 MCP 服务架构,您可以根据具体需求选择:

📋 Composed 模式(组合模式)- 默认

工作原理:

  • 创建一个主 FastMCP 实例作为"宿主"
  • 每个 Python 文件创建独立的 FastMCP 子实例
  • 所有子实例挂载到主实例下,通过前缀+分隔符的方式区分不同的工具

使用示例:

# 使用组合模式(默认)
mcpy-cli run --source-path ./my_tools --mode composed

# 访问地址:http://localhost:8080/mcp-server/mcp
# 工具调用:tool_file1_add, tool_file2_calculate 等
🔀 Routed 模式(路由模式)

工作原理:

  • 每个 Python 文件创建独立的 FastMCP 实例
  • 每个实例分配独立的路由路径
  • 按照文件目录结构自动生成访问路径

使用示例:

# 使用路由模式
mcpy-cli run --source-path ./my_tools --mode routed

# 访问地址:
# http://localhost:8080/math_tools - 数学工具模块
# http://localhost:8080/text_tools - 文本工具模块
# http://localhost:8080/data_tools - 数据工具模块
基础参数说明
参数描述默认值
--source-path包含 Python 代码的文件或目录当前目录
--port服务监听端口8080
--host服务监听地址127.0.0.1
--mcp-name服务名称自动生成
--mode架构模式 (composed/routed)composed
--legacy-sse使用传统SSE传输 (已弃用)关闭

🤝 客户端使用

使用本地运行工具启动服务后,您可以通过以下方式调用:

1. MCP Inspector

使用 MCP Inspector,在左上角选择【streamable-http】,输入生成的服务 url (默认地址为 http://localhost:8080/mcp-server/mcp)

2. 使用支持 MCP 的客户端

以 CherryStudio 为例

🧀 进阶配置

1. 传输协议选择

mcpy-cli 支持多种传输协议配置:

  • 默认模式(Streamable HTTP):推荐使用,更稳定和简单

    mcpy-cli run --source-path ./my_tools
    
  • 传统SSE模式:通过 --legacy-sse 启用(已弃用,仅供兼容性使用)

    mcpy-cli run --source-path ./my_tools --legacy-sse
    

    ⚠️ 注意:传统SSE模式在某些云环境(如Knative/Istio)中可能遇到路径问题,建议使用默认的Streamable HTTP模式。

2. 服务持久化

mcpy-cli 支持通过事件存储(EventStore)实现服务持久化和状态恢复功能。当启用此特性时,服务会将 JSON-RPC 消息存储起来,允许在服务中断或重启后从特定事件点恢复执行。

  • 实现方式:默认使用 SQLiteEventStore,将事件数据保存在本地 SQLite 数据库文件中。
  • 启用方法:在启动服务时,使用 --enable-event-store 标志。
  • 数据库路径:可以通过 --event-store-path 参数指定事件存储数据库文件的路径。如果未指定,默认为 ./mcp_event_store.db。
# 启用事件存储并指定数据库路径
mcpy-cli run --source-path ./my_tools --enable-event-store --event-store-path ./my_service_events.db

此功能对于需要长时间运行或维护会话状态的 MCP 服务特别有用。

3. 缓存

为了提高性能并减少重复计算,工具提供了会话级别的工具调用缓存(SessionToolCallCache)。

  • 工作机制:此缓存是内存中的,它会存储在特定用户会话中工具调用的结果。当在同一会话中以相同的参数再次调用同一工具时,可以直接从缓存中返回结果,而无需重新执行工具函数。
  • 适用场景:此缓存主要在“有状态 JSON 响应模式”(stateful JSON response mode)下激活并发挥作用。
  • 生命周期:缓存内容与用户会话绑定,会话结束或清除时,相关缓存也会被清除。

此机制有助于优化那些在会话中可能被频繁调用的工具的响应速度。

📚 更多资源

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。