【技术文档摘要】: mcptool 正在积极开发中,尚未准备好使用 - 请稍后再试!
一个多功能命令行工具,用于从终端连接、测试和探测 MCP 服务器。
mcptool 的目标是为与使用 MCP 协议的服务器交互的开发者、管理员和CI流水线提供一个统一的瑞士军刀。
mcptool mcp ping 命令测量往返时间。cargo install mcptool
安装后,可以通过 mcptool 命令访问二进制文件。对于任何子命令,可以使用 --help 查看详细的标志选项。
每个期望一个 目标 的子命令接受TCP端点、HTTP/HTTPS端点、本地命令以 stdio 模式启动,或存储的身份验证条目。
| 类型 | 语法 | 发生什么 |
|---|---|---|
| 隐式TCP (默认) | host[:port] | 通过TCP连接。如果没有指定端口,则使用命令特定的默认值。 |
| 显式TCP | tcp://host[:port] | 与上述相同,但在主机可能包含方案前缀时明确无歧义。 |
| HTTP | http://host[:port] | 通过HTTP连接。如果没有指定端口,默认为80端口。 |
| HTTPS | https://host[:port] | 通过HTTPS连接。如果没有指定端口,默认为443端口。 |
| Stdio命令 | 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(存储的身份验证条目)
| 命令 | 目的 |
|---|---|
mcptool connect <目标> [--script <文件>] | 连接到目标。如果没有 --script,则进入交互式提示符 (>)。如果有 --script,mcptool 从 文件 中逐行读取一个子命令,顺序执行它们,打印结果并退出。 |
mcptool proxy <目标> --log-file <文件> | 透明地打开一个stdio传输通道,并将所有流量代理到目标,记录到 文件 中。 |
mcptool testserver [--stdio] [--tcp] [--port <端口>] | 运行一个带有详细日志的测试MCP服务器。使用 --stdio 用于stdio传输,--tcp 用于TCP传输,或者默认HTTP在指定端口上。 |
mcptool version | 显示mcptool构建版本及关联的MCP修订版。 |
mcptool help [子命令] | 显示任何命令的上下文帮助。 |
| 选项 | 目的 |
|---|---|
--json | 输出结果为JSON格式 |
--logs <级别> | 启用指定级别的日志(debug, info, notice, warning, error, critical, alert, emergency) |
--color | 强制颜色输出 |
--no-color | 禁用颜色输出 |
--quiet | 抑制所有输出,包括JSON输出 |
<目标>)当你在 提示符内 时,输入这些命令 不带 mcptool 前缀且不带目标。从常规shell中,前面加上 mcptool mcp 并提供一个 <目标>。
| 提示符形式 | shell形式 | 目的 |
|---|---|---|
ping | mcptool mcp ping <目标> | 测量往返延迟。 |
init | mcptool mcp init <目标> | 初始化连接并显示服务器信息。 |
listtools | mcptool mcp listtools <目标> | 列出所有MCP工具 (tools/list)。 |
listprompts | mcptool mcp listprompts <目标> | 列出预定义的提示模板 (prompts/list)。 |
listresources | mcptool mcp listresources <目标> | 列出服务器资源,如数据库或文件树 (resources/list)。 |
listresourcetemplates | mcptool mcp listresourcetemplates <目标> | 列出可用于实例化的资源模板。 |
setlevel <级别> | mcptool mcp setlevel <目标> <级别> | 设置MCP服务器的日志级别。 |
calltool <工具> [选项] | mcptool mcp calltool <目标> <工具> [选项] | 调用带有参数的工具。选项:--arg key=value, --interactive, --json |
readresource <URI> | mcptool mcp readresource <目标> <URI> | 通过URI读取资源。 |
getprompt <名称> [--arg key=value] | mcptool mcp getprompt <目标> <名称> [--arg key=value] | 根据名称获取提示,可选参数。 |
subscriberesource <URI> | mcptool mcp subscriberesource <目标> <URI> | 订阅资源更新通知。 |
unsubscriberesource <URI> | mcptool mcp unsubscriberesource <目标> <URI> | 取消订阅资源更新通知。 |
complete <引用> <参数> | mcptool mcp complete <目标> <引用> <参数> | 获取提示或资源参数的补全建议。 |
一旦连接 没有 --script,你可以运行任何子命令而无需再次指定目标,就像你在正常的命令行一样。
如果你 提供 --script mysession.mcp,文件将逐行读取,每行都被视为你在提示符下键入的内容。最后一行执行完毕后,连接将自动关闭。
$ mcptool connect api.acme.ai
已连接到 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 <名称> [选项] | 添加一个新的OAuth身份验证条目,通过交互式设置 |
mcptool auth list | 列出所有存储的身份验证条目 |
mcptool auth remove <名称> | 删除一个身份验证条目 |
mcptool auth renew <名称> | 使用刷新令牌重新获取访问令牌 |
一旦存储了一个身份验证条目,你可以使用 auth:// 目标语法将其用于任何MCP命令:
# 添加GitHub身份验证
mcptool auth add github
# 使用存储的身份验证
mcptool mcp ping auth://github
mcptool mcp listtools auth://github
mcptool connect auth://github
# 检查远程MCP服务器的延迟(隐式TCP)
mcptool mcp ping api.acme.ai
# 检查本地stdio服务器的延迟
mcptool mcp ping "cmd://./my-stdio-server --some --argument"
# 使用存储的身份验证(例如,GitHub Copilot)
mcptool mcp ping auth://github
# 使用身份验证列出工具
mcptool mcp listtools auth://github
# 通过非默认端口的TCP连接并立即运行状态查询,然后退出
mcptool calltool tcp://dev.acme.ai:7780 -- status
# 在本地stdio端点执行带有参数的工具
mcptool mcp calltool "cmd://./my-stdio-server --some --argument" summarize --arg text="Hello world"
# 使用交互模式,逐个提示参数
mcptool mcp calltool api.acme.ai chat.complete --interactive
# 通过STDIN传递复杂的JSON负载
echo '{"text": "Hello world", "model": "gpt-4"}' | mcptool mcp calltool api.acme.ai chat.complete --json
# 运行脚本序列而不进入提示符
mcptool connect api.acme.ai --script mysession.mcp