MCP Terminal
STDIOTerminal control server designed for LLM and AI assistant integration.
Terminal control server designed for LLM and AI assistant integration.
MCP Terminal 是一个基于 MCP(Model Context Protocol)的终端控制服务器,专为与大型语言模型(LLM)和 AI 助手集成而设计。它提供了一个标准化的接口,使 AI 可以执行终端命令并获取输出结果。
English | 中文
如果您还没有安装 uv,可以通过以下命令安装:
# 在macOS上使用Homebrew brew install uv # 在其他平台上 pip install uv
克隆仓库并使用 uv 安装依赖:
# 克隆仓库 git clone https://github.com/yourusername/mcp-terminal.git cd mcp-terminal # 创建虚拟环境并安装基本依赖 uv venv source .venv/bin/activate # 在Windows上使用 .venv\Scripts\activate uv pip install -e . # 如果需要iTerm2支持 (仅限macOS) uv pip install -e ".[iterm]" # 如果需要开发工具(测试、代码格式化等) uv pip install -e ".[dev]"
注意:如需使用 iTerm2 控制器,必须在 iTerm2 设置中启用 Python API。
打开 iTerm2,依次进入
Preferences
→General
→Magic
,勾选 Enable Python API 选项,如下图所示:
我们提供了 Makefile 来简化常见操作:
# 安装基本依赖 make setup # 安装iTerm2支持 make setup-iterm # 安装开发依赖 make setup-dev
我们提供了 Docker 支持,可以快速部署 MCP Terminal 服务器:
# 构建 Docker 镜像 docker build -t mcp-terminal . # 运行 Docker 容器(SSE模式,端口8000) docker run -p 8000:8000 mcp-terminal
或者使用 docker-compose:
# 启动服务 docker-compose up -d # 查看日志 docker-compose logs -f # 停止服务 docker-compose down
有多种方式可以启动服务器:
# 使用Python直接运行(默认使用stdio模式和自动检测终端控制器) python mcp_terminal.py # 使用Makefile运行(stdio模式) make run-stdio # 使用Makefile运行(SSE模式) make run-sse # 使用指定控制器 make run-iterm # 使用iTerm2控制器 make run-applescript # 使用AppleScript控制器 make run-subprocess # 使用Subprocess控制器
使用 Docker 运行 MCP Terminal 服务器(默认使用 SSE 模式和 Subprocess 控制器):
# 直接运行 docker run -p 8000:8000 mcp-terminal # 使用自定义端口 docker run -p 9000:8000 mcp-terminal # 挂载当前目录(可访问本地文件) docker run -p 8000:8000 -v $(pwd):/workspace mcp-terminal
默认配置:
您可以通过修改 Dockerfile 或 docker-compose.yml 文件来自定义配置。
您可以将 Docker 容器配置为 MCP 服务,使 Claude 或其他支持 MCP 的 AI 可以直接使用容器化的工具。以下是在 Claude 配置文件中使用 Docker 容器作为 MCP 服务的示例:
{ "mcp": { "servers": { "terminal": { "command": "docker", "args": [ "run", "--rm", "-i", "--mount", "type=bind,src=${workspaceFolder},dst=/workspace", "mcp-terminal", "mcp-terminal", "--mode", "sse", "--host", "0.0.0.0", "--port", "8000" ] } } } }
这种配置允许:
${workspaceFolder}
变量将当前工作目录挂载到容器中--rm
标志确保容器使用后自动删除,保持环境清洁您可以根据需要定义多个不同的 MCP 服务容器,每个容器专注于特定的功能。
以下是 Claude Desktop 的配置示例:
{ "mcpServers": { "terminal": { "command": "/Users/ann/Workspace/mcp-terminal/.venv/bin/python", "args": [ "/Users/ann/Workspace/mcp-terminal/mcp_terminal.py", "--controller", "subprocess" ] } } }
服务器支持多种命令行选项:
python mcp_terminal.py --help
主要选项:
--controller
或 -c
:指定终端控制器类型(auto, iterm, applescript, subprocess)--mode
或 -m
:指定服务器模式(stdio, sse)--host
:指定 SSE 模式主机地址--port
或 -p
:指定 SSE 模式端口--log-level
或 -l
:指定日志级别MCP Terminal 可以与 Claude Desktop 无缝集成,为 Claude 提供终端控制能力。
启动 MCP Terminal 服务器(以 stdio 模式):
# 在一个终端窗口中运行 make run-stdio
配置 Claude Desktop 使用 MCP 服务器:
打开 Claude Desktop,然后:
测试集成:
在与 Claude 的对话中,你现在可以请求 Claude 执行终端命令,例如:
如果集成不正常工作:
MCP Terminal 提供以下 MCP 函数:
执行终端命令并获取输出结果。
参数:
command
(string):要执行的命令wait_for_output
(boolean, 可选):是否等待并返回命令输出,默认为 truetimeout
(integer, 可选):等待输出的超时时间(秒),默认为 10返回:
success
(boolean):命令是否成功执行output
(string, 可选):命令的输出结果error
(string, 可选):如果命令失败,返回错误信息return_code
(integer, 可选):命令的返回代码warning
(string, 可选):警告信息获取终端信息。
参数:无
返回:
terminal_type
(string):正在使用的终端类型platform
(string):运行平台写入、追加或插入内容到文件。
参数:
filepath
(string):文件路径content
(string):要写入的内容mode
(string, 可选):写入模式,可选值为 "overwrite"(覆盖)、"append"(追加)或 "insert"(插入),默认为 "overwrite"position
(integer, 可选):使用 "insert" 模式时的插入位置create_dirs
(boolean, 可选):如果目录不存在,是否创建目录,默认为 true返回:
success
(boolean):操作是否成功error
(string, 可选):如果操作失败,返回错误信息filepath
(string):操作的文件路径details
(object, 可选):额外的操作详情MCP Terminal 允许执行任意终端命令,这可能带来安全风险。在生产环境中使用时,应该:
mcp-terminal/
├── mcp_terminal.py # 入口点脚本
├── pyproject.toml # 项目配置和依赖
├── README.md # 项目文档
├── Makefile # 构建和运行命令
├── Dockerfile # Docker 构建配置
├── docker-compose.yml # Docker Compose 配置
├── src/
│ ├── __init__.py
│ └── mcp_terminal/
│ ├── __init__.py
│ ├── server.py # 主服务器实现
│ ├── controllers/
│ │ ├── __init__.py # 控制器工厂和导入
│ │ ├── base.py # 基础控制器接口
│ │ ├── subprocess.py # 通用子进程控制器
│ │ ├── applescript.py # AppleScript控制器
│ │ └── iterm.py # iTerm2 API控制器
│ └── tools/
│ ├── __init__.py
│ ├── terminal.py # 终端操作工具
│ └── file.py # 文件操作工具
└── tests/ # 测试目录
├── __init__.py
└── test_subprocess_controller.py
# 使用pytest运行所有测试 make test # 或者直接使用pytest pytest tests/
# 检查代码格式 make lint # 自动格式化代码 make format
欢迎贡献!请遵循以下步骤:
git checkout -b feature/amazing-feature
)git commit -m 'Add some amazing feature'
)git push origin feature/amazing-feature
)此项目采用 MIT 许可证 - 详情见LICENSE文件。