🚀 Poly MCP
Poly MCP 是一個全面的 MCP(模型上下文協議)服務器,涵蓋 11 個模塊的 73 種工具,包括文件系統操作、診斷、腳本編寫、時間管理、網絡實用工具、上下文處理、git 操作、用戶輸入、以代理為中心的版本控制、會話剪貼板以及文本/數據轉換。
🚀 快速開始
Poly MCP 支持兩種傳輸模式:stdio(默認)和 HTTP 服務器。
Stdio 模式(默認)
使用標準輸入/輸出運行服務器(原始 MCP 行為):
poly-mcp
服務器通過標準輸入/輸出上的 JSON-RPC 2.0 按照 MCP 協議進行通信。這對於管道命令或與期望標準輸入/輸出通信的工具集成很有用。
示例:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | poly-mcp
HTTP 服務器模式
在特定端口上作為 HTTP 服務器運行:
poly-mcp --server --port 3000
選項:
--server 或 -s - 啟用 HTTP 服務器模式
--port <PORT> 或 -p <PORT> - 綁定的端口(默認:3000)
--host <HOST> - 綁定的主機(默認:127.0.0.1)
使用示例:
poly-mcp --server
poly-mcp --server --port 8080
poly-mcp --server --host 0.0.0.0 --port 3000
HTTP 端點:
POST / 或 POST /jsonrpc - JSON-RPC 2.0 端點
GET /health - 健康檢查端點
示例 HTTP 請求:
curl -X POST http://localhost:3000/jsonrpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "fs_read",
"arguments": {"path": "/etc/hosts"}
}
}'
健康檢查:
curl http://localhost:3000/health
MCP 協議消息
初始化:
{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {}}
列出工具:
{"jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {}}
調用工具:
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "fs_read",
"arguments": {
"path": "/path/to/file.txt"
}
}
}
✨ 主要特性
1. 文件系統模塊
具備快照管理、搜索和批量編輯功能的高級文件和目錄操作:
- fs_read - 讀取文件內容(可選行範圍)
- fs_write - 將內容寫入文件(可選行範圍)
- fs_move - 移動文件或目錄
- fs_copy - 遞歸複製文件或目錄
- fs_create - 創建文件或目錄
- fs_delete - 刪除文件或目錄
- fs_move_desktop - 整理桌面目錄中的項目
- fs_find - 使用模式匹配搜索文件
- fs_ld - 詳細的目錄列表(如 ls -la)
- fs_stat - 獲取文件/目錄元數據
- fs_permissions - 獲取或設置 Unix 文件權限
- fs_watch - 監控文件/目錄更改
- fs_snapshot - 創建帶自動管理的時間戳備份
- fs_tree - 具有深度控制和模式過濾的可視化目錄樹
- fs_grep - 使用上下文行在文件中進行正則表達式內容搜索
- fs_tail - 讀取文件的最後 N 行
- fs_replace - 使用正則表達式在文件中進行批量查找/替換,並支持預運行
2. 診斷模塊
與語言無關的錯誤和警告檢測:
- diagnostics_get - 獲取文件或項目的錯誤/警告
- 自動檢測合適的診斷工具(cargo、tsc、eslint、pylint 等)
- 支持 Rust、TypeScript/JavaScript、Python、C/C++
- 將編譯器/代碼檢查器的輸出解析為結構化 JSON
3. 靜默模塊
Bash 腳本編寫和系統資源監控:
- silent_script - 執行帶有參數、環境變量和超時的 Bash 腳本
- silent_resources - 監控 GPU/RAM/CPU 使用情況,並提供詳細的進程信息
- 支持使用 nvidia-smi 進行 GPU 監控
- 按資源使用情況對進程進行過濾和排序
4. 時間模塊
時間管理、調度和計時:
- time_now - 以多種格式(Unix、ISO8601、RFC3339、自定義)獲取當前時間戳
- time_sleep - 以可配置的持續時間延遲執行
- time_schedule - 內存中的任務調度器,支持創建/取消/列出/狀態操作
- time_timezone - 在 IANA 時區之間轉換時間戳,列出可用時區
- time_stopwatch - 帶命名的秒錶,支持開始/停止/圈數/重置/狀態/列出操作
- time_timer - 倒計時計時器,支持檢查/取消/列出操作
- time_alarm - 按時間或偏移量設置鬧鐘,支持檢查/取消/列出操作
5. 網絡模塊
HTTP 請求和包註冊表查詢:
- net_fetch - 獲取 URL 並自動將 HTML 轉換為 Markdown
- net_cargo - 查詢 crates.io 獲取 Rust 包信息
- net_node - 查詢 npm 註冊表獲取 Node.js 包信息
- net_python - 查詢 PyPI 獲取 Python 包信息
- net_apt - 查詢 APT 包信息
- net_ping - 檢查網絡連接並提供統計信息
6. 上下文模塊
為大語言模型進行令牌計數和上下文管理:
- ctx_context - 跟蹤令牌使用情況(總數/已使用/剩餘)
- ctx_compact - 使用 zlib/gzip 算法壓縮文本
- ctx_remove - 清除上下文並重置使用情況
- ctx_token_count - 為各種大語言模型提供商(GPT - 4、Claude 等)計算令牌數
- ctx_memory_store - 在內存中存儲數據(進程生命週期內)
- ctx_memory_recall - 檢索存儲的數據
- ctx_estimate_cost - 估算 Anthropic、OpenAI、Ollama、GLM 的 API 成本
7. Git 模塊
通過 libgit2 進行完整的 git 操作:
- git_status - 顯示倉庫狀態,包括已暫存/未暫存/未跟蹤的文件
- git_diff - 以補丁格式查看更改
- git_commit - 創建提交
- git_branch - 列出、創建或刪除分支
- git_checkout - 切換分支或提交
- git_blame - 逐行顯示作者信息
- git_log - 查看提交歷史
- git_tag - 管理標籤(輕量級和帶註釋的)
8. 輸入模塊
用戶交互和通知:
- input_notify - 發送終端和桌面通知
- input_prompt - 交互式文本提示(終端或 MCP)
- input_select - 選擇菜單(終端或 MCP)
- input_progress - 顯示進度條
- input_clipboard_read - 從系統剪貼板讀取內容
- input_clipboard_write - 向系統剪貼板寫入內容
9. Gitent 模塊
以代理為中心的版本控制跟蹤:
- gitent_init - 初始化或連接到跟蹤會話
- gitent_status - 查看會話和未提交的更改
- gitent_track - 手動跟蹤文件更改(創建/修改/刪除/重命名)
- gitent_commit - 用消息提交跟蹤的更改
- gitent_log - 查看提交歷史
- gitent_diff - 以統一或結構化格式查看差異
- gitent_rollback - 回滾到上一次提交(默認預覽模式)
在 AI 代理操作期間跟蹤文件更改、創建提交、查看歷史記錄和執行回滾操作。
10. 剪貼板模塊
基於會話的複製/粘貼,支持標籤以節省令牌:
- clip_copy_file - 將文件中的文本(可選行範圍)複製到會話剪貼板並添加標籤
- clip_copy - 將任意文本直接複製到會話剪貼板並添加標籤
- clip_paste_file - 將帶標籤的內容粘貼到文件中(覆蓋/追加/前置/行替換)
- clip_paste - 檢索帶標籤的內容或列出所有存儲的條目及其元數據
- clip_clear - 清除一個或所有剪貼板條目
11. 轉換模塊
文本和數據處理實用工具:
- transform_diff - 比較兩個文本或文件,並以統一/內聯/統計輸出
- transform_encode - 對 base64、URL、十六進制、HTML 實體進行編碼/解碼
- transform_hash - 對文本或文件進行加密哈希(SHA256、SHA512、MD5、BLAKE3)
- transform_regex - 正則表達式操作:匹配、查找所有、替換、拆分、提取捕獲組
- transform_json - JSON 操作:美化、壓縮、驗證、查詢、合併、獲取鍵、扁平化
- transform_text - 文本轉換:大小寫轉換、排序/反轉/去重/修剪/編號行、換行、截斷、統計
- transform_archive - 創建、提取和列出 zip 和 tar.gz 存檔
📦 安裝指南
cargo add poly-mcp
💻 使用示例
讀取文件
{
"name": "fs_read",
"arguments": {"path": "/etc/hosts"}
}
讀取特定行範圍
{
"name": "fs_read",
"arguments": {
"path": "/var/log/app.log",
"lines": [[1, 10], [50, 60]]
}
}
寫入特定行範圍
{
"name": "fs_write",
"arguments": {
"path": "/tmp/config.txt",
"content": "# Header v2\nversion=2.0",
"lines": [[1, 2]]
}
}
創建快照
{
"name": "fs_snapshot",
"arguments": {
"path": "/important/project",
"max_snapshots": 5
}
}
運行診斷
{
"name": "diagnostics_get",
"arguments": {"path": "./src"}
}
執行 Bash 腳本
{
"name": "silent_script",
"arguments": {
"script": "#!/bin/bash\necho 'Hello World'\nls -la",
"timeout": 30
}
}
監控資源
{
"name": "silent_resources",
"arguments": {
"detailed": true,
"process_filter": "rust"
}
}
以 Markdown 格式獲取 URL
{
"name": "net_fetch",
"arguments": {
"url": "https://example.com",
"convert_to_markdown": true
}
}
獲取最新包版本
{
"name": "net_cargo",
"arguments": {
"crate_name": "tokio",
"action": "latest"
}
}
計算令牌數
{
"name": "ctx_token_count",
"arguments": {
"text": "Your text here",
"model": "gpt-4"
}
}
估算 API 成本
{
"name": "ctx_estimate_cost",
"arguments": {
"provider": "anthropic",
"model": "claude-3-opus",
"input_tokens": 1000,
"output_tokens": 500
}
}
Git 操作
{
"name": "git_status",
"arguments": {"path": "."}
}
{
"name": "git_commit",
"arguments": {
"message": "feat: add new feature",
"author_name": "Developer",
"author_email": "dev@example.com"
}
}
發送通知
{
"name": "input_notify",
"arguments": {
"title": "Build Complete",
"message": "Your project has been built successfully!",
"type": "both",
"urgency": "normal"
}
}
剪貼板操作
{
"name": "input_clipboard_write",
"arguments": {"content": "Hello from Poly MCP!"}
}
Gitent 操作
{
"name": "gitent_init",
"arguments": {"path": "./my-project"}
}
{
"name": "gitent_track",
"arguments": {
"path": "src/main.rs",
"change_type": "modify",
"content": "fn main() { println!(\"Updated\"); }",
"agent_id": "claude"
}
}
{
"name": "gitent_commit",
"arguments": {
"message": "Updated main function",
"agent_id": "claude"
}
}
{
"name": "gitent_log",
"arguments": {"limit": 10, "verbose": true}
}
{
"name": "gitent_rollback",
"arguments": {
"commit_id": "abc123...",
"execute": false
}
}
📄 許可證
本項目採用 MIT 許可證。
🤝 貢獻
歡迎貢獻代碼!請提交問題或拉取請求。