用途
infra-mcp 是一个本地 stdio 模式的 MCP(模型上下文协议)服务器,专为本地部署(on-prem)的 Linux 虚拟机和 PostgreSQL 数据库提供只读诊断访问。它允许 AI 智能体通过 SSH 连接远程主机,检查服务健康状态、获取有界日志、查看数据库状态以及探索表结构,而无需为智能体提供终端访问权限。
主要能力
- 通过 SSH 对本地部署的 Linux VM 执行只读诊断操作。
- 检查 systemd 服务健康状态。
- 检索有界日志(服务端限制为 200 行日志)。
- 检查 PostgreSQL 数据库状态。
- 探索数据库表结构(最多 200 个表/列)。
- 所有远程操作均受白名单控制,并写入仅追加的审计日志。
- 所有输出均在服务端进行边界限制(200 行日志、100 行数据库记录、200 个表/列),截断时始终以
-- TRUNCATED:标记提示。 list_tables和describe_table的结果会缓存在内存中(TTL 由schema_cache_ttl_hours控制,默认 24 小时);传入refresh: true可强制实时重新读取。- SSH 命令和 systemd 服务在执行任何网络调用前,会先根据每个 VM 的白名单进行检查。
- 所有数据库查询均以只读角色在
READ ONLY事务中运行。 - 日志文件路径会根据每个 VM 的目录白名单进行解析(阻止
..路径遍历)。 - 每个远程操作都会追加到本地 JSONL 审计日志中。
使用方式
- 将
infra-mcp.yaml.example复制到~/.infra-mcp/infra-mcp.yaml并进行编辑。 - 可通过
--config或环境变量INFRA_MCP_CONFIG覆盖配置文件路径。 - 在客户端(如 Claude Code、Cursor 等)中注册为 stdio MCP 服务器,命令为
infra-mcp run。 - infra-mcp 每天会检查一次 PyPI 是否有新版本,如有新版本,会向 stderr 打印一行提示,告知如何升级。该检查在后台运行,不会阻塞启动,也不会触碰 stdout。
- 使用
infra-mcp --version打印已安装版本。 - 设置
INFRA_MCP_NO_UPDATE_CHECK=1可完全禁用更新检查。
适用场景
适用于需要对本地部署的 Linux 虚拟机和 PostgreSQL 数据库进行只读诊断的场景,例如检查服务运行状态、查看日志、验证数据库状态和表结构等。适合希望让 AI 智能体在无终端访问权限的情况下安全地执行运维诊断任务的团队。
限制
- 仅提供只读访问,不支持任何写入或修改操作。
- 远程操作受白名单限制,未列入白名单的命令、服务或路径无法执行或访问。
- 输出结果有服务端边界限制,超出部分会被截断并标记。
- 日志文件路径受目录白名单限制,无法访问白名单之外的路径。
- 关于具体的安装要求、支持的 Python 版本、依赖项以及许可证信息,资料中暂未提供。