传统方式 | MCP 智能运维 |
需要记忆大量命令和参数 | 自然语言提问,AI 自动调用工具 |
手动逐台登录服务器 | 一个 MCP Server 管理多台主机 |
命令输出难以快速解读 | 结构化 JSON 输出,AI 自动分析 |
需要安装各种监控 Agent | 通过 SSH 远程执行,零侵入 |
排障流程依赖个人经验 | AI 内置运维实践指引 |

分类 | 工具名称 | 能力说明 |
系统信息 | get_system_info | 用于查询 OS 版本、内核版本、主机名、架构和运行时间等信息 |
| get_hardware_info | 用于查询 CPU、内存、磁盘等信息 |
服务管理 | get_service_info | 用于查询运行服务等信息 |
进程分析 | list_processes | 用于查询按 CPU 使用率排序的 Top N 进程列表等信息 |
日志查看 | get_journal_logs | 用于查询 systemd journal 日志信息(支持按时间/优先级/服务/关键词过滤) |
| get_system_messages | 用于查询系统消息日志信息(支持关键词过滤) |
网络诊断 | get_listening_ports | 用于查询系统监听端口信息 |
防火墙 | get_iptables_rules | 用于查询 iptables 防火墙规则信息(filter/nat/mangle/raw 四表,含规则编号与流量统计) |
性能分析 | get_perf_overview | 用于查询 CPU/内存/IO/网络四大维度综合性能信息 |
软件包 | get_package_info | 用于查询指定软件包的版本、架构、描述等信息 |
安全审计 | get_selinux_status | 用于查询 SELinux 状态及最近的 AVC 拒绝记录信息 |
| get_login_history | 用于查询登录成功/失败历史及安全告警信息 |
| get_updateinfo_security | 用于查询可用安全更新公告信息(yum/dnf 系发行版) |
内核管理 | get_sysctl_params | 用于查询内核参数信息(支持前缀过滤,如 `net.ipv4`) |
| list_kernel_modules | 用于查询已加载内核模块信息(支持名称过滤) |
eBPF 追踪 | get_ebpf_status | 用于查询 eBPF 追踪工具(nettrace/perf-prof)安装状态信息 |
| ebpf_trace | 用于追踪系统事件信息(tcp/bio/exec,基于内核原生接口,无需安装额外工具) |
网络追踪 | nettrace | 用于追踪网络数据包路径信息(基于 eBPF,需安装 nettrace) |
性能分析 | perf_prof | 用于分析系统性能瓶颈信息(基于 eBPF,需安装 perf-prof) |
分类 | 工具名称 | 能力说明 |
主机管理 | list_managed_hosts | 用于查询所有已纳管主机列表信息 |
| get_managed_host | 用于查询单个主机的详细信息 |
| test_managed_host | 用于测试主机 SSH 连通性信息(支持单台或批量测试) |
模式 | 说明 | 适用场景 |
basic | 精简模式(默认),每包 1~2 行 | 快速定位网络问题 |
life | 完整生命周期追踪,每包 14~22 行 | 深入分析数据包流转路径 |
drop | 丢包追踪(需 v1.2.9+) | 定位网络丢包位置和原因 |
diag | 诊断模式(需 v1.2.9+) | 综合网络故障诊断 |
max_packets 参数控制抓包数量(默认 50,上限 100),输出量可控分析类型 | 说明 | 典型用途 |
cpu | CPU 使用率分析(默认) | 定位 CPU 热点函数 |
syscall | 系统调用追踪 | 分析系统调用延迟 |
io | 磁盘 IO 延迟分析 | 定位 IO 瓶颈 |
mem | 内存分配分析 | 排查内存泄漏 |
sched | 调度延迟分析 | 分析进程调度问题 |
对比项 | stdio 模式 | Streamable HTTP 模式 |
适用场景 | 本地开发,客户端与服务在同一台机器 | 远程部署,多客户端共享 |
启动方式 | 客户端自动拉起进程,无需手动启动 | 需先在服务器上手动启动 HTTP 服务 |
Token 认证 | 不需要 | 必须配置 |
网络要求 | 无需网络 | 需要监听端口(默认 8001) |
SSH 远程管理 | 支持(通过本地 SSH 连接远程主机) | 支持 |
多客户端 | 不支持(一对一) | 支持(一对多) |

tencentos-mcp-server token generate
systemctl start tencentos-mcp-server
# 验证服务健康状态(HTTP 模式)curl http://127.0.0.1:8001/health
{"status": "healthy","version": "1.0.0","transport": "streamable-http","auth": "enabled","tools_count": 22}
{"mcpServers": {"tencentos": {"url": "http://<your server-ip>:8001/mcp","headers": {"Authorization": "Bearer <your-token>"}}}}
# 生成密钥(如果还没有,推荐使用 ed25519)ssh-keygen -t ed25519
# 分发公钥到目标主机(以198.51.100.10举例)ssh-copy-id root@198.51.100.10
# 添加主机(自动测试 SSH 连通性,以198.51.100.10举例)tencentos-mcp-server host add 198.51.100.10# 查看已添加的主机tencentos-mcp-server host list
"看一下这台机器的 CPU 和内存使用情况""有哪些服务是异常的?""帮我查一下最近有没有 OOM 事件""检查一下 SELinux 状态和最近的登录记录""用 nettrace 追踪一下 TCP 丢包""分析一下 198.51.100.10 上的磁盘 IO 性能"
帮我全面检查一下这台机器的健康状态
get_system_info :获取系统基本信息get_hardware_info :获取 CPU/内存/磁盘状态get_perf_overview :获取性能概览get_service_info :检查异常服务我的 Web 服务器 198.51.100.10 连接很慢,帮我排查一下
list_managed_hosts :确认主机已纳管get_listening_ports(host="198.51.100.10") :检查端口监听状态get_perf_overview(host="198.51.100.10") :检查资源使用nettrace(dport=80, host="198.51.100.10") :追踪网络包检查一下最近有没有可疑的登录行为
get_login_history(count=50, include_failed=True) :获取登录历史get_selinux_status :检查 SELinux 状态get_updateinfo_security :查看安全公告帮我分析一下哪个进程占用了最多的 CPU
list_processes :获取 Top N 进程get_perf_overview :获取性能概览perf_prof(profile_type="cpu", duration=5) :进行 CPU 热点分析查一下最近一小时的错误日志
get_journal_logs(priority="err", since="1 hour ago") :获取错误级别日志get_system_messages(grep="error") :搜索系统消息中的错误帮我看看所有纳管主机的连通性
list_managed_hosts :获取主机列表test_managed_host :批量测试连通性# HTTP 模式启动 指定端口tencentos-mcp-server serve --transport streamable-http --host 0.0.0.0 --port 8001# systemd 管理(部署包安装时使用 --enable-service)systemctl start tencentos-mcp-serversystemctl stop tencentos-mcp-serversystemctl restart tencentos-mcp-serversystemctl status tencentos-mcp-server# 查看安装信息tencentos-mcp-server info
# 生成 API Tokentencentos-mcp-server token generate# 强制重新生成(覆盖已有 Token)tencentos-mcp-server token generate --force# 撤销 Tokentencentos-mcp-server token revoke
# 添加主机(自动测试 SSH 连通性)tencentos-mcp-server host add 198.51.100.10# 列出所有纳管主机tencentos-mcp-server host list# JSON 格式输出tencentos-mcp-server host list --format json# 测试单台主机连通性tencentos-mcp-server host test 198.51.100.10# 批量测试所有主机tencentos-mcp-server host test-all# 删除主机tencentos-mcp-server host remove 198.51.100.10
/health 端点(无需 Token):curl http://127.0.0.1:8001/health
安全层面 | 措施 | 说明 |
操作安全 | 默认只读 | 所有 22 个工具均为只读操作,无任何写入或修改 |
输入安全 | 输入消毒 | 过滤 30+ 种危险字符(引号、制表符、glob、重定向、Unicode 控制字符等) |
| 参数转义 | 使用 shlex.quote 对所有参数值进行 POSIX shell 安全转义 |
| 白名单校验 | 枚举参数使用白名单校验;IP/端口/CPU 范围使用正则校验 |
| 路径遍历防护 | 禁止 .. 和特殊字符,防止目录穿越攻击 |
执行安全 | 命令长度限制 | 本地执行命令长度上限 4096 字符 |
| 环境变量清理 | 清理 LD_PRELOAD、IFS、BASH_ENV 等危险环境变量 |
| 超时进程清理 | 命令在独立进程组中执行,超时后回收整组进程 |
| Token 认证 | HTTP 模式 Bearer Token 鉴权,Token AES 加密存储 |
| TLS/HTTPS | 支持 SSL 证书配置,生产环境加密传输 |
传输安全 | 速率限制 | Token 级别 + 全局级别双重频率控制 |
连接安全 | SSH Host Key 验证 | 默认 TOFU 策略,首次信任并记录,后续验证防中间人攻击 |
| SSH 密钥认证 | 统一使用证书方案,不支持密码登录 |
数据安全 | 审计日志 | 所有工具调用记录到 JSONL 文件(含实际执行命令) |
| 配置文件保护 | Token 加密存储,密钥文件和配置文件权限自动设置为 600 |
客户端 | 配置文件路径 |
Cursor | .cursor/mcp.json(项目目录下) |
Claude Desktop (macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
Claude Desktop (Windows) | %APPDATA%\\Claude\\claude_desktop_config.json |
CodeBuddy | ~/.codebuddy/mcp.json |
{"mcpServers": {"tencentos": {"url": "http://<server-ip>:8001/mcp","headers": {"Authorization": "Bearer <your-token>"}}}}
<server-ip> 替换为服务器实际 IP,<your-token> 替换为 tencentos-mcp-server token generate 生成的 Token。ssh-copy-id root@<IP>ssh root@<IP>ls -la ~/.ssh/id_*(权限需 ≤ 600)tencentos-mcp-server host test <IP>tencentos-mcp-server host add 198.51.100.10 -p 36000
# 在目标主机上执行yum install nettrace
ebpf_trace 作为轻量级替代。systemctl restart tencentos-mcp-server
文档反馈