返回市场
Python MCP

Python MCP

作者:anirbanbasu4 星标更新:2025-11-11

项目介绍

Python 3.12+ pytest PyPI GitHub commits since latest release smithery badge

<p align="center"> <img width="256" height="84" src="https://raw.githubusercontent.com/anirbanbasu/pymcp/master/resources/logo.svg" alt="pymcp logo" style="filter: invert(1)"> </p>

主要作为使用 FastMCP 开发 MCP 服务器的模板仓库,PyMCP 在某种程度上受到了 官方 everything MCP 服务器 的启发,该服务器是用 TypeScript 编写的。

组件

以下组件在此 MCP 服务器上可用。

工具

  1. greet
  • 向调用者问候一个经典的“Hello World”消息。
  • 输入
    • name: string (可选):要问候的名字。默认值为空。
  • 输出
    • 带有 UTC 时间戳的问候 TextContent
  1. generate_password
  • 生成一个指定长度的随机密码,可选地包括特殊字符,并符合至少包含一个小写字母、一个大写字母和两个数字的复杂性要求。如果包含特殊字符,则还应包含至少一个这样的字符。
  • 输入
    • length: integer:生成的密码长度。该值必须在 8 到 64 之间,包括两端。
    • use_special_chars: boolean (可选):一个标志,指示密码是否应包含特殊字符。默认值为 False
  • 输出
    • 包含生成密码的 TextContent
  1. text_web_search
  • 使用 Dux 分布式全球搜索 (DDGS) 对文本查询进行网络搜索。
  • 输入
    • query: string:用于获取结果的搜索查询。它应该是一个非空字符串。
    • region: string (可选):两个字母的国家代码后跟一个连字符,然后是两个字母的语言代码,例如 uk-enus-en。默认值为 uk-en
    • max_results: integer (可选):可选的最大结果数。默认值为 10。
    • pages: integer (可选):可选的结果分布页数。默认值为 1。
  • 环境变量
    • DDGS_PROXY: string (可选):用于出站网络搜索请求的可选代理服务器。
  • 输出
    • 包含搜索结果列表的 TextContent
  1. permutations
  • 计算从 n 项中选择 k 项的不同方式数量,不重复且有序。如果未提供 k,则默认为 n。
  • 输入
    • n: integer:可供选择的项目数。这应该是一个非零正整数。
    • k: integer (可选):要选择的项目数。默认值为 n 的值。
  • 输出
    • 包含从 n 中选择 k 项的不同方式数量的 TextContent,即 ${}^{n}P_{k}$。
  1. pirate_summarise
  • 以海盗风格总结给定的文本。此工具使用 LLM 客户端采样。因此,客户端必须存在采样处理器。
  • 输入
    • text: string:要总结的文本。
  • 输出
    • 包含 text 的海盗风格总结的 TextContent
  1. vonmises_random
  • von Mises 分布生成一个随机数。此工具通过客户端诱引来获取参数 kappa ($\kappa$)。因此,客户端必须存在诱引处理器。
  • 输入
    • mu: float:介于 0 和 $2\pi$ 之间的参数 $\mu$。
  • 输出
    • 包含 von Mises 分布随机数的 TextContent

资源

  1. resource_logo
  • 检索 PyMCP 的 Base64 编码 PNG 标志及其 SHA3-512 哈希。
  • URL: data://logo
  • 输出
    • 包含 Base64EncodedBinaryDataResponse Pydantic 对象的 TextContent,该对象具有以下字段。
      • data: string:PyMCP 的 Base64 编码 PNG 标志。
      • hash: string:原始二进制数据的十六进制编码加密哈希,由其 Base64 编码字符串等效表示在 data 中。(预期的十六进制编码哈希值为 6414b58d9e44336c2629846172ec5c4008477a9c94fa572d3419c723a8b30eb4c0e2909b151fa13420aaa6a2596555b29834ac9b2baab38919c87dada7a6ef14。)
      • hash_algorithm: string:使用的加密哈希算法,例如 sha3_512
  1. resource_logo_svg
  • 检索 PyMCP 的 SVG 标志。
  • URL: data://logo_svg
  • 输出
    • 包含 PyMCP 标志的 SVG 数据的 TextContent
  1. resource_unicode_modulo10
  • 计算给定数字的模 10 并返回代表结果的 Unicode 字符。根据模数是奇数还是偶数选择字符。对于奇数模数,使用 Unicode 字符 ❶ (U+2776),❸ (U+2778),❺ (U+277A),❼ (U+277C),和 ❾ (U+277E)。对于偶数模数,使用 Unicode 字符 ⓪ (U+24EA),② (U+2461),④ (U+2463),⑥ (U+2465),和 ⑧ (U+2467)。
  • URL: data://modulo10/{number}
  • 输入
    • number: integer:介于 1 和 1000 之间的正整数,包括两端。
  • 输出
    • 包含正确 Unicode 字符的字符串的 TextContent

提示

  1. code_prompt
  • 获取基于指定任务编写 Python 代码片段的提示。
  • 输入
    • task: string:将为其生成代码实现提示的任务描述。
  • 输出
    • 角色为 userPromptMessage,内容为表示提示的 TextContent

安装

您克隆此存储库的目录将在此后称为 工作目录WD

安装 uv。要在虚拟环境中安装该项目及其最小依赖项,请在 WD 中运行以下命令。要安装所有非必需依赖项(开发和测试所需),请将以下命令中的 --no-dev 替换为 --all-groups 标志。

uv sync --no-dev

单独使用

可以通过运行以下命令单独启动 PyMCP 作为 MCP 服务器,使用 stdio 传输。或者,可以使用 MCP_SERVER_TRANSPORT 环境变量指定传输类型,使用 streamable-httpsse 传输启动它。

uv run pymcp

使用 MCP Inspector 测试

MCP Inspector 是一个 官方 的 Model Context Protocol 工具,开发人员可以使用它来测试和调试 MCP 服务器。这是探索 MCP 服务器最全面的方式。

要使用它,您必须安装 Node.js。安装和管理 node 以及像 MCP Inspector 这样的包的最佳方法是使用 Node 版本管理器 (或 nvm)。一旦安装了 nvm,您可以执行以下操作来安装并使用最新的长期支持版本的 node

nvm install --lts
nvm use --lts

接下来,在 WD 中执行以下命令运行 MCP Inspector 和 PyMCP。

npx @modelcontextprotocol/inspector uv run pymcp

这将在端口 6274 创建一个带有身份验证令牌的本地 URL,您可以将其复制并在浏览器中浏览。进入 MCP Inspector 用户界面后,点击 连接 来连接到 MCP 服务器。之后,您可以探索服务器上的可用工具。

与 Claude Desktop、Visual Studio 等一起使用

您可以使用以下 stdio 传输运行服务器条目,与 Claude Desktop、Visual Studio Code 等系统一起使用。

{
    "command": "uv",
    "args": [
        "run",
        "pymcp"
    ]
}

args 列表的末尾,您可能需要指定脚本的完整路径,例如 WD/.venv/bin/pymcp

远程托管选项

目前可用的远程托管选项如下。

测试和覆盖率

要使用 pytest 运行提供的测试集,请在 WD 中执行以下命令。在以下命令中追加标志 --capture=tee-sys 可以看到测试期间的控制台输出。

uv run --group test pytest tests/

要获取在调用测试时的覆盖率报告,请运行以下两个命令。

uv run --group test coverage run -m pytest tests/
uv run coverage report

这将生成类似以下的输出。

Name                                      Stmts   Miss  Cover   Missing
-----------------------------------------------------------------------
src/pymcp/__init__.py                         4      0   100%
src/pymcp/data_model/__init__.py              0      0   100%
src/pymcp/data_model/response_models.py      21      0   100%
src/pymcp/mixin.py                           37      0   100%
src/pymcp/server.py                         101      0   100%
tests/__init__.py                             0      0   100%
tests/test_data_models.py                    47      0   100%
tests/test_server.py                        200      0   100%
-----------------------------------------------------------------------
TOTAL                                       410      0   100%

贡献

通过使用 uv sync--all-groups 标志为 Git 安装 pre-commit 来安装 PyMCP。

然后通过在 WD 中运行以下命令启用 pre-commit

pre-commit install

欢迎提交拉取请求。对于重大更改,请先打开一个问题讨论您想要更改的内容。

许可证

MIT