关于 Mcp Server Commands
Mcp Server Commands 是一个 MCP 服务,可在宿主机上运行命令并返回标准输出与标准错误。它面向希望让模型执行命令行操作的用户,并提供了基于 stdio 的本地运行方式。
主要功能
- 01通过 runProcess 工具执行命令
- 02支持 command_line 字符串或 argv 数组两种调用方式
- 03返回 STDOUT 和 STDERR 文本
- 04可通过 stdin 向 shell 或脚本传入内容
- 05提供 HTTP 访问的 mcpo 桥接说明
适用场景
- 01让模型查询主机信息,例如运行 hostname 或 ls
- 02将脚本通过 stdin 传给 bash 或 python 执行
- 03在本地模型中通过命令行完成文件操作
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 run_process 工具,用于在宿主机上执行命令并返回输出。它使用 STDIO 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
runProcess 工具
runProcess 工具可在主机上运行进程。有两种互斥的调用方式:
command_line(字符串)——通过系统默认 shell 执行(就像在bash/fish/pwsh等命令行中输入一样)。管道、重定向和变量展开等 shell 功能均可使用。argv(字符串数组)——直接调用可执行文件。argv[0]是可执行文件,其余部分是参数。不进行 shell 解析。
不能同时传入两者。工具会根据你提供的参数推断是否使用 shell。
如果你希望模型在系统上使用特定的 shell,可以在系统提示词中列出。或者也可以写在工具说明中,不过模型通常会更留意系统提示词中的示例。
如果遇到问题,请告诉我!
工具
工具供 LLM 调用。Claude Sonnet 3.5 可以智能地使用 run_process。初步测试也显示,Groq Desktop with MCP 和 llama4 模型的表现令人期待。
目前,一个命令即可统管一切!
run_process- 运行命令,例如hostname、ls -al或echo "hello world"等- 将
STDOUT和STDERR作为文本返回 - 可选的
stdin参数允许你的 LLM- 通过
STDIN将脚本传递给fish、bash、zsh、python等命令 - 使用
stdin中的文本通过cat >> foo/bar.txt创建文件
- 通过
- 将
警告
请谨慎指定要此服务运行的内容! 在 Claude Desktop 应用中,请使用
Approve Once(而非Allow for This Chat),以便审核每条命令;如果不信任该命令,请使用Deny。 权限由运行此服务的用户决定。 切勿使用sudo运行。
视频演示
提示词
提示词供用户添加到聊天记录中,例如通过 Zed 的斜杠命令(在其 AI Chat 面板中)
run_process- 根据命令输出生成一条提示词消息
- 供参考,这基本上是一次学习练习……我认为这是用户请求的工具调用。换句话说,它是一个用于运行命令并将输出传递给模型的模板!
开发
安装依赖项:
npm install
构建服务:
npm run build
开发时启用自动重新构建:
npm run watch
安装
要与 Claude Desktop 配合使用,请添加服务配置:
在 MacOS 上:~/Library/Application Support/Claude/claude_desktop_config.json
在 Windows 上:%APPDATA%/Claude/claude_desktop_config.json
Groq Desktop(测试版,macOS)使用 ~/Library/Application Support/groq-desktop-app/settings.json
使用已发布的 npm 包
已通过此工作流发布到 npm,包名为 mcp-server-commands
{
"mcpServers": {
"mcp-server-commands": {
"command": "npx",
"args": ["mcp-server-commands"]
}
}
}
使用本地构建版本(仓库检出)
请确保运行 npm run build
{
"mcpServers": {
"mcp-server-commands": {
// works b/c of shebang in index.js
"command": "/path/to/mcp-server-commands/build/index.js"
}
}
}
本地模型
- 大多数模型经过训练后,不会认为自己可以替你运行命令。
- 有时它们会毫不犹豫地使用工具……有时则需要我引导。
- 使用系统提示词或提示词模板,指示它们遵循用户请求,包括在不再次确认的情况下使用
run_processs。
- Ollama 是在本地运行模型的好方法(搭配 Open-WebUI)
# NOTE: make sure to review variants and sizes, so the model fits in your VRAM to perform well!
# Probably the best so far is [OpenHands LM](https://www.all-hands.dev/blog/introducing-openhands-lm-32b----a-strong-open-coding-agent-model)
ollama pull https://huggingface.co/lmstudio-community/openhands-lm-32b-v0.1-GGUF
# https://ollama.com/library/devstral
ollama pull devstral
# Qwen2.5-Coder has tool use but you have to coax it
ollama pull qwen2.5-coder
HTTP / OpenAPI
此服务使用 STDIO 传输。
对于 HTTP,请使用 mcpo 提供兼容 OpenAPI 的 Web 服务接口。
这可与 Open-WebUI 配合使用
uvx mcpo --port 3010 --api-key "supersecret" -- npx mcp-server-commands
# uvx runs mcpo => mcpo run npx => npx runs mcp-server-commands
# then, mcpo bridges STDIO <=> HTTP
警告
我曾短暂地将
mcpo与open-webui配合使用,请务必评估其安全风险。
日志记录
Claude 桌面应用会将日志写入 ~/Library/Logs/Claude/mcp-server-mcp-server-commands.log
默认情况下,只会记录重要消息(即错误)。
如果想查看更多消息,请在配置服务时将 --verbose 添加到 args 中。
顺便提一下,日志会写入 STDERR,因为 Claude Desktop 会将其路由到日志文件。
未来,我预计格式良好的日志消息会通过 STDIO 传输发送给 MCP 客户端(注意:不是 Claude Desktop 应用)。
调试
由于 MCP 服务通过 stdio 通信,调试可能颇具挑战。我们建议使用 MCP Inspector,它可通过包脚本运行:
npm run inspector
Inspector 会提供一个 URL,供你在浏览器中访问调试工具。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
