LibreNMS MCP について
LibreNMS MCP は、ネットワーク運用担当者や自動化システム向けに LibreNMS の照会・管理機能を提供する Python 製 MCP サーバーです。デバイス、ポート、アラート、ログ、ネットワーク状態を扱い、読み取り・書き込みと読み取り専用モードに対応します。
主な機能
- 01デバイス、ポート、インベントリの照会
- 02トポロジー、状態、メトリクスの確認
- 03アラート履歴とシステムログの取得
- 04デバイス、ポート、グループ、ルールの管理
- 05読み取り専用モードと一括操作
- 06ネットワークグラフを MCP 画像で返却
活用シーン
- 01デバイス状態、ポートトラフィック、アラートの調査
- 02MAC または IP による接続端末の検索
- 03ツールを使ったデバイスとアラート設定の管理
- 04MCP クライアントへの LibreNMS 監視データの提供
MCP 対応
LibreNMS の監視リソースと管理操作を MCP ツールとして公開し、デバイス、ポート、アラート、ログ、グラフなどを扱います。読み取り・書き込みに対応し、読み取り専用にも設定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx librenms-mcpLIBRENMS_URLLibreNMS instance URL (e.g., https://librenms.example.com)LIBRENMS_TOKENシークレットLibreNMS API token with appropriate permissionsLIBRENMS_VERIFY_SSLVerify TLS certificates for LibreNMS requests (true/false)LIBRENMS_TIMEOUTHTTP timeout for LibreNMS API requests in secondsREAD_ONLY_MODEEnable read-only mode to block write operationsDISABLED_TAGSComma-separated tool tags to disable (e.g., alerts,bills)LOG_LEVELLogging level (DEBUG, INFO, WARNING, ERROR)RATE_LIMIT_ENABLEDEnable per-client rate limiting (true/false)RATE_LIMIT_MAX_REQUESTSMaximum requests allowed per rate-limit windowRATE_LIMIT_WINDOW_MINUTESRate-limit window duration in minutesTOOL_SEARCH_ENABLEDEnable FastMCP tool search transformTOOL_SEARCH_STRATEGYTool search strategy: 'bm25' (natural language) or 'regex' (pattern match)TOOL_SEARCH_MAX_RESULTSMaximum number of tools returned by search_toolsMCP_HTTP_PORTPort for HTTP server (default: 8000)MCP_HTTP_BEARER_TOKENシークレットOptional bearer token for HTTP transport authenticationMCP_TRANSPORTMCP transport type: stdio, sse, or http (alias: streamable-http). Unknown values stop the server at startup.SENTRY_DSNシークレットSentry DSN for optional error trackingSENTRY_TRACES_SAMPLE_RATESentry traces sample rate (0.0-1.0)SENTRY_SEND_DEFAULT_PIIAllow Sentry to include default PII, including tool inputs and outputs, in events (true/false)SENTRY_ENVIRONMENTSentry environment name (e.g., production)SENTRY_RELEASESentry release identifierSENTRY_PROFILE_SESSION_SAMPLE_RATESentry profile session sample rate (0.0-1.0)SENTRY_PROFILE_LIFECYCLESentry profiling lifecycle modeSENTRY_ENABLE_LOGSEnable Sentry log capture integration (true/false)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
110掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | 返す結果の最大数 |
| order | any | いいえ | 出力の並べ替え方法。デフォルトはタイムスタンプの降順です。DESC または ASC を追加して順序を変更できます。任意。 |
| state | any | いいえ | 状態でアラートを絞り込みます:0 = 正常、1 = アラート、2 = 確認済み。任意。 |
| offset | integer | いいえ | ページネーションでスキップする結果数(オフセット) |
| severity | any | いいえ | 重大度でアラートを絞り込みます。有効な値:ok、warning、critical。任意。 |
| alert_rule | any | いいえ | アラートルール ID でアラートを絞り込みます。任意。 |
詳細
LibreNMS MCP Server
AI エージェントが Model Context Protocol を通じて LibreNMS のネットワーク監視を照会・管理できるようにします
LibreNMS MCP Server は、LibreNMS のネットワーク監視データと管理機能に対し、高度でプログラム可能なアクセスを提供するために設計された、Python ベースの Model Context Protocol(MCP)サーバーです。デバイス、ポート、アラート、インベントリ、ロケーション、ログなどの LibreNMS リソースを照会、自動化、統合するための最新の API を提供します。このサーバーは読み取り操作と書き込み操作の両方をサポートし、堅牢なセキュリティ機能を備え、自動化ツール、ダッシュボード、カスタムのネットワーク管理ワークフローとの統合に適しています。
✨ 機能
コア機能
- 柔軟なフィルタリングを使用して LibreNMS のデバイス、ポート、インベントリ、ロケーション、ログ、アラートを照会
- ネットワークトポロジ、デバイスのステータス、パフォーマンスメトリクスを取得
- アラート履歴、イベントログ、システムの健全性にアクセスして分析
- インターフェイスの統計情報、ポートのステータス、トラフィックデータを監視
- MAC アドレスまたは IP アドレスでエンドポイントと接続デバイスを追跡
- デバイスグループ、ポートグループ、ポーラーグループを取得・管理
- ネットワークサービスとルーティングの詳細情報を取得
管理操作
- デバイス、ポート、グループを作成、更新、削除(有効な場合)
- アラートルール、通知、デバイスのメタデータを管理
- 安全な監視のため、読み取り専用モードを設定してすべての書き込み操作を制限
- デバイスとポートの一括操作をサポート
高度な機能
- レート制限と API セキュリティ機能
- リアルタイムのネットワーク監視と健全性の追跡
- 包括的なロギングと監査証跡
- SSL/TLS サポートと設定可能なタイムアウト
- 大規模なツールカタログ向けのオプションのツール検索変換
- カスタムミドルウェアとユーティリティで拡張可能
🚀 インストール
前提条件
- Python 3.11 から 3.15
- LibreNMS へのアクセス
- 適切な権限を持つ有効な LibreNMS トークン
PyPI からのクイックインストール
最も簡単な開始方法は、PyPI からインストールすることです。
# Using UV (recommended)
uvx librenms-mcp
# Or using pip
pip install librenms-mcp
サーバーを実行する前に、LibreNMS インスタンスの環境変数を設定してください。
# Create environment configuration
export LIBRENMS_URL=https://domain.tld:8443
export LIBRENMS_TOKEN=your-librenms-token
詳細については、https://pypi.org/project/librenms-mcp/ をご覧ください。
ソースからインストール
- リポジトリをクローンします。
git clone https://github.com/mhajder/librenms-mcp.git
cd librenms-mcp
- 依存関係をインストールします。
# Using UV (recommended)
uv sync
# Or using pip
pip install -e .
- 環境変数を設定します。
cp .env.example .env
# Edit .env with your LibreNMS url and token
- サーバーを実行します。
# Using UV (recommended)
uv run librenms-mcp
# Or using the installed command directly
librenms-mcp
Docker の使用
簡単にデプロイできるよう、GitHub Packages で Docker イメージを利用できます。HTTP Streamable トランスポートをポート 8000(/mcp)で実行します。
docker pull ghcr.io/mhajder/librenms-mcp:latest
Open WebUI
Open WebUI 0.6.31 以降では、イメージに直接接続できます。独立した MCPO イメージ(ghcr.io/mhajder/librenms-mcpo)は、現在公開されていません。Open WebUI で、Admin Settings > Integrations > External Tool Servers に移動し、URL を http://<host>:8000/mcp に設定した MCP (Streamable HTTP) タイプの接続を追加して、Bearer 認証に MCP_HTTP_BEARER_TOKEN を設定します。
開発環境のセットアップ
追加のツールを使った開発の場合:
# Clone and install with development dependencies
git clone https://github.com/mhajder/librenms-mcp.git
cd librenms-mcp
uv sync --group dev
# Run tests
uv run pytest
# Run with coverage
uv run pytest --cov=src/
# Run linting and formatting
uv run ruff check .
uv run ruff format .
# Run type checking
uv run ty check .
# Setup pre-commit hooks
uv run prek install
🔧 設定
環境変数
ブール値の設定では、true/false、1/0、yes/no、on/off を大文字と小文字を区別せずに指定できます。これ以外の値を指定するとサーバーの起動が停止するため、入力ミスによって読み取り専用モードや TLS 検証が誤って無効になることはありません。例外として、SENTRY_SEND_DEFAULT_PII と SENTRY_ENABLE_LOGS については、SENTRY_DSN が設定されている場合に無効な値を指定するとエラーが記録され、Sentry はオフのままになりますが、サーバーは動作を続けます。
# LibreNMS Connection Details
LIBRENMS_URL=https://domain.tld:8443
LIBRENMS_TOKEN=your-librenms-token
# SSL Configuration
LIBRENMS_VERIFY_SSL=true
LIBRENMS_TIMEOUT=30
# Read-Only Mode
# Set READ_ONLY_MODE true to disable all write operations (put, post, delete)
READ_ONLY_MODE=false
# Disabled Tags
# Comma-separated list of tags to disable tools for (empty by default)
# Example: DISABLED_TAGS=alert,alert-rules,alert-templates,bills
DISABLED_TAGS=
# Logging Configuration
LOG_LEVEL=INFO
# Rate Limiting (requests per minute)
# Set RATE_LIMIT_ENABLED true to enable rate limiting
RATE_LIMIT_ENABLED=false
RATE_LIMIT_MAX_REQUESTS=100
RATE_LIMIT_WINDOW_MINUTES=1
# Tool Search Transform (Optional)
# Set TOOL_SEARCH_ENABLED true to replace full tool listings with search_tools + call_tool
TOOL_SEARCH_ENABLED=false
# Search strategy: bm25 (natural language) or regex (pattern match)
TOOL_SEARCH_STRATEGY=bm25
# Maximum number of tools returned by search_tools
TOOL_SEARCH_MAX_RESULTS=5
# Sentry Error Tracking (Optional)
# Set SENTRY_DSN to enable error tracking and performance monitoring
# SENTRY_DSN=https://[email protected]/6789
# Optional Sentry configuration
# SENTRY_TRACES_SAMPLE_RATE=1.0
# SENTRY_SEND_DEFAULT_PII=false
# SENTRY_ENVIRONMENT=production
# SENTRY_RELEASE=1.2.3
# SENTRY_PROFILE_SESSION_SAMPLE_RATE=1.0
# SENTRY_PROFILE_LIFECYCLE=trace
# SENTRY_ENABLE_LOGS=true
# MCP Transport Configuration
# Transport type: 'stdio' (default), 'sse' (Server-Sent Events), or 'http' (HTTP Streamable).
# 'streamable-http' is accepted as an alias for 'http'. Any other value stops the server at startup.
MCP_TRANSPORT=stdio
# HTTP Transport Settings (used when MCP_TRANSPORT=sse or MCP_TRANSPORT=http)
# Host to bind the HTTP server (default: 127.0.0.1)
# MCP_HTTP_HOST=127.0.0.1
# Port to bind the HTTP server (default: 8000)
# MCP_HTTP_PORT=8000
# Optional bearer token for authentication (leave empty for no auth)
# MCP_HTTP_BEARER_TOKEN=
🧰 利用可能なツール
デバイスとインベントリのツール
devices_list:すべてのデバイスを一覧表示します(任意のフィルターを指定できます)device_get:指定したデバイスの詳細を取得しますdevice_add:新しいデバイスを追加しますdevice_update:デバイスのメタデータを更新しますdevice_delete:デバイスを削除しますdevice_ports:デバイスのすべてのポートを一覧表示しますdevice_ports_get:デバイスの指定したポートの詳細を取得しますdevice_fdb:デバイスの転送データベース(学習済み MAC アドレス)を一覧表示しますdevice_nac:デバイスのネットワークアクセス制御(802.1X/MAB)セッションを一覧表示しますdevice_availability:デバイスの可用性を取得しますdevice_outages:デバイスの障害情報を取得しますdevice_set_maintenance:デバイスをメンテナンスモードに設定しますdevice_discover:指定した認証情報を使ってデバイスを検出または追加しますdevice_rename:既存のデバイスの名前を変更しますdevice_maintenance_status:デバイスのメンテナンス状態を取得しますdevice_vlans:デバイスの VLAN を一覧表示しますdevice_links:デバイスのリンクを一覧表示しますdevice_wireless_sensors:ワイヤレスセンサー(周波数、クライアント数、RSSI など)の現在値を一覧表示しますdevice_parents_set:デバイスの依存関係の親を設定します(現在の設定を置き換えます)device_parents_clear:デバイスの依存関係の親を削除しますdevice_eventlog_add:デバイスのイベントログエントリーを追加しますinventory_device:デバイスのインベントリを取得しますinventory_device_flat:デバイスのフラット形式のインベントリを取得しますdevicegroups_list:デバイスグループを一覧表示しますdevicegroup_add:デバイスグループを追加しますdevicegroup_update:デバイスグループを更新しますdevicegroup_delete:デバイスグループを削除しますdevicegroup_devices:デバイスグループ内のデバイスを一覧表示しますdevicegroup_set_maintenance:デバイスグループをメンテナンスに設定しますdevicegroup_add_devices:デバイスをデバイスグループに追加しますdevicegroup_remove_devices:デバイスグループからデバイスを削除しますlocations_list:すべてのロケーションを一覧表示しますlocation_add:ロケーションを追加しますlocation_edit:ロケーションを編集しますlocation_delete:ロケーションを削除しますlocation_get:ロケーションの詳細を取得しますlocation_set_maintenance:ロケーションをメンテナンスに設定します
ポートとポートグループのツール
ports_list:すべてのポートを一覧表示します(任意のフィルターを指定できます)ports_search:ポートを検索します(一般検索)ports_search_field:特定のフィールドでポートを検索しますports_search_mac:MAC アドレスでポートを検索しますport_get:指定したポートの詳細を取得しますport_fdb:ポートで学習された MAC アドレスを一覧表示しますport_ip_info:ポートの IP アドレス情報を取得しますport_transceiver:ポートのトランシーバー情報を取得しますport_description_get:ポートの説明を取得しますport_description_update:ポートの説明を更新しますport_groups_list:ポートグループを一覧表示しますport_group_add:ポートグループを追加しますport_group_list_ports:ポートグループ内のポートを一覧表示しますport_group_assign:ポートをポートグループに割り当てますport_group_remove:ポートグループからポートを削除します
ポートセキュリティツール
port_security_list:すべてのデバイスのポートセキュリティ設定を一覧表示しますport_security_device:デバイスのポートセキュリティ設定を取得しますport_security_port:単一ポートのポートセキュリティ設定を取得します
グラフツール
グラフは MCP 画像として返されます。ツールは LibreNMS に PNG を要求します。これにより、Claude などの MCP クライアントで表示できます(LibreNMS のデフォルトの webui.graph_type である SVG は、多くの場合表示できません)。要求を無視する LibreNMS リリースでは、代わりに webui.graph_type 形式でレンダリングされます。MIME タイプはレスポンスから取得されます。
device_graphs_list:デバイスで利用可能なグラフの種類を一覧表示しますdevice_graph:デバイスレベルのグラフをレンダリングします(例:device_icmp_perf)port_graph:インターフェース名でポートごとのグラフをレンダリングします(bits、upkts、nupkts、errors、etherlike。port_bitsなどの LibreNMS 名も使用できます)port_group_graph:ポート ID で 1 つ以上のポートのトラフィックグラフをレンダリングします
スラッシュ(Te2/7)を含むインターフェース名はパーセントエンコードして送信されますが、一部のリバースプロキシでは、エンコードされたスラッシュが拒否されたり、デコードされたりします。その場合、port_graph(bits の場合)と device_ports_get は、代わりにポート ID で再試行するため、そのようなプロキシの背後でも動作します。認証エラーは再試行されません。また、スラッシュを含まない名前については、LibreNMS 自身の「見つかりません」という応答がそのまま報告されます(スラッシュを含む名前は、デコードするプロキシによって誤ったパスに対する LibreNMS の「見つかりません」に変わる可能性があるため、常に再試行されます)。
パスにスラッシュを含む値を指定するその他のツール(ports_search、ports_search_field、0.0.0.0/0 などのプレフィックスを指定する oxidized_config_search、ロケーション名)には、このようなフォールバックはありません。LibreNMS が Apache の背後にある場合は、すべてのツールが動作するよう、エンコードされたスラッシュを許可してください。
AllowEncodedSlashes NoDecode
LibreNMS から返されたものではない、エンコードされたスラッシュを含むパスに対する 400 または 404 のエラーには、ツールのエラーメッセージにこのヒントが含まれます。
アラートとログのツール
alerts_get:現在および過去のアラートを一覧表示しますalert_get_by_id:特定のアラートの詳細を取得しますalert_acknowledge:アラートを確認済みにしますalert_unmute:アラートのミュートを解除しますalert_rules_list:アラートルールを一覧表示しますalert_rule_get:特定のアラートルールの詳細を取得しますalert_rule_add:アラートルールを追加しますalert_rule_edit:アラートルールを編集しますalert_rule_delete:アラートルールを削除しますalert_templates_list:すべてのアラートテンプレートを一覧表示しますalert_template_get:特定のアラートテンプレートを取得しますalert_template_create:新しいアラートテンプレートを作成しますalert_template_edit:アラートテンプレートを編集しますlogs_eventlog:ホスト名が指定されている場合はそのデバイスのイベントログを、指定されていない場合はすべてのデバイスのイベントログを取得しますlogs_syslog:ホスト名が指定されている場合はそのデバイスの syslog を、指定されていない場合はすべてのデバイスの syslog を取得しますlogs_alertlog:ホスト名が指定されている場合はそのデバイスのアラートログを、指定されていない場合はすべてのデバイスのアラートログを取得しますlogs_authlog:サーバー全体の認証ログを取得しますlogs_syslogsink:syslog シンクを追加します
課金ツール
bills_list:請求を一覧表示しますbill_get:請求の詳細を取得しますbill_graph:請求グラフを画像としてレンダリングしますbill_graph_data:請求グラフのデータを取得しますbill_history:請求履歴を取得しますbill_history_graph:請求履歴グラフを画像としてレンダリングしますbill_history_graph_data:請求履歴グラフのデータを取得しますbill_create_or_update:請求を作成または更新しますbill_delete:請求を削除します
Oxidized ツール
oxidized_list:設定バックアップ用に Oxidized が追跡しているデバイスを一覧表示しますoxidized_config_get:特定のデバイスの保存済み設定を取得しますoxidized_config_search:保存されているすべてのデバイス設定から文字列を検索します
ネットワークと監視ツール
-
arp_search:ARP エントリーを検索します -
poller_group_get:ポーラーグループを取得します -
routing_ip_addresses:LibreNMS のすべての IP アドレスを一覧表示します。 -
services_list:LibreNMS のすべてのサービスを一覧表示します。 -
services_for_device:LibreNMS からデバイスのサービスを取得します。 -
service_add:LibreNMS にサービスを追加します -
service_edit:既存のサービスを編集します -
service_delete:サービスを削除します -
bgp_sessions:BGP セッションを一覧表示します -
bgp_session_get:特定の BGP セッションの詳細を取得します -
bgp_session_edit:BGP セッションを編集します -
fdb_lookup:転送データベース(FDB)のエントリーを検索します -
nac_list:すべてのデバイスにわたるネットワークアクセス制御(802.1X / MAB)セッションを一覧表示します -
ospf_list:OSPF インスタンスを一覧表示します -
ospf_ports:OSPF ポートを一覧表示します -
vrf_list:VRF を一覧表示します -
ping:LibreNMS システムに ping を送信します -
health_list:ヘルスセンサーを一覧表示します -
health_by_type:種類別にヘルスセンサーを一覧表示します -
health_sensor_get:ヘルスセンサーの詳細を取得します -
sensors_list:センサーを一覧表示します -
switching_vlans:LibreNMS のすべての VLAN を一覧表示します。 -
switching_links:LibreNMS のすべてのリンクを一覧表示します。 -
system_info:LibreNMS のシステム情報を取得します。 -
主要なすべてのリソース(デバイス、ポート、アラート、ログ、インベントリーなど)に対する柔軟なフィルタリングと検索
📄 ページネーションと件数制限のサポート
大規模な LibreNMS 本番インスタンスへのクエリーで LLM のコンテキストが過負荷にならないよう、すべての一覧、検索、ログツールがページネーションに対応しています。
主な機能
- 適切なデフォルト値:すべての一覧ツールは、デフォルトで1 ページあたり 100 件の結果を返します。
- 統一されたパラメーター:
limit:返す結果の最大数(デフォルトは100、最小は1)。offset(ログツールではstart):スキップする結果の数。
- ページネーションメタデータ:ページネーションされた各レスポンスには、次のメタデータフィールドが含まれます。
limit:適用中の上限。offset(またはstart):適用中のオフセット。count:現在のページで返された項目数。total:利用可能な項目の合計数(ログツールでは、LibreNMS API が返した場合に提供されます)。
🚨 エラーレスポンス
JSON を返すすべてのツールは、エラーが LibreNMS によるものか、このサーバー内のチェックによるものか、タイムアウトなどの例外によるものかにかかわらず、LibreNMS 独自の形式で失敗を報告します。
{"status": "error", "message": "Device typo does not exist"}
status == "error" を確認してください。バージョン 1.11.3 以前では、例外は {"error": "..."} として返されていました。error キーを参照していたクライアントは更新が必要です。
🔒 セキュリティと安全機能
読み取り専用モード
サーバーは、安全な監視のためにすべての書き込み操作を無効にする読み取り専用モードに対応しています。
READ_ONLY_MODE=true
タグベースのツールフィルタリング
無効にするタグを設定すると、特定のカテゴリーのツールを無効にできます。
DISABLED_TAGS=alert,alert-rules,alert-templates,bills
ツールに付与されているタグのいずれかが無効になっていると、そのツールは非表示になります。また、複数のカテゴリータグを持つツールもあります。たとえば、port_graph には graphs と ports のタグが付いているため、DISABLED_TAGS=ports を設定すると port_graph も非表示になります。アラート関連機能は 3 つのタグに分かれています。alert(現在のアラート:一覧表示、確認、ミュート解除)、alert-rules、alert-templates です。アラート関連のすべてのツールを非表示にするには、3 つすべてを無効にしてください。
カテゴリーに加えて、read-only は読み取り専用モードでも利用可能なツールを示します。admin と global-read のタグは、以前の LibreNMS リリースが API ルートに使用していた権限グループ(can:admin、can:global-read)に対応しています。現在の LibreNMS はオブジェクトごとに権限を確認するため、この 2 つは、LibreNMS ユーザーが実行できる操作と厳密に一致するものではなく、大まかなカテゴリーとして扱ってください。
大規模なツールセットのツール検索
FastMCP のツール検索を使うと、多数のツールを持つサーバーでプロンプトのサイズを削減できます。
有効にすると、list_tools は次の 2 つの合成ツールを返します。
search_tools:一致するツールを検索し、完全なスキーマを返しますcall_tool:名前を指定して、見つかった任意のツールを実行します
次のようにして有効にします。
TOOL_SEARCH_ENABLED=true
TOOL_SEARCH_STRATEGY=bm25 # bm25 or regex
TOOL_SEARCH_MAX_RESULTS=5 # optional, default is 5
bm25 は自然言語のクエリに対応し、regex は決定的なマッチングのために正規表現の pattern 入力を使用します。
ツール検索では、既存の可視性制御(読み取り専用モードと無効化されたタグ)が適用されます。
レート制限
サーバーは、API の使用量を制御し、不正使用を防ぐためのレート制限に対応しています。有効にすると、スライディングウィンドウアルゴリズムを使ってクライアントごとにリクエストを制限します。
.env ファイルに次の環境変数を設定すると、レート制限を有効にできます。
RATE_LIMIT_ENABLED=true
RATE_LIMIT_MAX_REQUESTS=100 # Maximum requests allowed per window
RATE_LIMIT_WINDOW_MINUTES=1 # Window size in minutes
RATE_LIMIT_ENABLED が true に設定されている場合、サーバーはレート制限ミドルウェアを適用します。環境に応じて RATE_LIMIT_MAX_REQUESTS と RATE_LIMIT_WINDOW_MINUTES を調整してください。
Sentry によるエラー追跡とモニタリング(任意)
サーバーは、エラー追跡、パフォーマンスのモニタリング、デバッグのために、任意で Sentry に対応しています。Sentry との統合は完全に任意で、設定されている場合にのみ初期化されます。
インストール
Sentry のモニタリングを有効にするには、任意の依存関係をインストールします。
# Using UV (recommended)
uv sync --extra sentry
設定
.env ファイルで SENTRY_DSN 環境変数を設定すると、Sentry を有効にできます。
# Required: Sentry DSN for your project
SENTRY_DSN=https://[email protected]/6789
# Optional: Performance monitoring sample rate (0.0-1.0, default: 1.0)
SENTRY_TRACES_SAMPLE_RATE=1.0
# Optional: Include personally identifiable information (default: false).
# When true, tool inputs and outputs (device configs, SNMP credentials) are sent to Sentry.
SENTRY_SEND_DEFAULT_PII=false
# Optional: Environment name (e.g., "production", "staging")
SENTRY_ENVIRONMENT=production
# Optional: Release version (auto-detected from package if not set)
SENTRY_RELEASE=1.2.2
# Optional: Profiling - continuous profiling sample rate (0.0-1.0, default: 1.0)
SENTRY_PROFILE_SESSION_SAMPLE_RATE=1.0
# Optional: Profiling - lifecycle mode for profiling (default: "trace")
# Options: "all", "continuation", "trace"
SENTRY_PROFILE_LIFECYCLE=trace
# Optional: Enable log capture as breadcrumbs and events (default: true)
SENTRY_ENABLE_LOGS=true
機能
有効にすると、Sentry は次の情報を自動的に収集します。
- 例外とエラー:コンテキストを含む、処理されなかったすべての例外
- パフォーマンス指標:リクエスト/レスポンスの時間とトレース
- MCP との統合:MCP サーバーのアクティビティとインタラクションの詳細
- ログとパンくずリスト:デバッグ用のアプリケーションログとイベント履歴
- コンテキストデータ:環境、クライアント情報、リクエストパラメーター
Sentry DSN の取得
- sentry.io で無料アカウントを作成します
- 新しい Python プロジェクトを作成します
- プロジェクト設定から DSN をコピーします
.envファイルに設定します
Sentry の無効化
Sentry は完全に任意です。SENTRY_DSN を設定しなければ、サーバーは Sentry との統合なしで通常どおり動作し、モニタリングデータも収集されません。
SSL/TLS の設定
サーバーは、SSL 証明書の検証とカスタムタイムアウト設定に対応しています。
LIBRENMS_VERIFY_SSL=true # Enable SSL certificate verification
LIBRENMS_TIMEOUT=30 # Connection timeout in seconds
トランスポートの設定
サーバーは、MCP プロトコル用の複数のトランスポート方式に対応しています。MCP_TRANSPORT では大文字と小文字が区別されず、streamable-http は http のエイリアスとして使用できます。それ以外の値を指定すると、STDIO に暗黙的にフォールバックするのではなく、エラーで起動が停止します。
STDIO トランスポート(デフォルト)
デフォルトのトランスポートでは、標準入力/標準出力を使って通信します。ローカルでの利用や、stdin/stdout 経由で通信するツールとの統合に適しています。
MCP_TRANSPORT=stdio
HTTP SSE トランスポート(Server-Sent Events)
ネットワーク経由でデプロイする場合は、Server-Sent Events を使った HTTP を利用できます。これにより、リアルタイムストリーミングを使って HTTP 経由で MCP サーバーにアクセスできます。
MCP_TRANSPORT=sse
MCP_HTTP_HOST=127.0.0.1 # Localhost
MCP_HTTP_PORT=8000 # Port to listen on
MCP_HTTP_BEARER_TOKEN=your-secret-token # Optional authentication token
SSE トランスポートでベアラートークンを使用する場合、クライアントはリクエストにトークンを含める必要があります。
curl -H "Authorization: Bearer your-secret-token" http://localhost:8000/sse
HTTP Streamable トランスポート
HTTP Streamable トランスポートでは、リクエスト/レスポンスのストリーミングを使った HTTP 通信が可能です。ウェブ統合や HTTP エンドポイントを必要とするツールに適しています。
MCP_TRANSPORT=http
MCP_HTTP_HOST=127.0.0.1 # Localhost
MCP_HTTP_PORT=8000 # Port to listen on
MCP_HTTP_BEARER_TOKEN=your-secret-token # Optional authentication token
Streamable トランスポートでベアラートークンを使用する場合:
curl -H "Authorization: Bearer your-secret-token" \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \
http://localhost:8000/mcp
注:HTTP トランスポートでは、jsonrpc フィールドと id フィールドを含む適切な JSON-RPC 形式が必要です。一部の操作では、サーバーのセッション初期化も必要になる場合があります。
ヘルスエンドポイント
どちらの HTTP トランスポート(sse と http)も GET /health を提供し、サーバーがリクエストを処理している場合は 200 ok を返します。ベアラートークンは不要で、LibreNMS に接続しないため、LibreNMS の停止によって MCP サーバーが異常と判定されることはありません。
Docker イメージの HEALTHCHECK はこのエンドポイントを使用します。
curl http://localhost:8000/health
FastMCP トランスポートの詳細については、FastMCP のドキュメントをご覧ください。
🤝 貢献
貢献を歓迎します。開発環境のセットアップ、チェック、コミットメッセージの形式についてはCONTRIBUTING.mdをご覧ください。バグや機能のリクエストには、issue テンプレートをご利用ください。
セキュリティ上の問題を見つけましたか?SECURITY.mdの説明に従って、非公開で報告してください。
📜 ライセンス
MIT License — 詳細についてはLICENSEをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。