项目简介

'mcptools' 是一个强大的命令行工具,它不仅提供了与Model Context Protocol (MCP) 服务器交互的客户端功能,还包含了两种独立的MCP服务器实现:一个用于测试和演示的模拟服务器(Mock Server),以及一个可以将本地shell脚本或命令封装为MCP工具的代理服务器(Proxy Server)。

本项目适用于需要开发、测试MCP客户端,或希望将现有脚本/命令快速转换为MCP工具的使用者。

主要功能点

  • MCP客户端功能: 作为客户端,可以连接到任何兼容MCP协议的服务器,并执行列表查询(工具、资源、Prompt)和调用执行(工具调用、资源读取、Prompt获取)等操作。
  • 模拟MCP服务器: 可以快速启动一个临时的、功能有限但符合MCP协议的服务器,用于模拟工具、资源和Prompt的存在及基本响应,无需实现完整的后端逻辑。这对于客户端开发和测试非常有用。
  • MCP工具代理服务器: 这是一个功能性的MCP服务器,其核心作用是将用户配置的本地shell脚本或命令映射为MCP工具。启动该代理服务器后,它会监听来自MCP客户端的工具调用请求,并执行对应的脚本或命令,将输出作为工具调用结果返回。这使得将现有自动化脚本集成到MCP生态中变得非常便捷。

安装步骤

通常最简单的方式是从项目的GitHub Release页面下载预编译的二进制文件,这些文件针对不同的操作系统和架构进行了打包。

  1. 访问 'mcptools' GitHub Release 页面
  2. 找到最新版本的Release。
  3. 下载对应您操作系统和架构的二进制文件压缩包(例如 'mcptools_vx.y.z_操作系统_架构.tar.gz' 或 '.zip')。
  4. 解压文件,找到 'mcptools' 可执行文件。
  5. 将 'mcptools' 可执行文件移动到您的系统PATH环境变量包含的目录中(例如 '/usr/local/bin' 或 'C:\Windows'),以便在任何地方直接运行 'mcptools' 命令。
  6. (可选)根据需要为可执行文件添加执行权限,例如在Linux/macOS上运行 'chmod +x /usr/local/bin/mcptools'。

服务器配置

MCP服务器是供MCP客户端连接和使用的。MCP客户端(例如其他AI应用或开发框架)需要知道如何启动或连接到MCP服务器。对于'mcptools'提供的两种服务器模式,客户端通常通过指定启动服务器的命令 (command) 及其参数 (args) 来进行配置。

模拟MCP服务器配置

模拟服务器通过 'mcp mock' 命令直接在命令行中配置要暴露的实体(工具、Prompt、资源)。

MCP客户端配置示例(通常在客户端的设置文件或代码中体现):

{
  "serverName": "My Mock MCP Server",
  "command": "mcp",
  "args": [
    "mock",
    "tool", "hello", "简单的问候工具",
    "prompt", "greeting", "友好的问候语模板", "你好,{{name}}!"
  ]
}

配置参数说明:

  • 'command': 启动MCP服务器的命令行程序,这里是安装好的 'mcp'。
  • 'args': 传递给 'mcp' 命令的参数列表。
    • 'mock': 告诉 'mcptools' 启动模拟服务器模式。
    • 'tool <名称> <描述>': 定义一个工具。
    • 'prompt <名称> <描述> <模板>': 定义一个Prompt。
    • 'resource <URI> <描述> <内容>': 定义一个资源。

MCP工具代理服务器配置

代理服务器需要先通过 'mcp proxy tool' 命令注册工具配置,然后通过 'mcp proxy start' 命令启动。注册的工具配置会保存在您用户目录下的特定文件中(通常是 '~/.mcpt/proxy_config.json')。

  1. 注册工具: 在终端中运行 'mcp proxy tool' 命令来注册脚本或命令为MCP工具。
    • 示例1(注册脚本文件):'mcp proxy tool disk_usage "检查磁盘使用情况" "" /path/to/check_disk.sh'
    • 示例2(注册内联命令):'mcp proxy tool echo_message "回应输入的消息" "message:string" -e 'echo "你说了:$message"''
    • 示例3(带多种参数):'mcp proxy tool add_numbers "计算两个数字的和" "a:int,b:int" -e 'echo $(($a + $b))''
    • 参数说明:
      • 'tool': 指定要注册一个工具。
      • '<名称>': 给工具起一个唯一的名称。
      • '<描述>': 工具的功能描述。
      • '<参数列表>': 工具接收的参数,格式为 '名称:类型,名称:类型,...'。支持的类型包括 'string'、'int'、'float'、'bool'。空字符串表示无参数。
      • '<脚本路径>': 要执行的脚本文件路径(与 '-e' 二选一)。
      • '-e <命令>': 要执行的内联shell命令(与脚本路径二选一)。
  2. 启动代理服务器: 在终端中运行 'mcp proxy start' 命令来启动服务器。

MCP客户端配置示例(连接到已启动的代理服务器):

{
  "serverName": "My Proxy MCP Server",
  "command": "mcp",
  "args": [
    "proxy",
    "start"
  ]
}

配置参数说明:

  • 'command': 'mcp'。
  • 'args': 传递给 'mcp' 命令的参数列表。
    • 'proxy': 告诉 'mcptools' 进入代理模式。
    • 'start': 告诉 'mcptools' 启动代理服务器。

基本使用方法

启动模拟服务器

在终端中运行如下命令,即可启动一个模拟MCP服务器,它将监听标准输入:

mcp mock tool my_tool "演示工具" prompt welcome "欢迎模板" "Hello, {{name}}!"

此时,这个终端窗口就成为了一个MCP服务器进程。您可以让一个MCP客户端连接到这个进程(通过配置客户端的command和args指向上述命令),客户端就能发现名为 'my_tool' 和 'welcome' 的实体。

启动代理服务器

  1. 首先,使用 'mcp proxy tool' 命令注册您想要代理的工具(脚本或命令)。例如:
    mcp proxy tool list_files "列出当前目录文件" "" -e 'ls -lA'
    mcp proxy tool calculate "简单的计算器" "expression:string" -e 'echo $(($expression))'
  2. 然后,在终端中运行 'mcp proxy start' 命令:
    mcp proxy start
    这个终端窗口就成为了一个MCP代理服务器进程。MCP客户端可以连接到这个进程(配置command为 'mcp',args为 '["proxy", "start"]'),然后就可以发现并调用您刚才注册的 'list_files' 和 'calculate' 工具了。当客户端调用这些工具时,代理服务器会执行相应的shell命令并将结果返回。

请注意,对于Stdio传输方式,服务器通常会保持运行,监听客户端通过标准输入发送的JSON-RPC请求,并通过标准输出发送响应。当客户端关闭连接(例如进程退出)时,服务器也会收到EOF信号而退出。

信息

分类

开发者工具