进程执行工具

runProcess工具允许在主机上运行进程,支持通过命令行或直接可执行文件调用,适用于开发调试和自动化任务。

作者 By g0t4
本地部署 进程管理 命令行工具
GitHub

runProcess 工具

runProcess 该工具在主机上运行进程。调用它有两种互斥的方式:

  1. command_line (string)–通过系统的默认shell执行(就像键入 bash/fish/pwsh/等等)。Shell的特性,如管道、重定向和可变扩展,都能正常工作。
  2. argv (字符串数组)–直接可执行调用。 argv[0] 是可执行文件,其余是参数。没有外壳解释。

你不能两者都通过。该工具根据您提供的参数推断是否使用shell。

如果你想让你的模型在系统上使用特定的shell,我会在你的系统提示符中列出它们。或者,也许在你的工具说明中,尽管模型往往更关注系统提示中的示例。

如果你遇到问题,请告诉我!

工具

工具供LLM请求。克劳德·十四行诗3.5智能使用 run_process而且,初步测试显示了有希望的结果 带MCP的Groq桌面llama4 模型。

目前,只有一个命令可以统治所有人!

  • run_process -运行命令,即。 hostnamels -alecho "hello world" 等等

  • 退货 STDOUTSTDERR 以文本形式

  • 可选的 stdin 参数表示您的LLM可以

  • 传递脚本 STDIN 命令如下 fish, bash, zsh, python

  • 使用创建文件 cat >> foo/bar.txt 从文本中 stdin

[!警告] 请小心您要求此服务器运行的内容! 在Claude Desktop应用程序中,使用 Approve Once (不是 Allow for This Chat)因此,您可以查看每个命令,使用 Deny 如果你不信任这个命令。 权限由运行服务器的用户决定。 不要带着 sudo.

视频演练

YouTube Thumbnail

提示

提示用户在聊天记录中包括,即通过 Zed的斜线命令(在其AI聊天面板中)

  • run_process -使用命令输出生成提示消息

  • 仅供参考,这主要是一次学习练习。…我认为这是用户请求的工具调用。这是一种奇特的说法,它是一个运行命令并将输出传递给模型的模板!

发展

安装依赖项:

BASH``` 1npm install


构建服务器:


BASH```
1npm run build

对于自动重建的开发:

BASH``` 1npm 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服务器命令](https://www.npmjs.com/package/mcp-server-commands) 使用这个 [工作流](https://github.com/g0t4/mcp-server-commands/actions)


JSON```
1
2
3
4
5
6
7
8{
  "mcpServers": {
    "mcp-server-commands": {
      "command": "npx",
      "args": ["mcp-server-commands"]
    }
  }
}

使用本地构建(仓库签出)

一定要跑 npm run build

JSON``` 1 2 3 4 5 6 7 8{ “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)


SH```
1
2
3
4
5
6
7# 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

BASH``` 1 2 3uvx 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 Desktop应用程序将日志写入 `~/Library/Logs/Claude/mcp-server-mcp-server-commands.log`


默认情况下,只记录重要消息(即错误)。
如果您想查看更多消息,请添加 `--verbose` 到 `args` 在配置服务器时。


顺便说一句,日志被写入 `STDERR` 因为这是Claude Desktop发送到日志文件的路径。
在未来,我希望格式良好的日志消息能够被写在 `STDIO` 传输到MCP客户端(注意:不是Claude Desktop应用程序)。


### 调试


由于MCP服务器通过stdio进行通信,调试可能具有挑战性。我们建议使用 [MCP检查员](https://github.com/modelcontextprotocol/inspector),可作为包脚本使用:


BASH```
1npm run inspector

检查器将提供一个URL,用于访问浏览器中的调试工具。