MCP 终端是一款基于MCP(模型上下文协议)的终端控制服务器,专门设计用于与大型语言模型(LLMs)和AI助手集成。它提供了一个标准化的接口,允许AI执行终端命令并获取输出结果。
<a href="https://glama.ai/mcp/servers/@sichang824/mcp-terminal"> <img width="380" height="200" src="https://gips3.baidu.com/it/u=1800515947,4293915869&fm=3081&app=3081&f=PNG?w=760&h=400" alt="终端 MCP 服务器" /> </a>English 中文
</div>如果尚未安装 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 并依次进入
偏好设置→常规→魔法,勾选 启用 Python API 选项,如下图所示:
我们提供了 Makefile 来简化常见操作:
# 安装基础依赖
make setup
# 安装 iTerm2 支持
make setup-iterm
# 安装开发依赖
make setup-dev
我们提供了 Docker 支持以快速部署 MCP 终端服务器:
# 构建 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 # 使用子进程控制器
使用 Docker 运行 MCP 终端服务器(默认 SSE 模式和子进程控制器):
# 直接运行
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 文件来自定义配置。
可以在 Claude 或其他支持 MCP 的 AI 中配置 Docker 容器作为 MCP 服务,使 Claude 或其他 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, apple script, subprocess)--mode 或 -m:指定服务器模式(stdio, sse)--host:指定 SSE 模式的主机地址--port 或 -p:指定 SSE 模式的端口--log-level 或 -l:指定日志级别MCP 终端可以无缝集成到 Claude Desktop,为 Claude 提供终端控制能力。
启动 MCP 终端服务器(在 STDio 模式下):
# 在一个终端窗口中运行
make run-stdio
配置 Claude Desktop 使用 MCP 服务器:
打开 Claude Desktop,然后:
测试集成:
在与 Claude 的对话中,现在可以请求 Claude 执行终端命令,例如:
如果集成不正常工作:
MCP 终端提供以下 MCP 函数:
执行终端命令并获取输出结果。
参数:
command (字符串):要执行的命令wait_for_output (布尔值,可选):是否等待并返回命令输出,默认为 truetimeout (整数,可选):等待输出的超时时间(秒),默认为 10返回:
success (布尔值):命令是否成功执行output (字符串,可选):命令的输出结果error (字符串,可选):如果命令失败,则返回错误消息return_code (整数,可选):命令的返回码warning (字符串,可选):警告信息获取终端信息。
参数:无
返回:
terminal_type (字符串):正在使用的终端类型platform (字符串):运行平台向文件中写入、追加或插入内容。
参数:
filepath (字符串):文件路径content (字符串):要写入的内容mode (字符串,可选):写入模式,可选值为 "overwrite"、"append" 或 "insert",默认为 "overwrite"position (整数,可选):使用 "insert" 模式时的插入位置create_dirs (布尔值,可选):如果目录不存在,是否创建目录,默认为 true返回:
success (布尔值):操作是否成功error (字符串,可选):如果操作失败,则返回错误消息filepath (字符串):操作的文件路径details (对象,可选):附加的操作详情MCP 终端允许执行任意终端命令,这可能会带来安全风险。在生产环境中使用时,应:
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文档。