アナライザーMCPドキュメント
HTTPベースのモデルコンテキストプロトコルサーバーで、ネットワークレイテンシー監視とインテリジェント分析を提供します。 MCPサーバーは、既存のLatencetech APIに接続してアナライザーデータベース自体と通信することで動作します。
機能
コア監視機能
- レイテンシープロトコル(TCP、UDP、HTTP、HTTPS、ICMP、TWAMP)全体でのレイテンシークエリ
- 包括的なKPIによる接続健全性分析
- 無線信号品質監視(RSSI、RSRP、RSRQ、SINR)
- 信頼区間を含む予測レイテンシー予測
- 地理位置情報に関連付けられたパフォーマンスデータ
- システムメトリクス監視(CPU、RAM、ストレージ、負荷)
- Lifbeスループットと品質測定
インテリジェント分析
- 異常検出:プロトコル全体でネットワーク異常を検出
- パフォーマンストレンド:履歴ベースラインと比較したエージェントパフォーマンストレンドを分析
- 劣化アラート:パフォーマンスの劣化を示すエージェントを特定
- 相関分析:ネットワーク全体の問題を示すエージェント間のパターンを検出
- 健全性レポート:推奨事項を含む包括的なネットワーク健全性レポートを生成
- エージェントランキング:パフォーマンスメトリクスとトレンドによってエージェントをランク付け
設定
前提条件
MCPサーバーには、マシン上でポート12098が開放されている必要があります。
環境変数
docker-compose.ymlで直接値を設定します:
environment:
# 必須:APIキーに置き換えてください
- API_KEY=your-api-key-here
# 必須:トークン作成に使用される安全なキーに置き換えてください
- ADMIN_KEY=change-this-secure-admin-key
# SERVER_HOST:自動検出の外部IPの場合は空のままにします、
# またはVMのIPに設定します(例:192.168.1.100)
# またはDNSに設定します(例:demo.example.com)
- SERVER_HOST=
# ENABLE_HTTPS:DNSアドレスを使用する場合のみ'false'に設定
# IPアドレスを使用する場合はtrueのままにします(デフォルト)
- ENABLE_HTTPS=true
# ENABLE_OAUTH:OAuthエンドポイントを無効にする場合は'false'に設定(Claude Webは動作しません)
# Claude Webサポートの場合は'true'のままにします(デフォルト:true)
# ベアラートークンサポートのみの場合は'false'に設定
# 有効にすると、MCPアドレスを持つ誰でも検証なしで接続できます
- ENABLE_OAUTH=true
# オプション
- LOG_LEVEL=INFO
- API_TIMEOUT=120
- HTTP_PORT=12098
- DEFAULT_CUSTOMER_ID=0
- DEFAULT_AGENT_ID=1
重要な設定注意事項:
- API_KEY:バックエンドAPIアクセスに必須
- ADMIN_KEY:アクセストークンの作成/管理に必須
- HTTPS設定:
- IPを使用するClaude Desktopの場合:自己署名証明書のためENABLE_HTTPS=trueに設定
- Claude Webの場合:有効なSSLを持つドメインを使用する必要があります(以下のSSLセットアップを参照)
- ENABLE_OAUTH:
ENABLE_OAUTH=true→ すべての5つのOAuthエンドポイントが登録され、Claude Webが接続可能ENABLE_OAUTH=false→ OAuthエンドポイントは登録されず、ベアラートークンのみ動作- トークン管理エンドポイント(
/admin/tokens/*)はOAuth設定に関係なく常に動作します
ログには次のように表示されます:
INFO: OAuth endpoints enabled
# または
INFO: OAuth endpoints disabled - bearer token only mode
Claude Web用のSSLセットアップ
Claude Webには信頼されたSSL証明書が必要で、自己署名証明書は使用できません。
Nginx + Let's Encryptを使用したサブドメイン
-
DNS Aレコードを追加してサブドメイン(例:
mcp.yourdomain.com→ サーバーIP)を設定 -
nginx設定を作成(
/etc/nginx/sites-available/mcp.yourdomain.com):
server {
server_name mcp.yourdomain.com;
location / {
proxy_pass http://localhost:12098;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 90;
# 長時間接続のサポート
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
listen 80;
}
- サイトを有効化してSSL証明書を取得:
sudo ln -s /etc/nginx/sites-available/mcp.yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d mcp.yourdomain.com
- mcp-server.ymlを更新:
- ENABLE_HTTPS=false
- コンテナを再起動:
docker compose down
docker compose up -d
MCPクライアント統合
Claude Web(claude.ai)
要件:
- 有効なSSL証明書(自己署名証明書は動作しません)
- Let's Encryptまたは同様の信頼されたCAを使用したサブドメインを使用する必要があります
- OAuthを有効にする必要があります(ENABLE_OAUTH=true)
Claude WebはOAuth 2.1認証を自動的に使用します:
- Claude設定 → コネクタに移動
- 「カスタムコネクタを追加」をクリック
- 名前:
Latency Monitoring - リモートMCPサーバーURL:
https://mcp.yourdomain.com(信頼されたSSLを使用する必要があります) - OAuthフィールドは空のままにします(サーバーが動的登録を処理します)
- 「追加」をクリック - ClaudeがOAuthフローを自動的に開始します
- 承認を承認します(サーバーによって自動承認され、実際の検証はありません)
- 生成されたアクセストークンで接続が確立されます
仕組み:
- Claudeは.well-known/oauth-authorization-serverを介してOAuthエンドポイントを検出します
- サーバーは承認を自動承認し、アクセストークンを生成します
- トークンはClaudeによって自動的に管理されます(手動でのトークン処理は不要)
- トークンは30日後に期限切れになり、更新できます
Claude Desktop
Claude Desktopは回避策で自己署名証明書を使用できます。
Claude Desktopにはベアラートークンを使用したmcp-remoteプロキシが必要です:
- アクセストークンを作成:
curl -k -X POST "https://localhost:12098/admin/tokens/create?name=claude-desktop" \
-H "X-Admin-Key: your-admin-key-here"
レスポンス:
{
"token": "TOKEN-CREATED",
"name": "claude-desktop"
}
- Claude Desktopを設定:
自己署名証明書の場合(IPアドレス):
{
"mcpServers": {
"latency-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"https://your.vm.ip.address:12098",
"--header",
"Authorization: Bearer ${AUTH_TOKEN}"
],
"env": {
"AUTH_TOKEN": "TOKEN-CREATED",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}
信頼されたSSLの場合(Let's Encryptを使用したサブドメイン):
{
"mcpServers": {
"latency-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.yourdomain.com",
"--header",
"Authorization: Bearer ${AUTH_TOKEN}"
],
"env": {
"AUTH_TOKEN": "TOKEN-CREATED"
}
}
}
}
セキュリティ注意: NODE_TLS_REJECT_UNAUTHORIZED=0はSSL証明書の検証を無効にし、開発環境または信頼されたネットワーク環境でのみ使用してください。本番環境では、Let's Encryptを使用したサブドメインを使用してください。
- Claude Desktopを再起動
Cursor
Cursorはベアラートークン経由でリモートMCPサーバーをサポートします。
1) アクセストークンを作成:
curl -k -X POST "https://localhost:12098/admin/tokens/create?name=cursor" \
-H "X-Admin-Key: your-admin-key-here"
2) Cursorを設定します。.cursor/mcp.json(プロジェクトレベル)または~/.cursor/mcp.json(グローバル):
信頼されたSSL(Let's Encryptのサブドメイン)の場合:
{
"mcpServers": {
"latency-mcp": {
"url": "https://mcp.yourdomain.com",
"headers": {
"Authorization": "Bearer TOKEN-CREATED"
}
}
}
}
自己署名証明書(IPアドレス)の場合:
mcp-remoteプロキシを使用します:
{
"mcpServers": {
"latency-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"https://your.vm.ip.address:12098",
"--header",
"Authorization: Bearer ${AUTH_TOKEN}"
],
"env": {
"AUTH_TOKEN": "TOKEN-CREATED",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}
3) Cursorをリロードし、Cursor Settings > MCPにサーバーが表示されることを確認します
Google Antigravity
Google Antigravityはベアラートークン経由でリモートMCPサーバーをサポートします。
1) アクセストークンを作成:
curl -k -X POST "https://localhost:12098/admin/tokens/create?name=antigravity" \
-H "X-Admin-Key: your-admin-key-here"
2) Antigravityを設定します。~/.gemini/config/mcp_config.json(グローバル)または.agents/mcp_config.json(ワークスペース)。Agent panel > ... > MCP Servers > Manage MCP Servers > View raw configからもこのファイルを開けます。
重要: AntigravityはリモートHTTPベースのMCPサーバーに対してurlではなくserverUrlを使用します。
信頼されたSSL(Let's Encryptのサブドメイン)の場合:
{
"mcpServers": {
"latency-mcp": {
"serverUrl": "https://mcp.yourdomain.com",
"headers": {
"Authorization": "Bearer TOKEN-CREATED"
}
}
}
}
自己署名証明書(IPアドレス)の場合:
mcp-remoteプロキシを使用します:
{
"mcpServers": {
"latency-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"https://your.vm.ip.address:12098",
"--header",
"Authorization: Bearer ${AUTH_TOKEN}"
],
"env": {
"AUTH_TOKEN": "TOKEN-CREATED",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}
3) Antigravityを再起動するか、Settings > Customizations > Installed MCP ServersからMCPサーバーを更新します
Claude API(Messages API)
Messages APIを介したプログラムによるアクセスの場合:
import anthropic
client = anthropic.Anthropic(api_key="your-api-key")
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1000,
messages=[{"role": "user", "content": "What agents are available?"}],
mcp_servers=[{
"type": "url",
"url": "https://mcp.yourdomain.com",
"name": "latency-mcp",
"authorization_token": "TOKEN-CREATED"
}]
)
その他のMCPクライアント
ベアラートークンをサポートする任意のMCPクライアントの場合:
- トークンを作成(以下のトークン管理セクションを参照)
- クライアントを設定して
Authorization: Bearer <token>ヘッダーを送信 - サーバーURLに接続
トークン管理
トークンの作成
クライアント用の新しいアクセストークンを作成:
curl -k -X POST "https://localhost:12098/admin/tokens/create?name=my-client" \
-H "X-Admin-Key: your-admin-key-here"
レスポンス:
{
"token": "xK9mP2nQ7vR4sT8wU1yZ5aB3cD6eF0gH",
"name": "my-client"
}
デフォルトの有効期限を変更
デフォルトでは、トークンは720時間(1か月)後に期限切れになりますが、expires_hoursパラメータを使用して変更できます:
curl -k -X POST "https://localhost:12098/admin/tokens/create?name=my-client&expires_hours=3600" \
-H "X-Admin-Key: your-admin-key-here"
トークンのリスト表示
すべてのアクティブなトークンを表示:
curl -k -X GET "https://localhost:12098/admin/tokens/list" \
-H "X-Admin-Key: your-admin-key-here"
レスポンス:
{
"xK9mP2nQ7vR4sT8wU1yZ5aB3cD6eF0gH": {
"name": "my-client",
"expires_at": "2025-11-02T10:30:00"
}
}
トークンの取り消し
特定のトークンを取り消し:
curl -k -X DELETE "https://localhost:12098/admin/tokens/xK9mP2nQ7vR4sT8wU1yZ5aB3cD6eF0gH" \
-H "X-Admin-Key: your-admin-key-here"
トークンの詳細:
- トークンはデフォルトで30日(720時間)後に期限切れになります
- 期限切れのトークンは検証時に自動的に削除されます
- トークンは/app/data/tokens.jsonに保存されます(Dockerボリュームを介して永続化)
- 各トークンは管理を容易にするための説明的な名前にバインドされています
セキュリティ注意事項
- ADMIN_KEYをデフォルト値から変更してください
- API_KEYを安全に保管してください
- data/フォルダには認証トークンが含まれています - バックアップしてください!
- 適切なファイル権限を設定してください:
chmod 700 data/
chmod 600 data/tokens.json
- 本番環境では
NODE_TLS_REJECT_UNAUTHORIZED=0を決して使用しないでください - Claude Webを使用した本番デプロイメントの場合は、常に信頼されたSSL証明書を使用してください
利用可能なツール
コア監視ツール
| ツール | 説明 | 必須パラメータ |
|---|---|---|
list_customer_networks |
利用可能なすべての顧客ネットワークをリスト表示 | なし |
search_agents |
顧客のエージェントを検索 | customer_id(デフォルトは0) |
query_latency |
時間/プロトコルフィルタを使用したレイテンシークエリ | customer_id、agent_id、protocol + (time_range OR chosen_time) |
get_connectivity_health |
包括的な接続分析 | customer_id、agent_id(両方ともデフォルトは0、1) |
analyze_radio_conditions |
無線信号品質分析 | customer_id、agent_id + (time_range OR chosen_time) |
get_system_metrics |
システムパフォーマンスメトリクス | なし |
get_forecast |
予測レイテンシー分析 | customer_id、agent_id(両方ともデフォルトは0、1) |
get_geolocation_data |
地理位置情報に関連付けられたパフォーマンス | customer_id、agent_id、time_range |
get_lifbe_data |
Lifbeスループットメトリクス | customer_id、agent_id(両方ともデフォルトは0、1) |
get_twamp_data |
TWAMPプロトコル測定 | customer_id、agent_id(両方ともデフォルトは0、1) |
インテリジェント分析ツール
| ツール | 説明 | 必須パラメータ |
|---|---|---|
get_anomalies |
プロトコル全体でネットワーク異常を検出 | customer_id、agent_id(デフォルトは0、1) |
analyze_performance_trends |
現在とベースラインのパフォーマンスを比較 | customer_id、agent_id(デフォルトは0、1) |
get_degradation_alerts |
劣化しているエージェントを特定 | customer_id(デフォルトは0) |
detect_correlation_patterns |
相関するパフォーマンス問題を検出 | customer_id(デフォルトは0) |
generate_health_report |
包括的なネットワーク健全性分析 | customer_id(デフォルトは0) |
rank_agents_by_performance |
パフォーマンスメトリクスでエージェントをランク付け | customer_id(デフォルトは0) |
利用可能なプロンプト
プロンプトは、特定の問題を解決するためにツールを組み合わせる方法をモデルに指示するガイド付きワークフロー(スキル)です。MCPプロンプトをサポートするクライアントから直接呼び出せます。
| プロンプト | 説明 |
|---|---|
radio-signal-troubleshooting |
RSSI、RSRP、RSRQ、SINRメトリクスを解釈してセルラー信号品質の問題を診断します。接続問題や信号品質の低下を調査する際に使用します。 |
multi-site-correlation |
複数のエージェントにわたるパフォーマンスを分析し、サイト固有の問題とネットワーク全体の劣化を区別します。エージェント比較や相関する問題の調査に使用します。 |
customer-health-reports |
エグゼクティブサマリーと実行可能な推奨事項を含む専門的なネットワーク健全性レポートを生成します。ステークホルダー向けの日次・週次・月次レポート作成時に使用します。 |
latency-protocol-comparison |
TCP、UDP、HTTP、HTTPS、ICMP、TWAMPのレイテンシーを並べて比較し、問題がプロトコル固有かネットワーク全体かを切り分けます。 |
predictive-capacity-planning |
予測データ、トレンド、エージェントランキングを組み合わせ、インシデントになる前にパフォーマンス上限に近づいているエージェントを特定します。 |
incident-investigation |
アクティブなインシデント向けのステップバイステップのプレイブック:影響範囲の特定、タイミングの特定、根本原因レイヤー(ISP vs 無線 vs ローカル機器)の特定。 |
geolocation-latency-analysis |
レイテンシーと物理的な位置を関連付け、地理的クラスター、基地局までの距離の影響、近隣エージェントが同じ根本原因を共有しているかを特定します。 |
throughput-quality-assessment |
LifbeとiPerfデータを用いて、遅延の原因が帯域幅の飽和か接続品質の問題(パケットロス、ジッター)かを判断します。 |
APIエンドポイント
MCPサーバーは以下のHTTPエンドポイントを公開します:
GET /- サーバー情報GET /health- ヘルスチェックPOST /mcp/initialize- MCP初期化POST /mcp/resources/list- リソースをリスト表示POST /mcp/resources/read- リソースコンテンツを読み取りPOST /mcp/tools/list- 利用可能なツールをリスト表示POST /mcp/tools/call- ツールを実行
トラブルシューティング
SSL証明書の問題
Claude Web: - エラー:「自己署名証明書」または接続失敗 - 解決策:Claude Webには信頼されたSSL証明書が必要です。自己署名証明書は動作しません。Let's Encryptを使用したサブドメインを設定する必要があります(上記のSSLセットアップセクションを参照)
Claude Desktop:
- エラー:「自己署名証明書」エラー
- 解決策:Claude Desktop設定のenvセクションにNODE_TLS_REJECT_UNAUTHORIZED: "0"を追加します(上記のClaude Desktop設定を参照)
- 注:これは開発/テスト用のみです。本番環境では、信頼されたSSL証明書を使用してください
接続の問題
- APIキーが正しいか確認してください
- LatencyTech APIがアクセス可能か確認してください
- Dockerの場合:
localhostの代わりにhost.docker.internalを使用するか、mcp-server.ymlでnetwork_mode: "host"を使用してください - ポート12098のファイアウォール設定を確認してください
- Claude Webの場合:サブドメインDNSが正しく設定され、サーバーを指していることを確認してください
- nginx設定の場合:nginxが実行され、適切に設定されていることを確認してください(
sudo nginx -t)
ログ
- 詳細なリクエスト/レスポンスログには
LOG_LEVEL=DEBUGを設定してください - コンテナログを確認:
docker logs <container_id> - nginxログを確認:
sudo tail -f /var/log/nginx/error.log
例とテストクエリ
- "エージェント1のレイテンシーの要約を取得してください。"
- "エージェント1について過去1時間に検出されたネットワーク異常を表示してください。問題がある場合はTCPプロトコルに焦点を当ててください。"
- "接続健全性警告があるエージェントはどれですか?"
- "エージェント2の予想されるレイテンシーの予測を生成してください"
- "顧客0のエージェント1について過去7日間のパフォーマンストレンドを分析できますか?ベースラインと比較して劣化があったかどうかを確認したいです。"
- "顧客0の包括的な日次ネットワーク健全性レポートを生成してください。見つかった問題に対する実行可能な推奨事項を含めてください。"