MCP Server について
Chronosphere MCP Serverは、Chronosphereの可観測性データと一部の設定エンティティをMCPクライアントに公開します。ログ、メトリクス、トレース、イベントの検索に加え、一部リソースの一覧取得や更新にも対応します。
主な機能
- 01ログ、メトリクス、トレース、イベントの検索
- 02設定エンティティの一覧取得と取得
- 03Prometheusクエリの実行と結果の描画
- 04リクエストヘッダーによるツール表示制御
- 05サーバーとリクエストの設定による書き込みツールの有効化
活用シーン
- 01メトリクスと併せてログやトレースを調査
- 02モニター、ダッシュボード、SLOを確認
- 03アラートとモニターの状態を確認
- 04ダッシュボードを検証または更新
MCP 対応
Chronosphereのデータ照会と設定操作をMCPツールとして公開し、ホスト型リモートサーバーまたは独自ビルドで利用できます。APIトークンとOAuthに対応し、書き込みツールには明示的な有効化が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Chronosphere MCP サーバー
Chronosphere 用の MCP サーバーです。ログ、メトリクス、トレース、イベント、および一部のエンティティを取得するツールを提供します。
このプロジェクトでは、リリースバージョンに semver を使用しています。まだバージョン 1.0 に達していないため、マイナーバージョンの更新で互換性を破る変更が発生する可能性があります。
人気のホスト(claude desktop、cursor)での MCP 設定
リモートサーバー
MCP サーバーを利用する最も簡単な方法は、ホストされているリモートサーバーを使うことです。
認証
Chronosphere MCP サーバーでは、Chronosphere API トークンまたは OAuth を使用できます。OAuth で MCP を使うには、MCP クライアントが OAuth に対応している必要があります。
OAuth のサポートは新しく、すべてのクライアントでテストされているわけではありません。動作しない場合は、以下の情報を添えて Slack で Chronosphere サポートに問題を報告してください。
- 使用している MCP クライアント(例:VS code、codex、cursor など)
- 認証を試すために行った手順
- 表示されたエラー
ヘッダーベースの設定
一部の MCP ホストでは、MCP サーバーに送信するリクエストにカスタム HTTP ヘッダーを追加できます。Chronosphere MCP サーバーは、以下のユーザー向けヘッダーに対応しています。
ツールの無効化(X-Chrono-MCP-Disable-Tools)
このヘッダーを使うと、MCP クライアントに公開されるツール一覧から特定のツールを非表示にできます。
- 形式:MCP ツール名をカンマ区切りで指定(利用可能なツールの表のツール名列を参照)
- 値の例:
query_logs_range,render_prometheus_range_query - 注記:空白は無視されます。不明なツール名は無視されます
書き込みの有効化(X-Chrono-MCP-Enable-Writes)
書き込みツールはデフォルトでは非表示になっており、呼び出すこともできません。サーバーのオペレーターが、まず server.tools.enableWrites: true を設定して書き込みを許可する必要があります。HTTP クライアントと SSE クライアントは、さらにこのヘッダーを true に設定する必要があります。このヘッダーでサーバー設定を上書きすることはできません。それ以外の値では書き込みは有効になりません。
Stdio にはリクエストヘッダーがないため、このトランスポートではサーバー設定だけで書き込みが有効になります。ただし、サーバーで使用する Chronosphere の認証情報には、基盤となる API 操作を実行する権限が必要です。
Cursor/VSCode
{
"mcpServers": {
"chronosphere": {
"url": "https://<org name>.chronosphere.io/api/mcp/mcp",
"headers": {
"Authorization": "Bearer <chronosphere api token>",
"X-Chrono-MCP-Disable-Tools": "<optional list of tools to disable>"
}
}
}
}
この設定は Cursor と VSCode で動作するはずです。Chronosphere API トークンの代わりに OAuth を使用するには、headers セクションを省略してください。
すべてのツールを公開するには、X-Chrono-MCP-Disable-Tools を削除してください。
詳細については、VSCode のこちらおよび Cursor のこちらを参照してください。
Claude code
claude code に Chronosphere MCP サーバーを追加する
claude mcp add -t http \
-H "Authorization: Bearer ${CHRONOSPHERE_API_TOKEN}" \
-H "X-Chrono-MCP-Disable-Tools: <list of tools to disable>" \
chronosphere "https://${CHRONOSPHERE_ORG_NAME}.chronosphere.io/api/mcp/mcp"
OAuth を使用する場合は、Authorization ヘッダーを省略できます。claude で /mcp と入力し、サーバーを選択してログインすると、OAuth フローが開始されます。
すべてのツールを公開するには、X-Chrono-MCP-Disable-Tools ヘッダーを削除してください。
詳細についてはこちらを参照してください。
Codex CLI
experimental_use_rmcp_client = true
[mcp_servers.chronosphere]
url = "https://<org_name>.chronosphere.io/api/mcp/mcp"
bearer_token = "<chronosphere api token>"
oauth でログインするには、experimental_use_rmcp_client = true を有効にしてから、codex mcp login chronosphere を実行する必要があります。
詳細についてはこちらを参照してください。
Gemini CLI
CHRONOSPHERE_ORG_NAME=<your org>
CHRONOSPHERE_API_TOKEN=<your api token>
gemini mcp add chronosphere "https://${CHRONOSPHERE_ORG_NAME}.chronosphere.io/api/mcp/mcp" \
-H "Authorization: Bearer ${CHRONOSPHERE_API_TOKEN}" \
-H "X-Chrono-MCP-Disable-Tools: <list of tools to disable>"
# Drop the -H authorization header option if you want to use OAuth.
詳細については、Gemini MCP のドキュメントを参照してください。
ソースからのビルド
まず、バイナリをビルドします。
make chronomcp
{
"mcpServers": {
"chronosphere-mcp": {
"command": "<PATH/TO/REPO>/bin/chronomcp",
"args": [
"-c",
"<PATH/TO/REPO>/config.yaml"
],
"env": {
"CHRONOSPHERE_ORG_NAME": "<your org here>",
"CHRONOSPHERE_API_TOKEN": "<your api token here>"
}
}
}
}
開発
サーバーの実行
Chronosphere への認証
この MCP サーバーは chronoctl と同じ認証方法を使用します。デフォルトでは、Makefile は API トークンが .chronosphere_api_token に保存されていることを想定しています。
mcp サーバーの実行
make run-chronomcp CHRONOSPHERE_ORG_NAME=<your org here> CHRONOSPHERE_API_TOKEN=<your api token here>
API 仕様
generated/ の API クライアントは、Chronosphere の公開 API 仕様から生成されています。generated/configv1/spec.json、generated/datav1/spec.json、generated/statev1/spec.json は、モノレポの src/gateway/publicapiswagger/data/ にあるエクスポートのコピーです。更新するには、モノレポのチェックアウトから 3 つすべてを同期し、再生成してください。
make swagger-sync MONOREPO=<path to monorepo checkout>
make all-gen
MCP ツールのデバッグ
MCP プロジェクトには、ツール API を直接呼び出すのに便利なインスペクターが用意されています。使用方法は次のとおりです。
- ストリーム可能な HTTP トランスポートで MCP サーバーを起動します:
make run-chronomcp CONFIG_FILE=./config.http.yaml CHRONOSPHERE_ORG_NAME=<your org here> npx @modelcontextprotocol/inspector node build/index.jsを実行します。- http://localhost:6274/#resources を開き、URL に
http://0.0.0.0:8081/mcpを入力し、トランスポートタイプに Streamable HTTP を選択します。
利用可能なツール
| グループ | ツール名 | 説明 |
|---|---|---|
| configapi | get_classic_dashboard | classic-dashboards リソースを取得します |
| configapi | get_dashboard | dashboards リソースを取得します |
| configapi | get_drop_rule | drop-rules リソースを取得します |
| configapi | get_mapping_rule | mapping-rules リソースを取得します |
| configapi | get_monitor | monitors リソースを取得します |
| configapi | get_notification_policy | notification-policies リソースを取得します |
| configapi | get_recording_rule | recording-rules リソースを取得します |
| configapi | get_rollup_rule | rollup-rules リソースを取得します |
| configapi | get_slo | slos リソースを取得します |
| configapi | list_classic_dashboards | classic-dashboards リソースの一覧を取得します |
| configapi | list_dashboards | dashboards リソースの一覧を取得します |
| configapi | list_drop_rules | drop-rules リソースの一覧を取得します |
| configapi | list_mapping_rules | mapping-rules リソースの一覧を取得します |
| configapi | list_monitors | monitors リソースの一覧を取得します |
| configapi | list_notification_policies | notification-policies リソースの一覧を取得します |
| configapi | list_recording_rules | recording-rules リソースの一覧を取得します |
| configapi | list_rollup_rules | rollup-rules リソースの一覧を取得します |
| configapi | list_slos | slos リソースの一覧を取得します |
| configapi | update_dashboard | スラッグで識別されるダッシュボードを置き換えます。保存せずに検証するには dry_run を使用します。 |
| events | get_events_metadata | イベントでクエリできるプロパティの一覧を取得します |
| events | list_events | 指定したクエリのイベント一覧を取得します |
| events | list_events_label_values | 指定したラベル名の値の一覧を取得します |
| logs | get_log | IDでログメッセージ全体を取得します。IDはログの一意の識別子です。start または end が設定されていない場合は過去7日間を検索します。それより古いログを検索するには、これらを設定します。 |
| logs | get_log_histogram | 指定したクエリのログのヒストグラムを取得します |
| logs | list_log_field_names | 非推奨:サポートされなくなり、常にエラーを返します。ログのフィールド名の一覧を取得します |
| logs | list_log_field_values | ログのフィールド値を、頻度の高い順に、一致する各値を持つログの件数とともに一覧表示します。ログにどのフィールドがあるかを確認するには、その logID を get_log ツールに渡します。 |
| logs | query_logs_range | ログの範囲クエリを実行します。このエンドポイントは、ログを timeSeries または gridData として返します。大量のデータが返されることがあるため、このツールの結果をコンテキストに含める際は注意してください。U... |
| metric_usage | list_metric_usages_by_label_name | ラベル名ごとにグループ化したメトリクス使用状況の統計を一覧表示します。削除できる未使用またはカーディナリティの高いラベルを見つけるために使用します。レスポンスフィールド:- label_name:ラベルの名前 - dpps:データポイ... |
| metric_usage | list_metric_usages_by_metric_name | メトリクス名ごとにグループ化したメトリクス使用状況の統計を一覧表示します。コスト削減のために削除できる未使用または使用頻度の低いメトリクスを見つけるために使用します。レスポンスフィールド:- metric_name:メトリクスの名前 ... |
| metric_usage | list_rule_evaluations | モニターと記録ルールのルール評価に関する問題を一覧表示します。失敗または問題が発生しているルールの特定に使用します。レスポンスフィールド:- rule_slug:ルールの一意の識別子 - rule_typ... |
| metrics | list_prometheus_label_names | 指定したセレクターに一致するメトリクスで利用可能なラベル名(キー)の一覧を返します。特定のメトリクスまたはサービスで利用可能なラベルを確認する必要がある場合に使用します。例... |
| metrics | list_prometheus_label_values | セレクターで任意に絞り込み、特定のラベル名の値の一覧を返します。ラベル名がわかっていて、メトリクス全体でどのような値があるかを確認したい場合に使用します。一般的な... |
| metrics | list_prometheus_series | 指定したセレクターに一致する完全な時系列(すべてのキーと値のペアを含む完全なラベルセット)を返します。各結果には、アクティブな時系列のラベルの正確な組み合わせが表示されます。このツー... |
| metrics | list_prometheus_series_metadata | |
| metrics | query_prometheus_instant | Prometheus のインスタントクエリを単一の時点で評価します |
| metrics | query_prometheus_range | 指定した時間範囲にわたって Prometheus PromQL クエリを実行し、時系列データポイントを JSON として返します。標準の PromQL 構文に加え、Chronosphere のカスタム関数をサポートします:- cardinality_estimat... |
| metrics | render_prometheus_range_query | Prometheus の式クエリを指定した時間範囲にわたって評価し、PNG 画像として描画します。 |
| monitors | list_alerts | Chronosphere のモニターと SLO が発生させたアラートを一覧表示します。デフォルトでは新しい順です。5つの検索フィルター(monitor_slugs、monitor_name_contains、slo_slugs、slo_name_contains、alert_title_contai... |
| monitors | list_monitor_statuses | Chronosphere のモニターの現在のステータスを一覧表示します。フィルターに一致するモニターのうち、アラートが発火しているものをすべて返します。発火していないモニターは結果から除外されます。各ステータスには... |
| traces | list_traces | 指定したクエリのトレース一覧を取得します |
注:ツールの更新後にこの表を再生成するには、make tools-gen && go run scripts/generate-tools-table.go を実行してください。 |
リリース
リリースの管理には goreleaser を使用します。
github token が必要です。これを .github_release_token ファイルに保存してください。 トークンには、少なくとも以下の 権限 が必要です。
content: writeissues: write
新しいリリースを作成するには、まずタグを作成します。
git tag vX.Y.Z
git push origin vX.Y.Z
次に、以下のコマンドを実行してリリースのドライランを行います。
```sh
make release-dry-run
# verify the release looks good, then run:
make release
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。