返回市场
系统信息

系统信息

作者:dknell3 星标更新:2025-07-01

项目介绍

系统信息 MCP 服务器

这是一个提供实时系统信息和指标的模型上下文协议(MCP)服务器。该服务器通过标准化的MCP接口公开CPU使用情况、内存统计信息、磁盘信息、网络状态和运行进程。

功能

🛠️ 可用工具

  • get_cpu_info - 获取CPU使用率、核心数、频率和负载平均值
  • get_memory_info - 获取虚拟内存和交换内存统计信息
  • get_disk_info - 获取所有挂载点或特定路径的磁盘使用信息
  • get_network_info - 获取网络接口信息和I/O统计信息
  • get_process_list - 获取运行进程列表,并支持排序和过滤选项
  • get_system_uptime - 获取系统启动时间和运行时间信息
  • get_temperature_info - 获取温度传感器和风扇速度信息(如果可用)

📚 可用资源

  • system://overview - 包含所有指标的综合系统概述
  • system://processes - 当前进程列表资源

⭐ 关键特性

  • 实时指标,可配置缓存
  • 跨平台支持(Windows、macOS、Linux)
  • 注重安全,过滤敏感数据
  • 性能优化,智能缓存
  • 全面错误处理
  • 环境变量配置

安装

使用 uvx(推荐)

安装并使用此MCP服务器最简单的方法是通过uvx

uvx install mcp-system-info

然后在您的MCP客户端(如Claude Desktop)中进行配置:

{
  "mcpServers": {
    "system-info": {
      "command": "uvx",
      "args": ["mcp-system-info"]
    }
  }
}

开发安装

本地开发:

  1. 克隆仓库:

    git clone <repository-url>
    cd mcp-system-info
    
  2. 安装依赖项:

    uv sync
    
  3. 运行服务器:

    uv run mcp-system-info
    

开发

项目结构

mcp-system-info/
├── src/
│   └── system_info_mcp/
│       ├── __init__.py
│       ├── server.py          # 主FastMCP服务器
│       ├── tools.py           # 工具实现
│       ├── resources.py       # 资源处理器
│       ├── config.py          # 配置管理
│       └── utils.py           # 工具函数
├── tests/                     # 综合测试套件
├── pyproject.toml            # 项目配置
└── README.md

开发设置

  1. 安装开发依赖项:

    uv sync --dev
    
  2. 运行测试:

    uv run pytest
    
  3. 带覆盖率运行测试:

    uv run pytest --cov=system_info_mcp --cov-report=term-missing
    
  4. 格式化代码:

    uv run black src/ tests/
    
  5. 检查代码:

    uv run ruff check src/ tests/
    
  6. 类型检查:

    uv run mypy src/
    

构建与发布

构建包

# 构建分发文件
uv build

这将在dist/目录下创建分发文件:

  • mcp_system_info-*.whl(轮子文件)
  • mcp_system_info-*.tar.gz(源码分发)

本地测试使用 uvx

发布前进行本地测试:

# 直接从轮子文件运行命令测试
uvx --from ./dist/mcp_system_info-*.whl mcp-system-info

# 带环境变量测试
SYSINFO_LOG_LEVEL=DEBUG uvx --from ./dist/mcp_system_info-*.whl mcp-system-info

发布到 PyPI

# 发布到 PyPI(需要 PyPI 账户和令牌)
uv publish

# 或者先发布到 TestPyPI
uv publish --repository testpypi

注意: 您需要:

  1. https://pypi.org 创建一个 PyPI 账户
  2. 在账户设置中生成一个 API 令牌
  3. 使用凭证配置 uv 或使用环境变量

环境配置

服务器支持通过环境变量进行配置:

核心设置

  • SYSINFO_CACHE_TTL - 缓存生存时间(秒,默认:5)
  • SYSINFO_MAX_PROCESSES - 返回的最大进程数(默认:1
  • SYSINFO_ENABLE_TEMP - 启用温度传感器(默认:true)
  • SYSINFO_LOG_LEVEL - 日志级别(默认:INFO)

传输配置

  • SYSINFO_TRANSPORT - 传输协议:stdiossestreamable-http(默认:stdio)
  • SYSINFO_HOST - HTTP 传输绑定的主机(默认:localhost)
  • SYSINFO_PORT - HTTP 传输绑定的端口(默认:8001)
  • SYSINFO_MOUNT_PATH - SSE 传输的挂载路径(默认:/mcp)

传输模式

1. STDIO(默认)

# 使用标准输入/输出 - 不使用网络端口
uv run mcp-system-info

2. SSE(服务器发送事件)

# 实时流传输的 HTTP 服务器
SYSINFO_TRANSPORT=sse SYSINFO_PORT=8001 uv run mcp-system-info
# 服务器将在 http://localhost:8001/mcp 上可用

3. Streamable HTTP

# 请求/响应的 HTTP 服务器
SYSINFO_TRANSPORT=streamable-http SYSINFO_PORT=9000 uv run mcp-system-info

完整示例:

SYSINFO_TRANSPORT=sse \
SYSINFO_HOST=0.0.0.0 \
SYSINFO_PORT=8001 \
SYSINFO_CACHE_TTL=10 \
SYSINFO_LOG_LEVEL=DEBUG \
uv run mcp-system-info

使用示例

工具使用

获取 CPU 信息

# 基本 CPU 信息
{
  "name": "get_cpu_info_tool",
  "arguments": {
    "interval": 1.0,
    "per_cpu": false
  }
}

获取进程列表

# 按内存使用量获取前10个进程
{
  "name": "get_process_list_tool", 
  "arguments": {
    "limit": 10,
    "sort_by": "memory",
    "filter_name": "python"
  }
}

获取磁盘信息

# 所有磁盘使用情况
{
  "name": "get_disk_info_tool",
  "arguments": {}
}

# 特定路径
{
  "name": "get_disk_info_tool",
  "arguments": {
    "path": "/home"
  }
}

资源使用

系统概述

# 请求综合系统概述
{
  "uri": "system://overview"
}

进程列表资源

# 获取顶级进程资源
{
  "uri": "system://processes" 
}

与 Claude Desktop 的集成

添加到 Claude Desktop

  1. 找到您的 Claude Desktop 配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. 添加 MCP 服务器配置:

使用 uvx(推荐)

{
  "mcpServers": {
    "system-info": {
      "command": "uvx",
      "args": ["mcp-system-info"],
      "env": {
        "SYSINFO_CACHE_TTL": "10",
        "SYSINFO_LOG_LEVEL": "INFO"
      }
    }
  }
}

本地开发

{
  "mcpServers": {
    "system-info": {
      "command": "uv",
      "args": [
        "--directory", 
        "/path/to/mcp-system-info", 
        "run", 
        "mcp-system-info"
      ],
      "env": {
        "SYSINFO_TRANSPORT": "stdio",
        "SYSINFO_CACHE_TTL": "10",
        "SYSINFO_LOG_LEVEL": "INFO"
      }
    }
  }
}

HTTP 传输(SSE)

{
  "mcpServers": {
    "system-info-http": {
      "command": "uvx",
      "args": ["mcp-system-info"],
      "env": {
        "SYSINFO_TRANSPORT": "sse",
        "SYSINFO_HOST": "localhost",
        "SYSINFO_PORT": "8001",
        "SYSINFO_MOUNT_PATH": "/mcp"
      }
    }
  }
}
  1. 重启 Claude Desktop 以加载新服务器。

使用 Claude

一旦配置完成,您可以要求 Claude:

  • "我的当前 CPU 使用率是多少?"
  • "显示使用最多内存的前10个进程"
  • "有多少磁盘空间可用?"
  • "我的系统运行时间是多少?"
  • "给我一个完整的系统概述"

测试

运行测试

# 运行所有测试
uv run pytest

# 运行带有详细输出的测试
uv run pytest -v

# 运行特定测试文件
uv run pytest tests/test_tools.py

# 运行带有覆盖率报告的测试
uv run pytest --cov=system_info_mcp --cov-report=html

测试结构

  • tests/test_config.py - 配置验证测试
  • tests/test_tools.py - 工具实现测试
  • tests/test_resources.py - 资源处理器测试
  • tests/test_utils.py - 工具函数测试

所有测试都使用模拟依赖项,以便在不同环境中一致且快速地执行。

性能考虑

  • 缓存: 智能缓存减少了系统调用并提高了响应时间
  • 可配置间隔: 根据需求调整缓存 TTL
  • 延迟加载: 温度传感器和其他可选功能仅在需要时加载
  • 异步支持: 基于 FastMCP 实现高效的异步操作

安全特性

  • 只读操作: 无系统修改能力
  • 敏感数据过滤: 命令行参数过滤密码、令牌等
  • 输入验证: 处理前验证所有参数
  • 错误隔离: 一个工具的失败不会影响其他工具

平台支持

  • macOS - 全面支持,包括受支持硬件上的温度传感器
  • Linux - 全面支持,传感器可用性取决于硬件
  • Windows - 全面支持,具有特定平台的优化

故障排除

常见问题

  1. 权限错误: 获取某些系统信息可能需要提升的权限
  2. 缺少传感器: 温度/风扇数据可用性因硬件而异
  3. 性能影响: 减少缓存 TTL 或限制进程计数以提高性能

调试模式

启用调试日志以进行故障排除:

SYSINFO_LOG_LEVEL=DEBUG uv run mcp-system-info

验证安装

测试工具是否正确工作:

uv run python -c "from system_info_mcp.tools import get_cpu_info; print(get_cpu_info())"

贡献

  1. 分叉仓库
  2. 创建功能分支
  3. 带测试进行更改
  4. 运行完整测试套件
  5. 提交拉取请求

代码标准

  • 遵循 PEP 8 样式指南
  • 为所有函数添加类型提示
  • 为新功能编写测试
  • 根据需要更新文档

许可

[在此处添加您的许可信息]

支持

[在此处添加支持信息]