MCP协议命令行工具

mcptool是一个多功能命令行工具,用于连接、测试和探测MCP服务器,适用于开发人员、管理员和CI流水线。

  • by cortesi
  • Rust
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 tenxhq/mcptool

使用说明

mcptool正在大力开发中,尚未准备好使用-稍后再回来查看!

mcptool

用于连接、测试和探测的多功能命令行实用程序 主控程序 服务器从您的终端。

mcptool 旨在为开发者提供一把统一的瑞士军刀, 管理员和与服务器交互的CI管道 主控程序 协议。


主要特点

  • 单层连接 –快速打开交互式MCP会话,无需 额外设置。
  • 健康和延迟检查 –使用简单的工具测量往返时间 mcptool mcp ping.
  • 能力发现 –自动探测哪些可选命令 服务器支持。
  • 脚本友好的输出 -机器可读JSON和安静模式 自动化。

快速开始

cargo install mcptool

用法

安装后,二进制文件可用 mcptool.使用 --help 在任何子命令上查看详细标志。

目标规范

每个需要一个 目标 接受TCP端点、HTTP/HTTPS端点, 要在中生成的本地命令 标准 模式或存储的认证条目。

变量 语法 发生了什么
隐式TCP (默认) host[:port] 通过TCP连接。如果没有指定端口,则应用特定于命令的默认值。
显式TCP tcp://host[:port] 与上述相同,但明确主机何时可以包含方案前缀。
超文本传输协议 http://host[:port] 通过HTTP连接。如果没有指定端口,则默认为端口80。
超文本传输安全协议 https://host[:port] 通过HTTPS连接。如果没有指定端口,则默认为端口443。
标准指令 cmd://<program> [args…] 在本地生成程序,并通过其STDIN/STDOUT管道与MCP通信。当命令包含空格时,请使用引号。
认证 auth://<name> 使用存储的身份验证条目(请参阅下面的身份验证部分)。

示例目标

  • api.acme.ai (TCP,默认端口)
  • tcp://api.acme.ai:7780 (TCP,端口7780)
  • http://api.acme.ai (HTTP,端口80)
  • https://api.acme.ai:8443 (HTTPS,端口8443)
  • "cmd://./my‑stdio‑server --some --argument" (本地流程)
  • auth://github (存储的身份验证条目)

全局命令(从shell运行)

命令 目的
mcptool connect <target> [--script <file>] 连接到目标。没有 --script 您会进入一个交互式提示(>).随着 --script mcptool从以下位置每行读取一个子命令 文件,按顺序执行它们,打印结果并退出。
mcptool proxy <target> --log-file <file> 透明地打开stdio传输,并将所有流量代理到目标,将其记录到 文件.
mcptool testserver [--stdio] [--tcp] [--port <port>] 运行带有详细日志记录的测试MCP服务器。使用 --stdio 对于stdio传输, --tcp 用于TCP传输,或指定端口上的默认HTTP
mcptool version 显示mcptool构建版本和链接的MCP版本。
mcptool help [sub-command] 显示任何命令的上下文帮助。

全局选项

选项 目的
--json 以JSON格式输出结果
--logs <LEVEL> 启用指定级别的日志记录(调试、信息、通知、警告、错误、严重、警报、紧急)
--color 强制颜色输出
--no-color 禁用颜色输出
--quiet 禁止所有输出,包括JSON输出

MCP命令(可在提示符内使用 或 从外壳与 <target>)

当你 在提示内,键入以下命令 没有 这 mcptool 前缀,没有目标。在常规shell中,在它们前面加上 mcptool mcp 并提供 <target>.

提示表单 外壳表单 目的
ping mcptool mcp ping <target> 测量往返延迟。
init mcptool mcp init <target> 初始化连接并显示服务器信息。
listtools mcptool mcp listtools <target> 列出所有MCP工具(tools/list).
listprompts mcptool mcp listprompts <target> 列出预定义的提示模板(prompts/list).
listresources mcptool mcp listresources <target> 列出服务器资源,如数据库或文件树(resources/list).
listresourcetemplates mcptool mcp listresourcetemplates <target> 列出可用于实例化的资源模板。
setlevel <level> mcptool mcp setlevel <target> <level> 在MCP服务器上设置日志记录级别。
calltool <tool> [options] mcptool mcp calltool <target> <tool> [options] 使用参数调用工具。选项: --arg key=value, --interactive, --json
readresource <uri> mcptool mcp readresource <target> <uri> 按URI读取资源
getprompt <name> [--arg key=value] mcptool mcp getprompt <target> <name> [--arg key=value] 使用可选参数按名称获取提示。
subscriberesource <uri> mcptool mcp subscriberesource <target> <uri> 订阅资源更新通知。
unsubscriberesource <uri> mcptool mcp unsubscriberesource <target> <uri> 取消订阅资源更新通知。
complete <reference> <argument> mcptool mcp complete <target> <reference> <argument> 获取提示或资源参数的完成建议。

交互式提示和脚本模式

一旦连接 没有 --script,您可以运行任何子命令,而无需再次指定目标,就像在普通命令行上一样。

如果你 提供 --script mysession.mcp,文件是逐行读取的,每一行都按照您在提示符下键入的方式进行分派。执行最后一行后,连接会自动关闭。

$ mcptool connect api.acme.ai
Connected to api.acme.ai (tcp, proto‑rev 9)
> ping
107 ms
> listtools
summarize      translate      moderate
> calltool summarize --arg text="Hello world"
{"summary":"Hello 🌍"}
> exit

认证

Mcptool支持HTTP/HTTPS端点的OAuth身份验证。可以使用以下方式管理身份验证条目 mcptool auth 命令:

命令 目的
mcptool auth add <name> [options] 使用交互式设置添加新的OAuth身份验证条目
mcptool auth list 列出所有存储的身份验证条目
mcptool auth remove <name> 删除身份验证条目
mcptool auth renew <name> 使用刷新令牌续订访问令牌

存储身份验证条目后,您可以使用以下命令将其与任何MCP命令一起使用 auth:// 目标语法:

# Add GitHub authentication
mcptool auth add github

# Use the stored authentication
mcptool mcp ping auth://github
mcptool mcp listtools auth://github
mcptool connect auth://github

例子

# Check latency to a remote MCP server (implicit TCP)
mcptool mcp ping api.acme.ai

# Check latency to a local stdio server
mcptool mcp ping "cmd://./my‑stdio‑server --some --argument"

# Use stored authentication (e.g., for GitHub Copilot)
mcptool mcp ping auth://github

# List tools using authentication
mcptool mcp listtools auth://github

# Connect via TCP on a non‑default port and immediately run a status query, then exit
mcptool calltool tcp://dev.acme.ai:7780 -- status

# Execute a tool with arguments on a local stdio endpoint
mcptool mcp calltool "cmd://./my‑stdio‑server --some --argument" summarize --arg text="Hello world"

# Use interactive mode to be prompted for each parameter
mcptool mcp calltool api.acme.ai chat.complete --interactive

# Pass a complex JSON payload via STDIN
echo '{"text": "Hello world", "model": "gpt-4"}' | mcptool mcp calltool api.acme.ai chat.complete --json

# Run a scripted sequence without entering the prompt
mcptool connect api.acme.ai --script mysession.mcp