🚀 システム情報MCPサーバー
リアルタイムのシステム情報とメトリクスを提供するモデルコンテキストプロトコル(MCP)サーバーです。このサーバーは、CPU使用率、メモリ統計、ディスク情報、ネットワーク状態、および実行中のプロセスを標準化されたMCPインターフェースを通じて公開します。
🚀 クイックスタート
このMCPサーバーは、システムの様々な情報をリアルタイムで取得できます。以下のセクションでは、その機能、インストール方法、使用例などを詳しく説明します。
✨ 主な機能
🛠️ 利用可能なツール
get_cpu_info - CPU使用率、コア数、周波数、および負荷平均を取得します。
get_memory_info - 仮想メモリとスワップメモリの統計情報を取得します。
get_disk_info - すべてのマウントまたは特定のパスのディスク使用情報を取得します。
get_network_info - ネットワークインターフェース情報と入出力統計を取得します。
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"]
}
}
}
開発用インストール
ローカル開発用には、以下の手順を実行します。
-
リポジトリをクローンします:
git clone <repository-url>
cd mcp-system-info
-
依存関係をインストールします:
uv sync
-
サーバーを起動します:
uv run mcp-system-info
💻 使用例
基本的な使用法
CPU情報の取得
{
"name": "get_cpu_info_tool",
"arguments": {
"interval": 1.0,
"per_cpu": false
}
}
プロセスリストの取得
{
"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"
}
📚 ドキュメント
開発
プロジェクト構造
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
開発環境のセットアップ
-
開発用依存関係をインストールします:
uv sync --dev
-
テストを実行します:
uv run pytest
-
カバレッジレポート付きでテストを実行します:
uv run pytest --cov=system_info_mcp --cov-report=term-missing
-
コードを整形します:
uv run black src/ tests/
-
コードをリントします:
uv run ruff check src/ tests/
-
型チェックを実行します:
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への公開
uv publish
uv publish --repository testpypi
注意: 以下の手順が必要です。
- https://pypi.org でPyPIアカウントを作成します。
- アカウント設定でAPIトークンを生成します。
- uvに資格情報を設定するか、環境変数を使用します。
環境設定
サーバーは、環境変数を通じた設定をサポートしています。
コア設定
SYSINFO_CACHE_TTL - キャッシュの有効期限(秒)(デフォルト: 5)
SYSINFO_MAX_PROCESSES - 返す最大プロセス数(デフォルト: 100)
SYSINFO_ENABLE_TEMP - 温度センサーを有効にする(デフォルト: true)
SYSINFO_LOG_LEVEL - ログレベル(デフォルト: INFO)
トランスポート設定
SYSINFO_TRANSPORT - トランスポートプロトコル: stdio、sse、または streamable-http(デフォルト: stdio)
SYSINFO_HOST - HTTPトランスポートでバインドするホスト(デフォルト: localhost)
SYSINFO_PORT - HTTPトランスポートでバインドするポート(デフォルト: 8001)
SYSINFO_MOUNT_PATH - SSEトランスポートのマウントパス(デフォルト: /mcp)
トランスポートモード
1. STDIO(デフォルト)
uv run mcp-system-info
2. SSE(Server-Sent Events)
SYSINFO_TRANSPORT=sse SYSINFO_PORT=8001 uv run mcp-system-info
3. Streamable 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
Claude Desktopとの統合
Claude Desktopへの追加
-
Claude Desktopの設定ファイルを見つけます:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
-
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"
}
}
}
}
- 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 - ユーティリティ関数テスト
すべてのテストは、異なる環境で一貫した高速実行をするために、モック依存関係を使用しています。
パフォーマンスに関する考慮事項
- キャッシュ: インテリジェントキャッシュにより、システムコールが減少し、応答時間が改善されます。
- 設定可能な間隔: 必要に応じてキャッシュの有効期限を調整できます。
- 遅延読み込み: 温度センサーやその他のオプション機能は、必要なときにのみ読み込まれます。
- 非同期サポート: 効率的な非同期操作のためにFastMCPに基づいて構築されています。
セキュリティ機能
- 読み取り専用操作: システムを変更する機能はありません。
- 機密データのフィルタリング: コマンドライン引数からパスワード、トークンなどがフィルタリングされます。
- 入力検証: すべてのパラメータは処理前に検証されます。
- エラー分離: あるツールの失敗は他のツールに影響を与えません。
プラットフォームサポート
- macOS - 対応するハードウェアでは温度センサーを含む完全なサポート。
- Linux - ハードウェアに依存するセンサーの利用可能性を持つ完全なサポート。
- Windows - プラットフォーム固有の最適化を持つ完全なサポート。
トラブルシューティング
一般的な問題
- 権限エラー: 一部のシステム情報を取得するには、管理者権限が必要な場合があります。
- センサーがない: 温度/ファンデータの利用可能性はハードウェアによって異なります。
- パフォーマンスへの影響: キャッシュの有効期限を短くするか、プロセス数を制限することで、パフォーマンスを改善できます。
デバッグモード
トラブルシューティングのためにデバッグログを有効にします。
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())"
コントリビュート
- リポジトリをフォークします。
- 機能ブランチを作成します。
- テストを含めて変更を加えます。
- 完全なテストスイートを実行します。
- プルリクエストを送信します。
コード標準
- PEP 8スタイルガイドに従います。
- すべての関数に型ヒントを追加します。
- 新しい機能に対してテストを書きます。
- 必要に応じてドキュメントを更新します。
📄 ライセンス
[ここにライセンス情報を追加してください]
サポート
[ここにサポート情報を追加してください]