MCP热重载工具

MCP Reloader是一款专为Claude Code开发MCP工具设计的实时热重载开发工具,支持动态加载和修改工具而无需重启服务器,适用于迭代开发场景。

  • by mizchi
  • JavaScript
  • 本地部署
  • 11 星标
  • 更新于
在 GitHub 查看 mizchi/mcp-reloader

使用说明

MCP重新加载器

一个使用Claude Code构建MCP(模型上下文协议)服务器的热重载开发工具。该工具使Claude Code能够在修改MCP工具时动态重新加载它们,使其非常适合迭代开发,Claude Code可以实时编写和测试MCP工具。

概述

MCP Reloader是专门为使用Claude Code构建MCP工具的开发人员设计的。它解决了常见的开发痛点,即每当修改服务器工具时,MCP客户端都需要重新启动。通过实现文件监视和 tools/list_changed 通知,Claude Code可以修改工具并立即测试它们,而无需手动重新启动。

Claude代码开发的关键特性

  • 实时工具开发:Claude Code可以编写、修改和测试MCP工具,而无需重新启动
  • 动态工具加载:自动从以下位置加载JavaScript工具 tools/ 目录
  • 即时反馈循环:更改会立即反映在MCP客户端中
  • 文件监视:使用chokidar实时检测文件更改
  • 工艺包装:用热重载功能包裹任何LSP/MCP流程
  • 配置更改时自动重新启动:查看配置文件并在需要时重新启动

Claude Code快速入门

1.创建新的MCP项目

mkdir my-mcp-tools
cd my-mcp-tools
mkdir tools

2.配置克劳德桌面

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "my-tools": {
      "command": "npx",
      "args": ["mcp-reloader"],
      "cwd": "/path/to/my-mcp-tools"
    }
  }
}

3.让Claude Code创建工具

现在,Claude Code可以在 tools/ 目录,它们将自动可用,而无需重新启动Claude Desktop!

示例:Claude代码创建工具

以下是Claude Code如何创建一个立即可用的工具:

// tools/search-files.js
export default {
  name: "search_files",
  description: "Search for files matching a pattern",
  inputSchema: {
    type: "object",
    properties: {
      pattern: {
        type: "string",
        description: "Glob pattern to search for files"
      },
      directory: {
        type: "string",
        description: "Directory to search in",
        default: "."
      }
    },
    required: ["pattern"]
  },
  handler: async ({ pattern, directory = "." }) => {
    const { glob } = await import('glob');
    const files = await glob(pattern, { cwd: directory });
    return `Found ${files.length} files:\n${files.join('\n')}`;
  }
};

Claude Code可以创建此文件,它将立即可用!

安装

# Global installation
npm install -g mcp-reloader

# Or use directly with npx (recommended)
npx mcp-reloader --help

用法

基本服务器启动

# Start default MCP server with hot-reload
npx mcp-reloader

# Or if installed globally
mcp-reloader

使用包含模式

查看其他文件,并在更改时重新启动该过程:

# Watch configuration files
npx mcp-reloader --include "config/**/*.json" --include "src/lib/**/*.js"

# Or use environment variable
MCP_HOT_RELOAD_INCLUDE='config/**/*.json,src/lib/**/*.js' npx mcp-reloader

包装自定义LSP服务器

用热重载功能包装任何LSP服务器:

# Wrap a Python LSP server
npx mcp-reloader --include "**/*.yaml" -- python my-lsp-server.py --port 3000

# Wrap a Node.js server with complex arguments
npx mcp-reloader --include "**/*.ts" -- node --experimental-specifier-resolution=node ./dist/server.js --config ./config.json

# Legacy cmd: format (still supported)
npx mcp-reloader cmd:python server.py --port 3000

示例:包装现有MCP服务器

以下是如何向任何MCP服务器添加热重载。此示例封装了一个简单的echo服务器:

{
  "mcpServers": {
    "echo-with-reload": {
      "command": "npx",
      "args": [
        "mcp-reloader",
        "--include", "examples/echo-server/config.json",
        "--",
        "node",
        "examples/echo-server/server.js"
      ]
    }
  }
}

当 config.json 更改后,整个echo服务器将自动重新启动。

命令行参数

--包括图案

指定要监视的文件的全局模式。当匹配的文件发生变化时,整个过程会重新启动。

# Single pattern
npx mcp-reloader --include "config.json"

# Multiple patterns
npx mcp-reloader --include "**/*.yaml" --include "lib/**/*.js"

--分离器

一切之后 -- 被视为命令及其参数。这使得在不逃避的情况下传递复杂的论点变得容易。

# Simple command
npx mcp-reloader -- python server.py --port 3000

# Complex Node.js arguments
npx mcp-reloader --include "**/*.ts" -- node --experimental-specifier-resolution=node ./dist/server.js --config ./config.json

# Arguments with spaces and special characters
npx mcp-reloader -- python script.py --message "Hello World!" --path "/path with spaces/"

运作原理

两级重装策略

  1. 工具文件 (tools/*.js):热重新加载,无需重新启动进程

    • chokidar检测到文件更改
    • 工具通过缓存破坏动态导入
    • tools/list_changed 向客户端发送通知
    • MCP客户端可以立即使用更新的工具
  2. 包含图案文件:全过程重新启动

    • Wrapper进程监视指定的glob模式
    • 更改后,整个服务器进程将重新启动
    • 适用于配置文件或核心依赖关系

建筑

┌─────────────┐     ┌─────────────┐     ┌──────────────┐
│ MCP Client  │────▶│   Wrapper   │────▶│  MCP Server  │
└─────────────┘     └─────────────┘     └──────────────┘
                           │                      │
                           ▼                      ▼
                    File Watching           Tool Loading
                    (--include)            (tools/*.js)

预期行为

初始启动

  • 服务器从加载所有工具 tools/
  • 初始工具立即可用
  • 客户端收到工具列表

添加工具

  • 创建新文件(例如。, tools/hello.js)
  • 服务器检测到新文件
  • 工具自动加载
  • tools/list_changed 通知已发送
  • 工具立即在客户端可用

修改工具

  • 编辑现有文件(例如。, tools/echo.js)
  • 服务器检测到更改
  • 工具重新加载了新的实现
  • tools/list_changed 通知已发送
  • 立即更新行为

删除工具

  • 删除文件(例如。, tools/time.js)
  • 服务器检测到删除
  • 工具已从可用工具中删除
  • tools/list_changed 通知已发送
  • 工具不再可调用

包括图案更改

  • 修改观看的文件(例如。, config.json)
  • 包装器检测到更改
  • 整个服务器进程重新启动
  • 所有工具都重新加载了新配置

地方发展

对于开发mcp重载器本身:

# Clone and install
git clone https://github.com/mizchi/mcp-reloader.git
cd mcp-reloader
npm install

# Build TypeScript
npm run build

# Run tests
npm test

# Run development server
npm run dev

# Test hot-reload functionality
./test-include.sh

与类似工具的比较

工具 用例 状态保存 MCP集成
mcp装弹机 MCP/LSP服务器 两级策略 原生支持
节点 通用 否(完全重启) 手动设置
tsx手表 仅支持TypeScript 否(完全重启) 否
面包——热 Bun运行时 是 否

贡献

欢迎投稿!请随时提交拉取请求。

许可证

麻省理工学院

致谢

该项目实现了 模型上下文协议 工具热重载规范,专门用于增强Claude Code开发体验。