Token导航 LogoToken导航TokenDH.com
MCP On Demand Tools logo
AI代理stdio官方级别未说明来源级核验

MCP On Demand Tools

MCP Server

一个基于AI代理的MCP服务器,支持动态注册和执行自定义工具,适用于原型设计、工作流测试和模拟实现。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude设计Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

AaronGoldsmith

提供方

AaronGoldsmith

最后核验

2026/5/17 20:23

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uvx mcp-on-demand-tools

详细介绍

按需MCP工具

一个模型上下文协议(MCP)服务器,支持通过AI代理实现动态工具注册和执行。可以实时注册自定义工具,并由基于Goose配方的代理进行模拟。

概述

这个MCP服务器允许您在运行时动态注册新工具,而无需重启服务器。当您调用已注册的工具时,服务器会使用Goose配方(render_template.yaml) 用于模拟工具的执行,并根据工具的合约生成真实的输出。这有助于在构建实际集成之前,对工具的功能进行原型设计、测试工作流程或创建模拟实现。

组件

资源

服务器为监控已注册工具提供资源:

  • 工具定义资源 (tool://internal/{tool-name})

- 返回完整的工具架构,包括名称、描述、参数、预期输出和副作用 - 包括通话次数统计,用于监控使用情况

  • 统计资源 (stats://internal/summary

- 显示汇总统计信息:已注册工具总数,已调用次数总计 - 按调用次数列出前10大工具

提示

  • 使用工具的计划一个有助于协调工具使用的规划提示

- 参数: goal (必填), notes (可选) - 列出当前所有已注册的工具,并在需要时建议注册新的工具

工具

核心工具

  • 注册工具动态注册一个新的按需工具

- 必需参数: - name工具标识符(字符串) - description该工具的作用(字符串) - paramSchema定义工具参数的JSON对象。每个参数应具有 descriptiontype 属性。可以以对象或JSON字符串的形式提供。 - expectedOutput工具返回结果的描述(字符串) - sideEffects副作用的描述,例如,“向天气服务发出API调用”或“无 - 生成模拟数据”(字符串)

动态工具

一旦注册,工具即可立即调用。每个已注册的工具:

  • 接受一个 params 参数(对象或JSON字符串)
  • 通过Goose配方执行(render_template.yaml) 该技术使用人工智能模型生成逼真的输出
  • 返回与预期输出合同相匹配的模拟输出
  • 当有新工具注册或工具使用统计信息发生变化时,服务器会自动通知已连接的MCP客户端

它是如何工作的

  1. 注册一个工具 使用 register-tool 带有您所需架构的MCP工具
  2. 工具现已可用 立即 - 服务器向已连接的客户端发送通知
  3. 调用工具 具有特定的参数值
  4. 鹅肉食谱执行 模拟工具并根据合同生成逼真的输出
  5. 查看统计数据 通过资源监控工具使用情况和通话历史

建筑学

┌─────────────────┐
│  MCP Client     │
│  (Goose, etc)   │
└────────┬────────┘
         │
         │ register-tool
         ▼
┌─────────────────────────┐
│  MCP Server             │
│  (mcp-on-demand-tools)  │
│                         │
│  • Stores tool metadata │
│  • Tracks call history  │
│  • Provides resources   │
└────────┬────────────────┘
         │
         │ invoke: tool-name(params)
         ▼
┌─────────────────────────┐
│  Goose Recipe Runner    │
│  (render_template.yaml) │
│                         │
│  Simulates tool based   │
│  on contract & params   │
└─────────────────────────┘

示例工作流程

// Step 1: Register a weather forecast tool
{
  "name": "get-weather-forecast",
  "description": "Fetches weather forecast for a given location",
  "paramSchema": {
    "location": {
      "description": "City name or coordinates",
      "type": "string"
    },
    "days": {
      "description": "Number of days to forecast (1-7)",
      "type": "integer"
    }
  },
  "expectedOutput": "Weather forecast data including temperature, conditions, and precipitation",
  "sideEffects": "None - simulated data generation"
}

// Step 2: Tool is now available in MCP
// Step 3: Invoke it
{
  "params": {
    "location": "San Francisco",
    "days": 3
  }
}
// Step 4: Goose generates realistic weather data matching the contract

安装

先决条件

要求:

  • Python 3.12 或更高版本
  • - 必须安装并添加到您的PATH环境变量中
  • uv 包管理器(推荐)或 pip

重要的这个服务器需要Goose来运行。它使用Goose的配方来模拟工具执行,因此在使用这个MCP服务器之前,您必须先安装Goose。

兼容性说明此服务器与支持动态工具列表更新的MCP客户端(如Goose Desktop)配合效果最佳。Claude Code客户端在注册新工具时不会自动刷新工具列表,因此可能与该客户端配合效果不佳。

安装MCP服务器

将服务器配置添加到您的配置文件中:

选项1:使用已发布的包(推荐)

{
  "mcpServers": {
    "mcp-on-demand-tools": {
      "command": "uvx",
      "args": ["mcp-on-demand-tools"]
    }
  }
}

选项2:开发环境设置

克隆仓库并使用本地安装:

{
  "mcpServers": {
    "mcp-on-demand-tools": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/mcp-on-demand-tools",
        "run",
        "mcp-on-demand-tools"
      ]
    }
  }
}

为其他MCP客户端安装

对于其他兼容MCP的客户端,请将其配置为运行:

uvx mcp-on-demand-tools

或者用于开发:

uv --directory /path/to/mcp-on-demand-tools run mcp-on-demand-tools

发展

设置

  1. 克隆仓库:
git clone https://github.com/yourusername/mcp-on-demand-tools.git
cd mcp-on-demand-tools
  1. 安装依赖项:
uv sync
  1. 本地运行:
uv run mcp-on-demand-tools

构建与发布

准备分发的软件包:

  1. 构建软件包分发版:
uv build

这会在(系统/环境中)创建源代码分发包和二进制分发包 dist/ 目录。

  1. 发布到PyPI:
uv publish

发布时需要通过环境变量或命令标志提供 PyPI 凭据:

  • 代币: --token 或者 UV_PUBLISH_TOKEN
  • 或者用户名/密码: --username/UV_PUBLISH_USERNAME--password/UV_PUBLISH_PASSWORD

自动化出版

该项目包含一个GitHub Actions工作流,可自动:

  • 每次推送时构建包
  • 在推送时发布到TestPyPI main 分支
  • 当你创建一个git标签时(例如。, v0.1.0

发布新版本:

git tag v0.1.1
git push origin v0.1.1

调试

由于MCP服务器是通过stdio运行的,调试可能会具有挑战性。为了获得最佳的调试体验,请使用 MCP 检查器

npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-on-demand-tools run mcp-on-demand-tools

启动后,Inspector 将显示一个 URL,您可以在浏览器中访问该 URL 来开始调试。

项目结构

mcp-on-demand-tools/
├── src/
│   └── mcp_on_demand_tools/
│       ├── __init__.py           # Package entry point
│       ├── server.py             # Main MCP server implementation
│       └── recipes/
│           └── render_template.yaml  # Goose recipe for tool simulation
├── pyproject.toml                # Project metadata and dependencies
├── uv.lock                       # Locked dependencies
└── README.md                     # This file

工具执行的工作原理

当你调用一个已注册的工具时:

  1. MCP服务器接收带有参数的工具调用
  2. 它构建一个上下文字符串,内容包括:

- 工具名称及描述 - 预期输出合同 - 副作用声明 - 输入参数(以JSON格式) - 聚合上下文之前调用此工具的历史记录(如有)

  1. 服务器执行 goose run --recipe render_template.yaml 具有这些参数
  2. Goose的人工智能代理阅读合同并生成符合预期格式的真实输出
  3. 输出被提取并返回给MCP客户端

有状态工具执行

v0.1.2版新增功能服务器现在为每个注册的工具维护调用历史。当您多次调用某个工具时,AI代理会从之前的调用中接收到上下文信息,从而能够:

  • 对话工具工具可以在多次调用之间保持上下文信息
  • 增量式工作流程每次调用都可以基于之前的结果进行构建
  • 状态感知响应该人工智能能够生成参考或延续先前互动的输出内容

总体上下文包括:

  • 之前呼叫的总次数
  • 每次之前调用的输入参数
  • 退出代码和输出(前200个字符)
  • 调用顺序/顺序

这使得工具模拟器能够在多轮交互中提供更加连贯且符合上下文的响应。

用例

这台服务器非常适合:

  • 快速原型制作测试工具概念,而不实现全部功能
  • API设计探索在决定实施之前,先试验一下工具接口
  • 工作流测试使用真实的模拟数据验证复杂工作流
  • 演示和文档编制展示工具的使用方式,而无需实际构建它们
  • 占位符工具在开发过程中创建临时工具实现

更新日志

v0.1.1(2025年10月12日)

  • 增加了聚合上下文支持工具执行现在可以从之前的调用中获取历史记录
  • 支持在多次调用中保持状态的、具有对话功能的工具行为
  • AI代理现在可以根据通话历史生成具有情境意识的回复

v0.1.0

  • 首次发布
  • 初步的MCP服务器实现
  • 动态工具注册
  • 基于鹅食谱的工具模拟

许可证

许可证 文件中有详细信息。

做出贡献

欢迎贡献!请随时提交拉取请求。

目录标签

目录标签

PythonClaude设计动态工具本地部署AI代理MCP协议原型设计模拟执行

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP