mcp命令
将任何MCP服务器转换为CLI工具。从服务器的工具定义中自动生成命令、标志和帮助文本。
安装
go install github.com/simonfxr/mcp-to-command@latest或者从源代码构建:
go build -o mcp-to-command .用法
mcp-to-command [server-args...] -- [--flag value | --flag=value ...]这 -- 分隔符将MCP服务器参数与工具参数分开。
列出可用工具
mcp-to-command go-jenkins-mcp -url example.com -auth user:pw -- --helpAvailable tools:
jenkins_get_build_log_tail Get the tail of build logs for a specific...
jenkins_get_build_logs Get build logs for a specific Jenkins job...
jenkins_get_job Get detailed information about a specific...
jenkins_get_jobs Get list of Jenkins jobs with their current status
jenkins_get_running_builds Get list of currently running Jenkins builds
jenkins_start_job Trigger a Jenkins job build with optional parameters
jenkins_wait_for_running_build Wait for a running Jenkins build to complete
Use --help for more information about a tool.获取工具帮助
mcp-to-command go-jenkins-mcp -url example.com -auth user:pw -- jenkins_get_build_log_tail --helpjenkins_get_build_log_tail
Get the tail of build logs for a specific Jenkins job and build number
Flags:
--build_number (required)
Build number
--job_name (required)
Name of the Jenkins job
--max_length (default: 8192)
Maximum bytes from end of log to retrieve执行工具
# Tool with no parameters
mcp-to-command go-jenkins-mcp -url example.com -auth user:pw -- jenkins_get_jobs
# Tool with required parameters
mcp-to-command go-jenkins-mcp -url example.com -auth user:pw -- jenkins_get_job --name=my-pipeline
# Tool with optional parameters
mcp-to-command go-jenkins-mcp -url example.com -auth user:pw -- jenkins_get_build_log_tail \
--job_name=my-pipeline \
--build_number=123 \
--max_length=16384
# Tool with JSON object parameter
mcp-to-command go-jenkins-mcp -url example.com -auth user:pw -- jenkins_start_job \
--job_name=my-pipeline \
--parameters='{"BRANCH":"feature/foo","DEPLOY":"true"}'运作原理
- 将MCP服务器作为子进程启动
- 初始化MCP连接并获取工具列表
- 从每个工具的JSON模式生成CLI标志(
inputSchema) - 解析用户提供的标志并转换类型
- 调用请求的工具并将结果输出为JSON
类型映射
| JSON模式类型 | CLI输入 | 示例 |
|---|---|---|
string | --flag value 或 --flag=value | --name my-job |
integer | --flag 123 或 --flag=123 | --build_number 42 |
number | --flag 3.14 或 --flag=3.14 | --threshold 0.5 |
boolean | --flag, --no-flag, --flag=true/false | --verbose, --no-dry-run |
object | --flag '{"k":"v"}' | --parameters '{"BRANCH":"main"}' |
array | --flag a --flag b (可重复) | --tags prod --tags api |
标志解析详细信息
布尔标志:
--flag将布尔属性设置为true.--no-flag将布尔属性设置为false.--flag=true和--flag=false也得到了支持。
数组标志:
- 为以下项目提供价值
array通过重复标记来键入。 - 例子:
--users alice --users bob成为["alice", "bob"]. - 根据数组的
items类型定义(例如整数数组)。
对象/JSON标志:
- 复杂的对象或数组也可以作为单个JSON字符串传递。
必需vs可选
- 架构中的属性
required必须提供数组 - 物业与
default值是可选的 - 缺少必需的标志,在工具的帮助下显示错误
许可证
麻省理工学院
