MCP服务器

一个基于官方MCP Python SDK实现的玩具MCP服务器,提供随机动物和骰子功能,适用于开发和学习MCP协议。

  • by mircorudolph
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mircorudolph/mcp-tool

使用说明

使用官方MCP Python SDK实现的玩具MCP服务器。

概述

该项目实现了 玩具模型上下文协议(MCP)服务器 使用Anthropic的官方Python SDK mcp (PyPI, docs.claude.com).

它公开了两个工具:

  • 随机动物:从预定义的10只动物列表中返回一只随机动物。
  • roll_d20:返回一个随机整数,模拟一个20边模具的滚动(1-20)。

服务器是:

  • MCP本地 –使用 FastMCP 从官方SDK,根据MCP规范实现工具(docs.claude.com).
  • 无状态和简单 –适合作为玩具参考服务器。
  • 运输灵活 –可以通过stdio、流式HTTP或SSE运行 mcp CLI。

安装

从项目根:

uv sync

如果你不使用 uv,您可以通过以下方式安装依赖关系:

pip install -e .

这将安装 mcp[cli] SDK,它提供MCP运行时和开发人员工具。

你也应该有 克劳德桌面 如果您想将此服务器注册为Claude MCP连接器,请按照MCP文档中的描述进行安装(docs.claude.com).

运行MCP服务器

运行此服务器的推荐方式是通过 mcp CLI,了解MCP传输并发现 FastMCP 实例定义于 main.py.

开发模式(MCP检查器/stdio)

从项目根:

uv run mcp dev main.py

这将在中运行服务器 发展模式 (stdio传输)并打开MCP检查器,您可以在其中:

  • 检查服务器声明的工具。
  • 手动调用 random_animal 和 roll_d20.

引擎盖下:

  • uv run 确保 mcp CLI在该项目的环境中运行(使用 mcp 版本从 PyPI).
  • mcp dev main.py 将服务器作为子进程启动 标准 并将MCP Inspector客户端连接到它。

直接执行

您还可以直接运行服务器(例如,通过stdio或其他支持的传输与自定义MCP客户端集成):

python main.py

这叫 mcp.run() 在 FastMCP 实例定义于 main.py,使用SDK的默认值启动MCP服务器循环。

这有助于:

  • 您自己编写的自定义MCP客户端。
  • 无需检查器即可对服务器进程和日志进行简单测试。

请注意 直接执行不会自动注册 配备克劳德桌面的服务器;它只运行MCP服务器。

在Claude Desktop注册服务器

安装完Claude Desktop后,您可以注册此MCP服务器,以便Claude可以自动发现并启动它。

从项目根目录运行:

uv run mcp install main.py

这在概念上做了什么:

  • 检查 main.py 找到 FastMCP 服务器。
  • 提示您(如果需要)提供以下详细信息 服务器名称 和 命令.
  • 写a 小清单/配置条目 进入Claude Desktop的MCP配置目录(每个用户的配置位置),告诉Claude:
    • “此服务器存在并命名为例如。 Toy MCP Server.”
    • “要启动它,请运行: python <path-to-your-project>/main.py (在适当的环境下)。”

重要的是:

  • 您的代码未被复制或重新安装;它保留在您的项目文件夹中。
  • “安装”步骤仅创建元数据,以便Claude Desktop知道如何将现有脚本作为MCP服务器启动。

运行后 mcp install:

  1. 重新启动Claude Desktop(如果它已打开)。
  2. 打开其设置/首选项并导航到 MCP/工具/服务器 部分。
  3. 您应该看到列出了此服务器(使用您选择的名称);如果需要,启用它。
  4. Claude现在将按需生成服务器进程并调用工具(random_animal, roll_d20)通过MCP。

工具使用示例(概念性)

MCP客户端(例如Claude Desktop、MCP Inspector或自定义MCP客户端)将使用MCP协议而不是原始HTTP端点来发现和调用工具。

  • 列出工具 –客户端检查服务器声明的工具(random_animal, roll_d20)通过MCP的功能和工具元数据,类似于MCP文档中的示例(docs.claude.com).
  • 呼叫 random_animal –客户端发送一个没有参数的MCP工具调用,并接收一个字符串结果,如 "tiger".
  • 呼叫 roll_d20 客户端发送一个无参数的MCP工具调用,并接收一个1到20之间的整数结果。

与本地LLM(例如Claude Desktop、LM Studio)集成

因为此服务器是MCP本机服务器 理想的 集成路径是使用MCP感知客户端(例如Claude Desktop、Claude Code、MCP Inspector),这些客户端直接按照MCP文档中的描述说出协议(docs.claude.com).

对于 LM工作室 或者其他尚未原生支持MCP的本地LLM运行时,您可以:

  • 运行此MCP服务器(使用SDK的传输通过stdio或HTTP/SSE)。
  • 写a 薄型适配器 其作用如下:
    • 一侧的MCP客户端(通过 mcp Python SDK)。
    • 另一端的工具/调用提供者(使用LM Studio公开的任何HTTP或插件机制;参见例如。 LM Studio概述).

这样,您就可以将此项目完全集中在MCP服务器上,同时仍然能够将其集成到本地LLM工作流中。

许可证

gnuaffero通用公共许可证 2007年11月19日第3版