🚀 MCP 控制檯自動化服務器
MCP 控制檯自動化服務器是一個生產就緒的模型上下文協議(MCP)服務器,它使 AI 助手能夠與控制檯應用程序進行全面交互,監控輸出、檢測錯誤並自動化終端工作流程,其工作方式類似於 Playwright 對 Web 瀏覽器的支持。

🚀 快速開始
MCP 控制檯自動化服務器為 AI 助手與控制檯應用程序的交互提供了強大支持。以下是快速開始使用該服務器的步驟。
✨ 主要特性
- 全面的終端控制:可同時創建和管理多個控制檯會話。
- 交互式輸入:發送文本輸入和特殊鍵序列(如 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
macOS/Linux
git clone https://github.com/ooples/mcp-console-automation.git
cd mcp-console-automation
chmod +x install.sh
./install.sh --target claude
手動安裝
git clone https://github.com/ooples/mcp-console-automation.git
cd mcp-console-automation
npm install --production
npm run build
📚 詳細文檔
配置
針對 Claude Desktop
將以下內容添加到 Claude Desktop 配置文件中:
- Windows:
%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 客戶端
mcp-console --log-level info
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(必需):會話 ID
input(必需):要發送的文本
console_send_key
向控制檯會話發送特殊鍵序列。
參數:
sessionId(必需):會話 ID
key(必需):要發送的鍵(如 enter、tab、up、down、ctrl+c、escape 等)
console_get_output
從控制檯會話中檢索輸出。
參數:
sessionId(必需):會話 ID
limit:要返回的最大輸出行數
console_wait_for_output
等待控制檯中出現特定的輸出模式。
參數:
sessionId(必需):會話 ID
pattern(必需):要等待的正則表達式模式
timeout:超時時間(毫秒,默認值:5000)
console_execute_command
執行命令並等待完成。
參數:
command(必需):要執行的命令
args:命令參數
cwd:工作目錄
env:環境變量
timeout:執行超時時間
console_detect_errors
分析控制檯輸出中的錯誤和異常。
參數:
sessionId:要分析的會話 ID
text:要分析的直接文本(如果不使用會話)
console_stop_session
停止活動的控制檯會話。
參數:
console_list_sessions
列出所有活動的控制檯會話。
console_resize_session
調整會話的終端尺寸。
參數:
sessionId(必需):會話 ID
cols(必需):列數
rows(必需):行數
console_clear_output
清除會話的輸出緩衝區。
參數:
使用場景
1. 運行和監控開發服務器
const session = await console_create_session({
command: "npm",
args: ["run", "dev"],
detectErrors: true
});
await console_wait_for_output({
sessionId: session.sessionId,
pattern: "Server running on",
timeout: 10000
});
const errors = await console_detect_errors({
sessionId: session.sessionId
});
2. 交互式調試會話
const session = await console_create_session({
command: "python",
args: ["-m", "pdb", "script.py"]
});
await console_send_input({
sessionId: session.sessionId,
input: "b main\n"
});
await console_send_input({
sessionId: session.sessionId,
input: "c\n"
});
await console_send_key({
sessionId: session.sessionId,
key: "n"
});
3. 帶錯誤檢測的自動化測試
const result = await console_execute_command({
command: "pytest",
args: ["tests/"],
timeout: 30000
});
const errors = await console_detect_errors({
text: result.output
});
if (errors.hasErrors) {
console.log("檢測到測試失敗:", errors);
}
4. 交互式 CLI 工具自動化
const session = await console_create_session({
command: "mysql",
args: ["-u", "root", "-p"]
});
await console_wait_for_output({
sessionId: session.sessionId,
pattern: "Enter password:"
});
await console_send_input({
sessionId: session.sessionId,
input: "mypassword\n"
});
await console_send_input({
sessionId: session.sessionId,
input: "SHOW DATABASES;\n"
});
錯誤檢測模式
服務器內置了用於檢測常見錯誤類型的模式:
- 通用錯誤(error:、ERROR:、Error:)
- 異常(Exception:、exception)
- 警告(Warning:、WARNING:)
- 致命錯誤
- 操作失敗
- 權限/訪問被拒絕
- 超時
- 堆棧跟蹤(Python、Java、Node.js)
- 編譯錯誤
- 語法錯誤
- 內存錯誤
- 連接錯誤
開發
從源代碼構建
npm install
npm run build
在開發模式下運行
npm run dev
運行測試
npm test
類型檢查
npm run typecheck
代碼檢查
npm run lint
架構
服務器採用以下技術構建:
- node-pty:用於創建和管理偽終端
- @modelcontextprotocol/sdk:MCP 協議實現
- TypeScript:提供類型安全和更好的開發體驗
- Winston:用於結構化日誌記錄
核心組件
- ConsoleManager:管理終端會話、輸入/輸出和生命週期
- ErrorDetector:分析輸出中的錯誤和異常
- MCP Server:通過 MCP 工具公開控制檯功能
- Session Management:處理多個併發控制檯會話
要求
- Node.js >= 18.0.0
- Windows、macOS 或 Linux 操作系統
- 無需額外的構建工具!
測試
運行包含的測試套件以驗證功能:
node test-functionality.js
故障排除
常見問題
- 權限被拒絕錯誤:確保服務器有權限生成進程。
- node-pty 編譯錯誤:安裝適用於您平臺的構建工具。
- 會話無響應:檢查命令是否需要 TTY 交互。
- 輸出未捕獲:某些應用程序可能直接寫入終端,繞過了 stdout。
貢獻
歡迎貢獻代碼!請隨時提交拉取請求。
- 分叉倉庫
- 創建您的功能分支 (
git checkout -b feature/AmazingFeature)
- 提交您的更改 (
git commit -m '添加一些驚人的功能')
- 推送到分支 (
git push origin feature/AmazingFeature)
- 打開拉取請求
🔧 技術細節
生產狀態 ✅
此服務器已完全準備好投入生產,具備以下特性:
- ✅ 無需本地編譯(移除了 node-pty 依賴)
- ✅ 全面的跨平臺支持(Windows、macOS、Linux)
- ✅ 對長時間運行的進程提供流式支持
- ✅ 支持多種控制檯類型(cmd、PowerShell、bash、zsh、sh)
- ✅ 資源管理和自動清理
- ✅ 全面的錯誤處理和恢復
- ✅ 為所有主要 MCP 客戶端提供簡單的安裝腳本
- ✅ 所有測試通過(請參閱 test-functionality.js)
📄 許可證
本項目採用 MIT 許可證 - 詳情請參閱 LICENSE 文件。
支持
如有問題、疑問或建議,請在 GitHub 上創建一個問題:
https://github.com/yourusername/mcp-console-automation/issues
路線圖
- [ ] 添加對終端錄製和回放的支持
- [ ] 實現會話持久化和恢復
- [ ] 為特定語言添加更多錯誤檢測模式
- [ ] 支持終端多路複用(tmux/screen 集成)
- [ ] 基於 Web 的終端查看器
- [ ] 會話共享和協作功能
- [ ] 性能分析工具
- [ ] 與流行的 CI/CD 系統集成