MCP控制台自动化服务器
生产准备就绪 模型上下文协议(MCP)服务器,使AI助手能够与控制台应用程序完全交互,监控输出,检测错误,并自动化终端工作流程——类似于Playwright在web浏览器上的工作方式。
](https://github.com/ooples/mcp-console-automation)  ](https://nodejs.org)
生产状态✅
此服务器是 完全生产就绪 与:
- ✅ 无需本机编译(删除了节点pty依赖关系)
- ✅ 完全跨平台支持(Windows、macOS、Linux)
- ✅ 对长时间运行的流程的流式支持
- ✅ 支持多种控制台类型(cmd、PowerShell、bash、zsh、sh)
- ✅ 资源管理和自动清理
- ✅ 全面的错误处理和恢复
- ✅ 适用于所有主要MCP客户端的简单安装脚本
- ✅ 所有测试均已通过(详见testfunctions.js)
特性
- 全终端控制:同时创建和管理多个控制台会话
- 交互输入:发送文本输入和特殊按键序列(Enter、Tab、Ctrl+C等)
- 实时输出监控:实时捕获和分析控制台输出
- 流媒体支持:长时间运行的流程的高效流式传输
- 多种控制台类型:支持cmd、PowerShell、bash、zsh、sh
- 自动错误检测:内置模式用于检测错误、异常和堆栈跟踪
- 会话管理:创建、停止和管理多达50个并发会话
- 资源管理:内存监控、自动清理、会话限制
- 命令执行:运行命令并等待超时支持完成
- 模式匹配:在继续之前,请等待特定的输出模式
- 跨平台:适用于Windows、macOS和Linux,无需本机依赖
快速安装
Windows(PowerShell作为管理员)
git clone https://github.com/ooples/mcp-console-automation.git
cd mcp-console-automation
.\install.ps1 -Target claude # or google, openai, custom, allmacOS/Linux
git clone https://github.com/ooples/mcp-console-automation.git
cd mcp-console-automation
chmod +x install.sh
./install.sh --target claude # or google, openai, custom, all手动安装
git clone https://github.com/ooples/mcp-console-automation.git
cd mcp-console-automation
npm install --production
npm run build配置
适用于克劳德桌面
添加到您的Claude Desktop配置文件中:
视窗: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"console-automation": {
"command": "npx",
"args": ["@mcp/console-automation"],
"env": {
"LOG_LEVEL": "info"
}
}
}
}对于其他MCP客户端
# Start the server
mcp-console --log-level info
# Or with npx
npx @mcp/console-automation --log-level info可用工具(共12个)
console_create_session
创建一个新的控制台会话来运行命令。
参数:
command(必填):要执行的命令args:命令参数数组cwd:工作目录env:环境变量对象detectErrors:启用自动错误检测(默认值:true)timeout:会话超时(毫秒)
例子:
{
"command": "python",
"args": ["script.py"],
"cwd": "/path/to/project",
"detectErrors": true
}console_send_input
将文本输入发送到活动控制台会话。
参数:
sessionId(必填):会话IDinput(必填):要发送的文本
console_send_key
将特殊按键序列发送到控制台会话。
参数:
sessionId(必填):会话IDkey(必填):发送键(enter、tab、up、down、ctrl+c、escape等)
console_get_output
从控制台会话中检索输出。
参数:
sessionId(必填):会话IDlimit:要返回的最大输出行数
console_wait_for_output
等待控制台中的特定输出模式。
参数:
sessionId(必填):会话IDpattern(必填):要等待的正则表达式模式timeout:超时时间(毫秒)(默认值:5000)
console_execute_command
执行命令并等待完成。
参数:
command(必填):执行命令args:命令参数cwd:工作目录env:环境变量timeout:执行超时
console_detect_errors
分析控制台输出的错误和异常。
参数:
sessionId:要分析的会话IDtext:直接分析文本(如果不使用会话)
console_stop_session
停止活动的控制台会话。
参数:
sessionId(必填):要停止的会话ID
console_list_sessions
列出所有活动的控制台会话。
console_resize_session
调整会话的端子尺寸。
参数:
sessionId(必填):会话IDcols(必填):列数rows(必填):行数
console_clear_output
清除会话的输出缓冲区。
参数:
sessionId(必填):会话ID
用例
1.运行和监视开发服务器
// Create a session for the dev server
const session = await console_create_session({
command: "npm",
args: ["run", "dev"],
detectErrors: true
});
// Wait for server to start
await console_wait_for_output({
sessionId: session.sessionId,
pattern: "Server running on",
timeout: 10000
});
// Monitor for errors
const errors = await console_detect_errors({
sessionId: session.sessionId
});2.交互式调试会话
// Start a Python debugging session
const session = await console_create_session({
command: "python",
args: ["-m", "pdb", "script.py"]
});
// Set a breakpoint
await console_send_input({
sessionId: session.sessionId,
input: "b main\n"
});
// Continue execution
await console_send_input({
sessionId: session.sessionId,
input: "c\n"
});
// Step through code
await console_send_key({
sessionId: session.sessionId,
key: "n"
});3.具有错误检测功能的自动化测试
// Run tests
const result = await console_execute_command({
command: "pytest",
args: ["tests/"],
timeout: 30000
});
// Check for test failures
const errors = await console_detect_errors({
text: result.output
});
if (errors.hasErrors) {
console.log("Test failures detected:", errors);
}4.交互式CLI工具自动化
// Start an interactive CLI tool
const session = await console_create_session({
command: "mysql",
args: ["-u", "root", "-p"]
});
// Enter password
await console_wait_for_output({
sessionId: session.sessionId,
pattern: "Enter password:"
});
await console_send_input({
sessionId: session.sessionId,
input: "mypassword\n"
});
// Run SQL commands
await console_send_input({
sessionId: session.sessionId,
input: "SHOW DATABASES;\n"
});错误检测模式
服务器包括用于检测常见错误类型的内置模式:
- 一般错误(错误:,错误:,误差:)
- 例外(例外:,例外)
- 警告(警告:,警告:)
- 致命错误
- 操作失败
- 权限/访问被拒绝
- 超时
- 堆栈跟踪(Python、Java、Node.js)
- 编译错误
- 语法错误
- 内存错误
- 连接错误
发展
从源头构建
npm install
npm run build以开发模式运行
npm run dev运行测试
npm test类型检查
npm run typecheck代码检查
npm run lint建筑
服务器由以下组件构建:
- 节点pty:用于创建和管理伪终端
- @模型上下文协议/sdk:MCP协议实施
- TypeScript:用于类型安全和更好的开发人员体验
- 温斯顿:用于结构化日志记录
核心组件
- 控制台管理器:管理终端会话、输入/输出和生命周期
- 错误检测:分析输出中的错误和异常
- MCP服务器:通过MCP工具公开控制台功能
- 会话管理:处理多个并发控制台会话
需求
- Node.js>=18.0.0
- Windows、macOS或Linux操作系统
- 无需额外的构建工具!
测试
运行附带的测试套件以验证功能:
node test-functionality.js故障排除
常见问题
- 权限被拒绝错误:确保服务器具有生成进程的权限
- 节点pty编译错误:为您的平台安装构建工具
- 会话未响应:检查命令是否需要TTY交互
- 未捕获输出:一些应用程序可以直接写入终端,绕过stdout
贡献
欢迎投稿!请随时提交拉取请求。
- 复刻仓库
- 创建功能分支(
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'Add some AmazingFeature') - 推到分支(
git push origin feature/AmazingFeature) - 打开拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件
支持
有关问题、疑问或建议,请在GitHub上打开问题: https://github.com/yourusername/mcp-console-automation/issues
路线图
- \[\]添加对终端录制和播放的支持
- \[\]实现会话持久性和恢复
- \[\]为特定语言添加更多错误检测模式
- \[\]支持终端复用(tmux/屏幕集成)
- \[\]基于Web的终端查看器
- \[\]会话共享和协作功能
- \[\]性能分析工具
- \[\]与流行的CI/CD系统集成
