MCP ProcFS 服务器
 ](https://nodejs.org)
一个强大的 模型上下文协议(MCP) 用于读取和修改Linux的服务器 /proc 文件系统值。提供JSON-RPC(stdio)和服务器发送事件(SSE)接口,以及完整的Swagger API文档。
特点/特性
- 🔍 看起来像是一个放大镜的符号,没有具体的文字含义,但在网络语境中,它常被用来表示“查看”、“搜索”或“调查”的动作。所以,可以翻译为“🔍(查看/搜索/调查)”。 全面的ProcFS访问读写到
/proc文件系统 - 🎛️ 该符号通常代表“控制面板”或“仪表盘”,在中文中可直接翻译为“控制面板”或根据上下文具体翻译为相应的设备或界面名称。 系统监控CPU、内存、负载、网络和磁盘统计信息
- ⚙️(齿轮符号,通常表示机械、装置或设置等含义,在中文中没有直接对应的文字翻译,可保持原样或根据上下文解释为“齿轮”、“装置”等) Sysctl 管理读取并修改内核参数
- 🔧 修理工具、螺丝刀或类似工具的符号 过程控制监控和管理进程(优先级、亲和性、信号)
- 📡(卫星天线) 双协议通过stdio和HTTP(使用SSE)的JSON-RPC
- 📚 书籍/学习 完整的API文档交互式 Swagger UI
- 🔐 类型安全用TypeScript编写,带有全面的类型定义
- ✅ 已验证用于请求/响应验证的Zod模式
安装
来自 npm
npm install -g @mcp/procfs-server来自源头
git clone https://github.com/user/mcp-proc.git
cd mcp-proc
npm install
npm run build快速入门
JSON-RPC 服务器(标准输入输出)
# Start the MCP server on stdio
mcp-procfs
# Or with npm
npm start带有SSE的HTTP服务器
# Start HTTP server on port 3000
npm run start:sse
# Custom port
PORT=8080 npm run start:sse然后打开你的浏览器,访问:
- API 文档http://localhost:3000/api-docs(本地主机3000端口的API文档页面)
- SSE 端点http://localhost:3000/mcp/sse 翻译成中文可以是:“本地主机3000端口/mcp/sse路径”。不过,通常我们不会直接翻译这样的URL,而是根据上下文解释其含义,比如“这是访问本地服务器上3000端口的/mcp/sse资源的URL”。但在这里,按照您的要求,给出直译版本
- RPC 端点http://localhost:3000/mcp/rpc 翻译为中文是:“本地主机上的3000端口/mcp/rpc路径”。不过,通常我们不会直接翻译网址的格式,而是说明其含义或用途,比如“访问本地开发服务器的MCP RPC接口”。但按照您的要求,直接翻译网址格式就是上述内容
用法
作为MCP工具
在您的MCP客户端中进行配置(例如,Claude Desktop):
{
"mcpServers": {
"procfs": {
"command": "mcp-procfs"
}
}
}可用工具
系统信息
- 获取CPU信息获取详细的CPU信息
- 获取内存信息获取内存统计信息
- 获取负载平均值获取系统平均负载
- 获取网络统计信息获取网络接口统计信息
- 获取磁盘统计信息获取磁盘I/O统计信息
ProcFS 操作
- 读取proc文件系统从任意位置读取文件
/proc - \
write_procfs\可以翻译为“向 proc 文件系统写入”。这里,“write”表示写入操作,“procfs”是“proc 文件系统”的缩写,是 Linux 中用于访问内核数据结构的虚拟文件系统写入可写内容/proc文件
流程管理
- 获取进程信息获取详细的过程信息
- 列出进程列出所有进程ID
- 设置进程优先级更改进程的nice值
- 设置进程亲和性设置CPU亲和性
Sysctl 管理
- 读取sysctl配置读取内核参数
- \
write_sysctl\可以翻译为“写入sysctl配置”或“设置sysctl参数”。这里,“write”表示写入或设置,“sysctl”是Linux系统中用于配置内核参数的一个工具或接口。因此,整个短语可以理解为对sysctl配置进行写入或设置的操作修改内核参数 - list_sysctl(在中文中,这个术语通常不直接翻译,因为它是一个特定于系统配置或管理的命令或参数,但为了说明其含义,可以解释为“列出系统控制参数”)列出所有参数
示例:使用HTTP API
# Get CPU information
curl http://localhost:3000/api/cpu
# Get memory information
curl http://localhost:3000/api/memory
# Read a sysctl parameter
curl http://localhost:3000/api/sysctl/net.ipv4.ip_forward
# Write a sysctl parameter (requires permissions)
curl -X POST http://localhost:3000/api/sysctl \
-H "Content-Type: application/json" \
-d '{"key": "net.ipv4.ip_forward", "value": 1}'
# Get process information
curl http://localhost:3000/api/processes/1
# Read custom procfs file
curl "http://localhost:3000/api/procfs?path=sys/kernel/hostname"示例:使用 JSON-RPC
import { MCPProcFSServer } from '@mcp/procfs-server';
const server = new MCPProcFSServer();
await server.run();示例:直接使用库
import { ProcFSReader, ProcFSWriter } from '@mcp/procfs-server';
const reader = new ProcFSReader();
const writer = new ProcFSWriter();
// Get CPU info
const cpuInfo = await reader.getCPUInfo();
console.log(cpuInfo);
// Get memory info
const memInfo = await reader.getMemInfo();
console.log(memInfo);
// Read sysctl
const param = await writer.readSysctl('net.ipv4.ip_forward');
console.log(param);
// Write sysctl (requires root)
await writer.writeSysctl('net.ipv4.ip_forward', 1);API 文档
运行HTTP服务器时,完整的交互式API文档可在以下地址获取:
http://localhost:3000/api-docs(本地主机3000端口的API文档页面)
文档包括:
- 所有具有请求/响应模式的终端点
- 试用功能
- 示例请求和响应
- 认证要求
API 端点
| 方法 | 终点 | 描述 | ||
|---|---|---|---|---|
| GET | (在中文语境中,这通常表示“使用GET方法”,但直接翻译该单词保持原样,因为它是HTTP协议中的一个方法名,常用于网页请求中) /health | 健康检查 | ||
| GET | (在中文中,这通常直接对应为“获取”或“请求”,但在此上下文中,作为HTTP方法名,可保持原样或译为“GET请求”) /api/cpu | CPU信息 | ||
| GET | /api/memory | 内存信息 | ||
| GET | /api/load | 平均负载 | ||
| GET | /api/network | 网络统计 | ||
| GET | (GET请求) /api/disk | 磁盘统计信息 | ||
| GET | /api/procfs | 读取procfs文件 | ||
| 帖子 | /api/procfs | 写入procfs文件 | ||
| GET | (在中文语境下,这通常直接翻译为“GET方法”或“使用GET请求”,具体取决于上下文) /api/sysctl | 列出 sysctl 参数 | ||
| GET | /api/sysctl/:key | 读取sysctl参数 | ||
| 帖子 | /api/sysctl | 写入sysctl参数 | ||
| GET | (中文可译为:“获取”或“请求”) /api/processes | 列出所有进程 | ||
| GET | (HTTP方法,用于获取资源) /api/processes/:pid | 获取进程信息 | ||
| POST | (在中文中,这通常直接保留为“POST”,因为它是HTTP方法名,不直接翻译) /api/processes/:pid/priority | 设置进程优先级 | ||
| GET | (翻译为中文即) | GET 请求 | /mcp/sse | SSE 终点(或端点) |
| POST | (在中文语境下,通常可直接保留为“POST”,表示HTTP方法中的“提交”或“发布”,具体含义需根据上下文判断) /mcp/rpc | JSON-RPC 端点 |
MCP Resources(公司名,可译为):MCP资源公司
服务器公开了以下MCP资源:
procfs://cpuinfo- CPU信息procfs://meminfo- 内存信息procfs://loadavg- 平均负载procfs://net/dev- 网络统计procfs://diskstats- 磁盘统计信息
权限
某些操作需要提升权限:
- 只读操作大多数读取操作无需特殊权限即可执行
- 写操作需要适当的权限(通常是root权限)
- 流程管理某些操作需要CAP_SYS_NICE权限或root权限
- Sysctl 写入通常需要root权限或特定功能
以提升权限运行
# Run with sudo (not recommended for production)
sudo mcp-procfs
# Better: Use capabilities
sudo setcap cap_sys_nice,cap_sys_admin+ep $(which node)
mcp-procfs发展
设置
npm install
npm run build开发模式
npm run dev # Watch mode with hot reload测试
npm test # Run tests
npm run test:watch # Watch mode
npm run test:coverage # Coverage reportLinting(在编程领域,通常指代码检查或代码规范化的过程)
npm run lint # Check code
npm run format # Format code建筑学
mcp-proc/
├── src/
│ ├── lib/
│ │ ├── procfs-reader.ts # ProcFS reading logic
│ │ └── procfs-writer.ts # ProcFS writing logic
│ ├── types/
│ │ ├── procfs.ts # ProcFS type definitions
│ │ ├── mcp.ts # MCP protocol types
│ │ └── schemas.ts # Zod validation schemas
│ ├── server.ts # MCP JSON-RPC server
│ ├── server-sse.ts # HTTP/SSE server
│ ├── cli.ts # JSON-RPC CLI entry
│ ├── cli-sse.ts # HTTP/SSE CLI entry
│ └── index.ts # Main exports
├── scripts/
│ ├── setup.sh # Setup script
│ ├── build.sh # Build script
│ └── release.sh # Release script
└── tests/ # Test files技术栈
- 运行时Node.js 18及以上版本
- 语言TypeScript
- 验证佐德
- 网络框架快递
- 文档Swagger/OpenAPI
- MCP SDK(MCP软件开发工具包)@modelcontextprotocol/sdk
- 测试是(Jest,此处可能作为动词或特定语境下的表达使用,直译为“是”,具体含义需结合上下文理解)
安全考量
⚠️ 重要的安全注意事项:
- 这台服务器提供直接访问系统资源的途径
- 写操作可能会影响系统行为
- 始终以最低必要权限运行
- 考虑对不信任的客户端使用只读模式
- 为生产环境部署实施身份验证
- 监控并记录所有写入操作
做出贡献
欢迎投稿!请:
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支
- 在测试中进行更改
- 提交拉取请求
许可证
MIT 许可证 - 请参阅 许可证 文件中详述
资源
支持
- 问题:
- 讨论:
更新日志
见 CHANGELOG.md(中文可译为“变更日志文件”) 用于版本历史。
______________________________________________________________________
为MCP社区用心打造
