终端控制工具

通过Claude Desktop用自然语言控制终端命令执行的MCP服务器工具,实现自然语言到Shell命令的转换并在沙盒环境中执行。

  • by dixitharsh-arch
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 dixitharsh-arch/claude-terminal-mcp

使用说明

克劳德终端mcp

通过Claude Desktop用简单的英语控制您的终端。 在Claude中键入“创建一个名为project的文件夹”,就会发生。


这有什么作用

这是习俗 模型上下文协议(MCP) 连接Claude Desktop和本地终端的服务器。您可以自然地与Claude交谈,Claude会在您机器上的沙盒工作区内执行真正的shell命令。

没有切换标签。不记得命令。描述一下你想要什么。

You:    "Show me all the Python files in this folder"
Claude: runs → ls *.py  →  returns the output back to you

演示

📹 演示GIF即将推出--[观看此空间]


建筑

┌─────────────────────┐         stdio transport        ┌──────────────────────┐
│                     │  ──────────────────────────►   │                      │
│   Claude Desktop    │                                 │   MCP Server         │
│   (LLM + UI)        │  ◄──────────────────────────   │   (main.py)          │
│                     │         tool response           │                      │
└─────────────────────┘                                 └──────────┬───────────┘
                                                                   │
                                                                   │ subprocess
                                                                   ▼
                                                        ┌──────────────────────┐
                                                        │   workspace/         │
                                                        │   (sandboxed dir)    │
                                                        └──────────────────────┘

流量:

  1. 您在Claude Desktop中键入自然语言指令
  2. 克劳德决定打电话给 run_command MCP工具
  3. MCP服务器接收命令并通过以下方式执行 subprocess
  4. 输出返回给Claude,Claude在聊天中显示它

特征

  • 自然语言→ Shell 命令 通过克劳德的推理
  • 工作区沙盒 --命令仅在定义的目录中运行,防止意外的系统更改
  • 超时保护 --命令在30秒后被终止
  • stdout+stderr捕获 --全部输出返回给Claude
  • 最小代码库 --36行Python,易于扩展

快速开始

先决条件

1.克隆并安装

git clone https://github.com/dixitharsh-arch/claude-terminal-mcp.git
cd claude-terminal-mcp
pip install mcp
# or with uv:
uv pip install mcp

2.连接到克劳德桌面

打开您的Claude Desktop配置文件:

# macOS
~/Library/Application Support/Claude/claude_desktop_config.json

# Windows
%APPDATA%\Claude\claude_desktop_config.json

在里面添加这个 "mcpServers":

"terminal-server": {
  "command": "/Users/YOUR_USERNAME/.local/bin/uv",
  "args": [
    "run",
    "--with",
    "mcp[cli]",
    "mcp",
    "run",
    "/FULL/PATH/TO/main.py"
  ]
}

替换 YOUR_USERNAME 那么,这条路 重新启动克劳德桌面.

3.测试一下

打开克劳德桌面并尝试:

"Create a folder called test-project"
"List everything in this directory"
"Create a file called hello.txt with 'Hello World' inside"
"Where am I right now?"

交互示例

你说 命令已执行
“创建一个名为project的文件夹” mkdir project
“显示此处存在哪些文件” ls
“创建一个名为notes.txt的文件” touch notes.txt
“我现在在哪里?” pwd
“只显示Python文件” ls *.py

项目结构

claude-terminal-mcp/
├── main.py           # MCP server — all the logic (36 lines)
├── workspace/        # sandboxed execution directory
├── pyproject.toml    # project config
└── README.md

核心代码

from mcp.server.fastmcp import FastMCP
import subprocess, os

mcp = FastMCP("terminal-server")
WORKSPACE = os.path.expanduser("~/Desktop/mcp_server/workspace")

@mcp.tool()
def run_command(command: str) -> str:
    """Run a shell command inside the sandboxed workspace."""
    result = subprocess.run(
        command, shell=True, cwd=WORKSPACE,
        capture_output=True, text=True, timeout=30
    )
    return result.stdout + result.stderr

if __name__ == "__main__":
    mcp.run(transport="stdio")

路线图

  • []命令安全过滤器(阻止破坏性命令,如 rm -rf)
  • []文件读/写工具(read_file, write_file)
  • []目录导航(cd 国家支持)
  • []长时间运行的命令的流式输出
  • []跨平台支持(Windows cmd +PowerShell)
  • []打包为可安装的Python模块(pip install claude-terminal-mcp)

我为什么建造这个

MCP是一种新的开放协议,允许LLM以结构化的方式与本地工具通信。我构建这个模型是为了探索人工智能代理编排在实践中的实际情况——具体来说,LLM如何推理任务并将执行委托给后端系统。

结果是一个工作示例 LLM+工具使用+本地执行,用不到40行Python构建。


技术栈

Python · FastMCP · subprocess · uv · Claude Desktop


许可证

麻省理工学院——使用它,分叉它,建立在它之上。


Built by Harsh Dixit · LinkedIn