返回 MCP 目录
public公开dns本地运行

mcp

一个功能全面的MCP服务器,提供73个工具覆盖文件系统、诊断、脚本、时间管理、网络、上下文、Git操作、用户输入、版本控制、剪贴板和文本转换等11个模块。

article

README

🚀 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)

使用示例:

# 在默认端口 3000 上启动服务器
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 许可证。

🤝 贡献

欢迎贡献代码!请提交问题或拉取请求。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端