MCP Terminal Server
MCP 终端服务器
一个实现了模型上下文协议 (MCP) 的安全终端执行服务器。该服务器提供受控的命令执行功能,并具有安全功能和资源限制。
特征
命令执行:执行带有输出捕获和错误处理的 shell 命令
安全控制:限制允许的命令并防止命令注入
资源控制:
命令超时
最大输出大小限制
MCP 协议支持:
标准 MCP 消息格式
能力广告
流输出支持
Related MCP server: MCP Terminal
发展
本地设置
# Clone the repository
git clone https://github.com/RinardNick/mcp-terminal.git
cd mcp-terminal
# Create and activate virtual environment using uv
uv venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
# Install development dependencies
uv pip install -e ".[dev]"发布到 PyPI
# Build the package
uv pip install build
python -m build
# Upload to PyPI
uv pip install twine
python -m twine upload dist/*使用 MCP Inspector 进行测试
MCP Inspector 工具可用于测试服务器实现:
# Install inspector
npm install -g @modelcontextprotocol/inspector
# Test server
npx @modelcontextprotocol/inspector python3 src/mcp_terminal/server.py --allowed-commands "python,pip,git,ls,cd"运行测试
# Run all tests
pytest tests/
# Run specific test file
pytest tests/test_terminal.py
# Run with coverage
pytest --cov=mcp_terminal tests/与 Claude Desktop 一起使用
一旦包发布到 PyPI:
安装 UV (如果尚未安装):
pip install uv使用 UV 安装包:
uv pip install mcp-terminal配置 Claude Desktop :编辑您的 Claude Desktop 配置文件(在 macOS 上通常位于
~/Library/Application Support/Claude/claude_desktop_config.json):{ "mcpServers": { "terminal": { "command": "uv", "args": [ "pip", "run", "mcp-terminal", "--allowed-commands", "python,pip,git,ls,cd", "--timeout-ms", "30000", "--max-output-size", "1048576" ] } } }
协议实现
服务器实现了具有以下功能的模型上下文协议(MCP):
能力广告
{
"protocol": "1.0.0",
"name": "terminal",
"version": "1.1.0",
"capabilities": {
"execute": {
"description": "Execute a terminal command",
"parameters": {
"command": {
"type": "string",
"description": "The command to execute"
}
},
"returns": {
"type": "object",
"properties": {
"exitCode": { "type": "number" },
"stdout": { "type": "string" },
"stderr": { "type": "string" },
"startTime": { "type": "string" },
"endTime": { "type": "string" }
}
}
}
}
}消息格式
要求:
{
"type": "execute",
"data": {
"command": "echo 'hello world'"
}
}回复:
{
"type": "result",
"data": {
"command": "echo 'hello world'",
"exitCode": 0,
"stdout": "hello world\n",
"stderr": "",
"startTime": "2024-01-20T12:34:56.789Z",
"endTime": "2024-01-20T12:34:56.790Z"
}
}错误:
{
"type": "error",
"data": {
"message": "command not allowed"
}
}安全注意事项
命令验证:
只能执行允许的命令
Shell 操作员被阻止
阻止命令注入尝试
资源保护:
命令超时防止挂起
输出大小限制可防止内存耗尽
所有失败情况的错误处理
最佳实践:
在生产环境中始终设置
allowed-commands使用保守的超时和大小限制
监控命令执行日志
贡献
分叉存储库
创建你的功能分支(
git checkout -b feature/amazing-feature)提交您的更改(
git commit -m 'Add some amazing feature')推送到分支(
git push origin feature/amazing-feature)打开拉取请求
执照
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。
Available Tools
1 toolrun_commandC
Run a terminal command with security controls.
| Name | Required | Description | Default |
|---|---|---|---|
| allowedCommands | No | Optional list of allowed command executables | |
| command | Yes | The command to execute | |
| maxOutputSize | No | Maximum output size in bytes (default: 1MB) | |
| timeoutMs | No | Maximum execution time in milliseconds (default: 30 seconds) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While it mentions 'security controls' which suggests safety features, it doesn't specify what those controls are, what permissions are required, whether commands run in a sandbox, what happens on failure, or any rate limits. The description provides minimal behavioral context beyond the basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single sentence that communicates the core purpose and a key characteristic ('with security controls'). Every word earns its place, and there's no unnecessary verbiage or repetition. It's front-loaded with the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a command execution tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the tool returns (success/failure indicators, output format, error handling), doesn't detail the security controls mentioned, and provides minimal behavioral context. Given the potential complexity and risks of command execution, more completeness is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, so all parameters are documented in the structured schema. The description adds no additional parameter information beyond what's already in the schema descriptions. The baseline score of 3 is appropriate when the schema does the heavy lifting for parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Run') and resource ('a terminal command'), specifying it's for executing commands in a terminal environment. It adds the qualifier 'with security controls' which provides important context about the tool's nature. However, without sibling tools, it cannot demonstrate differentiation from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus other approaches or alternatives. It doesn't mention prerequisites, typical use cases, or scenarios where this tool would be preferred over direct terminal access or other execution methods. The 'security controls' mention hints at a context but doesn't provide explicit usage rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.0- First observed
run_command
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity or overlap between tools. The tool's purpose is clearly defined as running terminal commands with security controls, making it distinct by default.
The single tool follows a clear verb_noun pattern (run_command), which is consistent and predictable. Since there are no other tools to compare against, it inherently maintains perfect naming consistency.
A single tool for a terminal server is too few for the apparent scope, as terminal operations typically involve multiple actions (e.g., list files, navigate directories, monitor processes). This minimal set feels thin and incomplete for the domain.
The tool surface is severely incomplete for a terminal server domain. While run_command covers command execution, there are obvious gaps such as listing files, checking system status, or managing processes, which will likely cause agent failures in typical terminal workflows.
Maintenance
Related MCP Connectors
Termalin's hosted MCP server. Claude, ChatGPT or any MCP client runs commands, moves files over SFTP, queries databases and reads server metrics and monitoring alerts on your servers, keylessly through Termalin Connectors: no SSH key is handed over and no inbound port is opened. Per-host command policy and an audit log. Needs a termal.in Pro or Team account (new accounts start with a 14-day Pro trial).
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
1- FensoryOAuthcom.fensory
Trading MCP server for AI agents, with live market data, account reads and controlled execution.
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
Related MCP Servers
- AlicenseAqualityAmaintenanceA secure shell command execution server implementing the Model Context Protocol (MCP). This server allows remote execution of whitelisted shell commands with support for stdin input.1198MIT
- AlicenseCqualityCmaintenanceA server that enables AI assistants to execute terminal commands and retrieve outputs via the Model Context Protocol (MCP).326MIT
- AlicenseCqualityDmaintenanceA secure server that implements the Model Context Protocol (MCP) to enable controlled execution of authorized shell commands with stdin support.1MIT
- AlicenseBqualityCmaintenanceA secure Model Context Protocol server that allows AI assistants to execute terminal commands with controlled directory access and command permissions. It features a robust security architecture including whitelisting, session IDs, and categorized command levels to ensure safe system interaction.8MIT