MCP完全实战指南:基于Python搭建本地系统监控服务,让Claude/Cursor实时读取本机CPU/内存/磁盘(完整可运行代码)

📅 2026/7/19 18:24:40 👁️ 阅读次数 📝 编程学习
MCP完全实战指南:基于Python搭建本地系统监控服务,让Claude/Cursor实时读取本机CPU/内存/磁盘(完整可运行代码)

本文所有代码仅用于个人本地开发调试学习,MCP服务可读取本机硬件、磁盘敏感信息,存在隐私泄露风险,请严格遵守以下规范:

  1. 仅在个人本机运行,禁止将MCP服务通过网络、公网分享给任何第三方;
  2. 如需对外提供能力,必须增加权限白名单、数据脱敏、访问日志审计;
  3. 不得利用本教程开发工具远程监控他人电脑、窃取设备运行数据;
  4. 所有操作遵守《网络安全法》《个人信息保护法》,违规使用产生的法律责任由使用者自行承担。

一、前言

日常使用Claude Desktop、Cursor、VS Code AI插件时,大模型只能读取对话内粘贴的文本内容,无法主动获取本机运行状态:查看CPU负载、内存占用、磁盘剩余空间都需要手动打开终端复制数据发给AI,效率极低。

造成该限制的核心原因:AI客户端天然隔离本地系统环境,无法直接调用本机硬件、文件相关接口。
MCP(Model Context Protocol,模型上下文协议)是Anthropic开源的标准化通信协议,被称作AI生态的USB-C通用接口,统一打通AI客户端与本地数据源、工具的通信通道。

本文从零实现一套系统监控MCP Server,AI可一键查询本机CPU、内存、磁盘使用情况,完整覆盖环境部署、代码开发、官方调试工具、Claude客户端接入全流程,新手3分钟即可跑通。

适用场景

  • 本地开发时,AI实时监控电脑负载,辅助判断程序内存泄漏
  • 自动化运维脚本配套,让AI根据磁盘占用自动给出清理建议
  • 本地项目调试,无需切换终端,直接对话获取系统状态

二、MCP核心概念通俗讲解

MCP体系分为三大核心角色,三者分工明确、完全解耦:

  1. MCP协议(通用通信标准)
    类比HTTP协议,提供统一JSON-RPC通信规范,无论本地文件、数据库、系统接口,都能通过同一套标准交互。
  2. MCP Server(数据翻译服务)
    本地运行小程序,封装系统/文件/数据库操作逻辑,将底层数据转换为AI可识别的结构化格式,是连接本地资源与AI的中间层。
  3. MCP Client(AI客户端)
    Claude Desktop、Cursor、VS Code MCP扩展等内置客户端,负责发起工具调用请求、接收服务返回数据,传递给大模型做分析。

一句话总结:MCP打破AI与本地电脑的信息孤岛,让AI从纯聊天工具,升级为可操作本机资源的自动化助手。

三、使用场景对比

无MCP传统方案

  1. 打开终端执行top/df -h查看系统状态
  2. 复制大段输出文本粘贴进对话窗口
  3. AI仅能分析粘贴片段,无法主动刷新实时数据

接入MCP后

直接对话发送指令:帮我查看当前电脑内存和磁盘占用情况,AI自动调用本地服务,实时获取结构化数据并分析负载风险。

四、环境准备(3分钟完成)

1. 版本要求

Python ≥ 3.9;Node.js ≥ 18(用于官方调试工具mcp-inspector)

# 校验Python版本python3--version# 校验Node版本node--version

2. 安装MCP官方SDK

# 带cli工具完整安装pipinstall"mcp[cli]"

3. 项目初始化

# 创建项目文件夹并进入mkdir~/mcp-system-monitorcd~/mcp-system-monitor

五、实操:编写系统监控MCP Server完整代码

新建server.py,内置注释、结构化JSON返回、负载状态判断:

""" 本地系统监控MCP Server 功能:获取CPU使用率、内存占用、磁盘存储空间 安全说明:仅本地stdio模式运行,禁止公网暴露 """frommcp.server.fastmcpimportFastMCPimportpsutilimportjson# 初始化MCP服务实例mcp=FastMCP("system-monitor",description="本机硬件状态监控工具,查询CPU、内存、磁盘实时使用数据")@mcp.tool()defget_cpu_info()->str:""" 获取本机CPU核心数、实时使用率、负载健康状态 """# 采集1秒CPU使用率usage=psutil.cpu_percent(interval=1)core_count=psutil.cpu_count()# 负载阈值判断status="⚠️ CPU负载较高,建议关闭闲置程序"ifusage>70else"✅ CPU负载正常"result={"cpu核心总数":core_count,"实时使用率(%)":usage,"运行状态":status}# 格式化JSON返回,便于AI解析阅读returnjson.dumps(result,ensure_ascii=False,indent=2)@mcp.tool()defget_memory_info()->str:""" 获取本机物理内存总容量、已用、可用空间、内存健康状态 """mem=psutil.virtual_memory()result={"总内存(GB)":round(mem.total/(1024**3),2),"已使用内存(GB)":round(mem.used/(1024**3),2),"可用内存(GB)":round(mem.available/(1024**3),2),"内存占用百分比(%)":mem.percent,"运行状态":"⚠️ 内存资源紧张,容易卡顿"ifmem.percent>80else"✅ 内存充足"}returnjson.dumps(result,ensure_ascii=False,indent=2)@mcp.tool()defget_disk_info()->str:""" 获取系统根目录磁盘总容量、已用、剩余空间、磁盘健康状态 """disk=psutil.disk_usage('/')result={"磁盘总容量(GB)":round(disk.total/(1024**3),2),"已占用空间(GB)":round(disk.used/(1024**3),2),"剩余可用空间(GB)":round(disk.free/(1024**3),2),"磁盘占用百分比(%)":disk.percent,"运行状态":"⚠️ 磁盘空间即将耗尽,请清理文件"ifdisk.percent>90else"✅ 磁盘空间充足"}returnjson.dumps(result,ensure_ascii=False,indent=2)if__name__=="__main__":# 默认stdio本地传输模式,仅本机客户端可连接mcp.run()

安装系统监控依赖psutil

pipinstallpsutil

六、启动服务与官方调试

1. 启动MCP服务

cd~/mcp-system-monitor python server.py

服务默认通过stdio标准流等待客户端连接,无网页端口输出。

2. 使用mcp-inspector可视化调试(官方工具)

无需配置AI客户端,本地图形化测试所有工具接口:

npx @modelcontextprotocol/inspector python server.py

执行后浏览器自动打开http://localhost:5173,操作步骤:

  1. 切换至Tools标签页,可查看get_cpu_info/get_memory_info/get_disk_info三个工具;
  2. 点击Execute执行工具,直接查看结构化JSON返回结果,快速验证代码是否正常运行。

七、Claude Desktop客户端接入(区分Mac/Windows路径)

Mac系统配置文件路径

~/Library/Application Support/Claude/claude_desktop_config.json

Windows系统配置文件路径

%APPDATA%\Claude\claude_desktop_config.json

写入配置JSON(替换为你本地server.py真实绝对路径):

{"mcpServers":{"system-monitor":{"command":"python","args":["/Users/xxx/mcp-system-monitor/server.py"],"env":{}}}}

配置完成后完全重启Claude Desktop,客户端自动加载MCP服务。

对话调用示例

重启后直接发送自然语言指令,AI自动调用监控工具:

  1. 查看整机负载:帮我查询当前电脑CPU、内存、磁盘全部状态
  2. 专项查看内存:看看我现在内存占用多少,有没有卡顿风险
  3. 磁盘空间检查:统计磁盘剩余空间,给出清理建议

八、社区成熟开箱即用MCP Server推荐

无需从零开发,一行命令快速部署,适配各类业务场景:

MCP Server名称核心功能启动命令
filesystem本地文件读写、目录检索npx @modelcontextprotocol/server-filesystem /自定义目录
postgres连接PostgreSQL数据库查询数据npx @modelcontextprotocol/server-postgres postgres://账号:密码@127.0.0.1:5432/库名
brave-search实时联网搜索公开资讯npx @modelcontextprotocol/server-brave-search
github读取仓库代码、查询提交记录npx @modelcontextprotocol/server-github
puppeteer浏览器页面自动化抓取内容npx @modelcontextprotocol/server-puppeteer

九、MCP核心价值总结

  1. 彻底解耦:AI客户端与本地数据源完全分离,更换Cursor、Claude、VS Code无需重写工具代码;
  2. 标准化开发:一套MCP Server兼容全平台支持MCP的AI工具,一次开发多处复用;
  3. 本地隐私优先:所有数据、系统信息仅在本机流转,不会上传第三方模型服务器,隐私可控;
  4. 低成本扩展:仅用@mcp.tool()装饰器即可新增任意本地工具,开发门槛极低。

新手行动路线

  1. 入门:使用官方filesystem文件服务,快速体验MCP能力;
  2. 进阶:参考本文system-monitor模板,自定义专属本地工具;
  3. 生产:增加权限白名单、数据脱敏、操作日志,用于日常自动化工作流。

十、常见踩坑FAQ

Q1:Claude识别不到MCP服务?
A:1. 检查python绝对路径是否正确;2. Windows/Mac配置文件路径区分,不要混用;3. 修改配置后必须完整重启客户端;4. 确认mcp SDK版本为最新稳定版。

Q2:执行工具返回空数据/报错?
A:本地运行python server.py单独启动,查看终端报错日志;确认psutil依赖正常安装。

Q3:能否把MCP服务分享给局域网其他电脑?
A:不建议,原生stdio模式仅本地使用;如需网络访问需切换HTTP传输,并增加身份校验、权限过滤,否则存在隐私泄露风险。

Q4:Windows运行路径报错?
A:路径使用双反斜杠C:\\code\\mcp-system-monitor\\server.py,或原始字符串r路径。

十一、生产环境安全优化建议

  1. 增加访问白名单:限定仅允许读取指定磁盘分区,禁止读取系统敏感目录(/etc、C:\Windows等);
  2. 数据脱敏:过滤磁盘路径中的用户名、密钥配置文件路径;
  3. 操作日志留存:记录每一次工具调用时间、请求参数,方便审计;
  4. 关闭公网端口:仅使用stdio本地模式,不开启Streamable HTTP局域网/公网访问;
  5. 限制调用频率:增加延时,防止AI高频轮询读取系统资源。

本文基于Python MCP SDK v1.x稳定版本编写,接口若发生变更请以项目GitHub官方文档为准。