本文所有代码仅用于个人本地开发调试学习,MCP服务可读取本机硬件、磁盘敏感信息,存在隐私泄露风险,请严格遵守以下规范:
- 仅在个人本机运行,禁止将MCP服务通过网络、公网分享给任何第三方;
- 如需对外提供能力,必须增加权限白名单、数据脱敏、访问日志审计;
- 不得利用本教程开发工具远程监控他人电脑、窃取设备运行数据;
- 所有操作遵守《网络安全法》《个人信息保护法》,违规使用产生的法律责任由使用者自行承担。
一、前言
日常使用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体系分为三大核心角色,三者分工明确、完全解耦:
- MCP协议(通用通信标准)
类比HTTP协议,提供统一JSON-RPC通信规范,无论本地文件、数据库、系统接口,都能通过同一套标准交互。 - MCP Server(数据翻译服务)
本地运行小程序,封装系统/文件/数据库操作逻辑,将底层数据转换为AI可识别的结构化格式,是连接本地资源与AI的中间层。 - MCP Client(AI客户端)
Claude Desktop、Cursor、VS Code MCP扩展等内置客户端,负责发起工具调用请求、接收服务返回数据,传递给大模型做分析。
一句话总结:MCP打破AI与本地电脑的信息孤岛,让AI从纯聊天工具,升级为可操作本机资源的自动化助手。
三、使用场景对比
无MCP传统方案
- 打开终端执行
top/df -h查看系统状态 - 复制大段输出文本粘贴进对话窗口
- AI仅能分析粘贴片段,无法主动刷新实时数据
接入MCP后
直接对话发送指令:帮我查看当前电脑内存和磁盘占用情况,AI自动调用本地服务,实时获取结构化数据并分析负载风险。
四、环境准备(3分钟完成)
1. 版本要求
Python ≥ 3.9;Node.js ≥ 18(用于官方调试工具mcp-inspector)
# 校验Python版本python3--version# 校验Node版本node--version2. 安装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,操作步骤:
- 切换至Tools标签页,可查看
get_cpu_info/get_memory_info/get_disk_info三个工具; - 点击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自动调用监控工具:
- 查看整机负载:
帮我查询当前电脑CPU、内存、磁盘全部状态 - 专项查看内存:
看看我现在内存占用多少,有没有卡顿风险 - 磁盘空间检查:
统计磁盘剩余空间,给出清理建议
八、社区成熟开箱即用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核心价值总结
- 彻底解耦:AI客户端与本地数据源完全分离,更换Cursor、Claude、VS Code无需重写工具代码;
- 标准化开发:一套MCP Server兼容全平台支持MCP的AI工具,一次开发多处复用;
- 本地隐私优先:所有数据、系统信息仅在本机流转,不会上传第三方模型服务器,隐私可控;
- 低成本扩展:仅用
@mcp.tool()装饰器即可新增任意本地工具,开发门槛极低。
新手行动路线
- 入门:使用官方filesystem文件服务,快速体验MCP能力;
- 进阶:参考本文system-monitor模板,自定义专属本地工具;
- 生产:增加权限白名单、数据脱敏、操作日志,用于日常自动化工作流。
十、常见踩坑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路径。
十一、生产环境安全优化建议
- 增加访问白名单:限定仅允许读取指定磁盘分区,禁止读取系统敏感目录(/etc、C:\Windows等);
- 数据脱敏:过滤磁盘路径中的用户名、密钥配置文件路径;
- 操作日志留存:记录每一次工具调用时间、请求参数,方便审计;
- 关闭公网端口:仅使用stdio本地模式,不开启Streamable HTTP局域网/公网访问;
- 限制调用频率:增加延时,防止AI高频轮询读取系统资源。
本文基于Python MCP SDK v1.x稳定版本编写,接口若发生变更请以项目GitHub官方文档为准。