InfluxDB 3 について
InfluxDB 3 の MCP サーバーは、分析担当者や運用担当者が MCP クライアント経由で Core、Enterprise、Cloud のデータベースを照会・管理できるようにします。スキーマ探索と範囲制限付きの読み取り専用クエリを備え、設定により変更・管理ツールを除外できます。
主な機能
- 01範囲制限付き SQL・InfluxQL クエリ
- 02データベースとテーブルの探索
- 03スキーマ記述とサンプリング
- 04データベースとトークンの管理
- 05読み取り専用ツール設定
活用シーン
- 01不慣れなデータベースの探索
- 02InfluxQL ダッシュボードクエリの調査
- 03データベースの状態とアクセス確認
- 04データベースとトークンの管理
MCP 対応
Core、Enterprise、および対応する Cloud 環境の InfluxDB ツール、リソース、プロンプトを MCP クライアントに提供します。読み取り専用設定では、データ探索とクエリに使うツールのみが公開されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @influxdata/influxdb3-mcp-serverINFLUX_DB_PRODUCT_TYPEInfluxDB edition or service; use its runtime configuration value.INFLUX_DB_TOKENシークレットOperator, admin, resource or database token. Required for Core, Enterprise and Cloud Serverless; needed for query/write on Cloud Dedicated and Clustered.INFLUX_DB_INSTANCE_URLInfluxDB URL. Required for Core, Enterprise, Cloud Serverless and Clustered; e.g. http://localhost:8181/ for Core or Enterprise.INFLUX_DB_MANAGEMENT_TOKENシークレットManagement API token for Cloud Dedicated or Clustered. Provide this or INFLUX_DB_TOKEN, or both for full functionality.INFLUX_DB_ACCOUNT_IDAccount ID required when using a management token with Cloud Dedicated.INFLUX_DB_CLUSTER_IDCluster ID required for Cloud Dedicated.INFLUX_MCP_TOOL_PROFILETools to expose. readonly exposes read-only tools; readwrite also allows writes; operator exposes all tools.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
InfluxDB 3 MCP サーバー
InfluxDB 3 と統合するための Model Context Protocol(MCP)サーバーです。MCP クライアント経由で InfluxDB 3 Core および Enterprise、さらに InfluxDB Cloud Dedicated、InfluxDB Clustered、InfluxDB Cloud Serverless とやり取りするためのツール、リソース、プロンプトを提供します。
前提条件
- InfluxDB 3 インスタンス:URL とトークン(Core/Enterprise/Cloud Serverless)、またはクラスター ID とトークン(Cloud Dedicated/Clustered)
- Node.js:v20.11 以降(npm/npx を使用する場合)
- pnpm:ローカル開発では
package.jsonに固定されたバージョンを使用してください。 Node.js 20 または 22 でcorepack enableを実行して有効にします。 - Docker:(Docker ベースのセットアップ用)
2.0 への移行
バージョン 2.0 では、クエリ結果のエンベロープ、ヘルスチェックの出力、引数エラー、テレメトリが変更されます。
これらのレスポンスを解析するクライアントは、
読み取り専用出力の仕様に従う必要があります。
クエリ結果を完全な回答として扱う前に、metadata.completeness、上限、警告を確認してください。
検出メタデータには情報源が示され、取得できない値は不明のままになります。
ツール名と設定済みプロファイルは引き続き利用できます。
読み取り専用エージェントのワークフロー
INFLUX_MCP_TOOL_PROFILE=readonly を設定すると、MCP クライアントにデータの探索とクエリを行うツールを提供できます。
このプロファイルでは、データの書き込み、データベースの管理、トークンの管理、ホスト上での実行を行うツールはすべて除外されます。
認証情報
INFLUX_DB_TOKEN に、管理者トークン、スコープ付きトークン、または Enterprise のユーザー認証 JWT を設定してください。
サーバーはトークンを調べずに Bearer ヘッダーで送信するため、ツールで読み取り可能なデータベースはトークンの権限によって決まります。
クエリ引数
query_sql と query_influxql では、db の代わりに database を、q の代わりに query を指定できます。
両方の名前に異なる値を指定すると、呼び出しは invalid_arguments エラーになります。
すべての引数エラーは構造化されたツールエラーとなり、テレメトリに記録されます。
検出
list_databases はサーバーが一覧表示するデータベースを返しますが、一覧にあるデータベースも読み取りできない場合があるため、visibility: "unknown" と表示されます。
health_check は、ヘルスチェックと ping の結果を分けた JSON を返します。
スコープ付きトークンでは両方のチェックが拒否されても、データベースの読み取りが可能な場合があります。
investigate_database は、あるテーブルでエラーが発生しても、各テーブルの結果を保持し、確認したテーブル数と途中で処理を停止したかどうかを報告します。
サンプルは時間範囲内から取得されます。デフォルトは 24 時間です。変更するには sampleWindowHours を設定してください。
時間範囲内にデータがないことは、テーブルが空であることを意味しません。
Core および Enterprise では、describe_table と調査に system.influxdb_schema を使用して、正式なカラムの役割を取得します。
同じ認証情報で許可されている場合は、_internal カタログからスキーマモードと削除状態も読み取り、source: "server" とカタログのテーブル名を報告します。
取得できない値は不明のままになります。カタログへのアクセスが拒否されても、読み取り可能なカラムメタデータやサンプルは破棄されません。
正式な削除メタデータがない場合、タイムスタンプ形式の接尾辞を持つテーブル名には参考情報として possibly_deleted の警告が付けられ、一覧に残ります。
カーディナリティの推定には、まだ対応していません。
エラー
呼び出しに失敗した場合は、error.code、error.recovery、error.retryableを確認してください。
403はnot_found_or_deniedです。アクセス権のないトークンには、データベースが存在するかどうかにかかわらず403が返されます。404はnot_foundです。- 存在しないテーブルを指定したSQLクエリには、
recovery: "fix_reference"が設定されます。正しい名前を確認するには、list_tablesまたはdescribe_tableを呼び出してください。 - サーバーのメモリが不足するクエリには、
recovery: "narrow"が設定されます。 - Enterpriseの取り込み専用ノードに送信されたクエリには、
recovery: "change_endpoint"が設定されます。 - その他のサーバー障害には、
recovery: "none"が設定されます。
EXPLAIN ANALYZEは同じ制限内でクエリを実行し、diagnostic_execution警告を追加します。
アナリストが不慣れなデータベースを調査する
アナリストは、Claude Desktop、Cursor、CodexなどのMCPクライアントや、ほかのエージェントハーネスを接続して、次のように質問できます。
Which sensors had the highest average temperature in the last 24 hours?
読み取り専用プロファイルでは、エージェントは次のことができます。
list_databasesを呼び出して、アクセス可能なデータベースを確認します。list_tablesとdescribe_tableを呼び出して、測定値と列を調べます。- タグとフィールドの分類が不確かな場合は、
unknownとして扱います。 db、q、必要に応じてparamsを使って、範囲を限定したSQLクエリを作成します。- 構造化JSON出力で
query_sqlを呼び出します。 - 結果、行数、切り詰めの有無、警告、相関メタデータを返します。
ユーザーは根拠に基づく回答と再利用可能なクエリを得られます。その間、エージェントは変更や管理のツールにアクセスすることなく、データを調査してクエリを実行します。
オペレーターがInfluxQLダッシュボードのクエリを調査する
オペレーターは既存のInfluxQLダッシュボードパネルの問題を調査し、次のように質問できます。
Why did this panel stop showing data after the deploy?
読み取り専用プロファイルでは、エージェントは次のことができます。
- ユーザーのクエリをInfluxQLのままにして、
query_influxqlを呼び出します。 SHOWクエリとスキーマの確認を使って、測定値と参照されている列を検証します。- 範囲を限定して最近の行をサンプリングし、データがないのか、クエリに問題があるのかを見分けます。
SELECT INTOや破壊的なステートメントなど、安全でない追加の試行を拒否します。- クエリ履歴を利用できる場合、MCPの結果を
system.queries.idと照合できるよう、request_id、query_id、query_id_sourceを返します。 - stdioトランスポートでは、stdoutをMCPプロトコルメッセージ専用に保つため、stderrに構造化ログを出力します。
ユーザーは、データの欠落、スキーマ名の変更、誤った時間条件、クエリの失敗など、実用的な診断結果を得られます。既定ではクエリ全文をログに記録せずに、調査の経緯を追跡できます。
利用可能なツール
| ツール名 | 説明 | 利用可能なバージョン |
|---|---|---|
load_database_context | オプションのカスタムデータベースコンテキストとドキュメントを読み込みます | すべてのバージョン |
get_help | InfluxDB の操作に関するヘルプとトラブルシューティングのガイダンスを取得します | すべてのバージョン |
write_line_protocol | InfluxDB のラインプロトコルを使用してデータを書き込みます | すべてのバージョン |
create_database | 新しいデータベースを作成します(クラウド固有の構成オプションを含みます) | すべてのバージョン |
update_database | データベース構成を更新します(すべての環境で保持期間、Cloud Dedicated/Clustered では maxTables/maxColumns) | すべてのバージョン |
delete_database | 名前を指定してデータベースを削除します(取り消しできません) | すべてのバージョン |
execute_query | 2.0.0 以降は非推奨です。query_sql を使用してください。互換性のために保持されています | すべてのバージョン |
query_sql | 構造化された応答メタデータとともに、範囲を制限した読み取り専用 SQL を実行します | すべてのバージョン |
query_influxql | 構造化された応答メタデータとともに、範囲を制限した読み取り専用 InfluxQL を実行します | すべてのバージョン |
get_measurements | データベース内のすべてのメジャーメント(テーブル)を一覧表示します | すべてのバージョン |
get_measurement_schema | メジャーメント/テーブルのスキーマ(列/型)を取得します | すべてのバージョン |
list_tables | データベース内のテーブル(メジャーメントとも呼ばれます)を一覧表示します | すべてのバージョン |
describe_table | 保守的な列カテゴリを使用してテーブルスキーマを説明します | すべてのバージョン |
investigate_database | 高レベルの読み取り専用データベース探索とサンプリングを実行します | すべてのバージョン |
create_admin_token | 有効期限を任意で設定して、名前付きの管理者トークンを作成します | Core/Enterprise のみ |
list_admin_tokens | すべての管理者トークンを一覧表示します(フィルタリングは任意です) | Core/Enterprise のみ |
create_resource_token | 特定のデータベースと権限に対するリソーストークンを作成します | Enterprise のみ |
list_resource_tokens | すべてのリソーストークンを一覧表示します(フィルタリングと並べ替えが可能です) | Enterprise のみ |
delete_token | 名前を指定してトークンを削除します | Core/Enterprise のみ |
regenerate_operator_token | オペレータートークンを再生成します(危険であり、取り消しできません) | Core/Enterprise のみ |
cloud_list_database_tokens | Cloud-Dedicated/Clustered クラスターのすべてのデータベーストークンを一覧表示します | Cloud Dedicated/Clustered |
cloud_get_database_token | ID を指定して特定のデータベーストークンの詳細を取得します | Cloud Dedicated/Clustered |
cloud_create_database_token | Cloud-Dedicated/Clustered クラスター用の新しいデータベーストークンを作成します | Cloud Dedicated/Clustered |
cloud_update_database_token | 既存のデータベーストークンを更新します | Cloud Dedicated/Clustered |
cloud_delete_database_token | Cloud-Dedicated/Clustered クラスターからデータベーストークンを削除します | Cloud Dedicated/Clustered |
list_databases | インスタンスで利用可能なすべてのデータベースを一覧表示します | すべてのバージョン |
health_check | InfluxDB の接続と正常性ステータスを確認します | すべてのバージョン |
利用可能なリソース
| リソース名 | 説明 |
|---|---|
influx-config | InfluxDB 設定への読み取り専用アクセス |
influx-status | 接続とヘルス状態をリアルタイムで確認 |
influx-databases | インスタンス内のすべてのデータベースの一覧 |
context-file | ユーザーが提供したカスタムのデータベースコンテキストとドキュメント |
利用可能なプロンプト
| プロンプト名 | 説明 |
|---|---|
list-databases | 利用可能なすべてのデータベースを一覧表示するプロンプトを生成 |
check-health | InfluxDB のヘルス状態を確認するプロンプトを生成 |
load-context | カスタムのデータベースコンテキストとドキュメントを読み込む |
セットアップと統合ガイド
1. 環境変数
Core/Enterprise InfluxDB の場合:
以下を指定する必要があります。
INFLUX_DB_INSTANCE_URL(例:http://localhost:8181/)INFLUX_DB_TOKENINFLUX_DB_PRODUCT_TYPE(coreまたはenterprise)
.env の例:
INFLUX_DB_INSTANCE_URL=http://localhost:8181/
INFLUX_DB_TOKEN=your_influxdb_token_here
INFLUX_DB_PRODUCT_TYPE=core
Cloud Serverless InfluxDB の場合:
以下を指定する必要があります。
INFLUX_DB_INSTANCE_URL(例:https://us-east-1-1.aws.cloud2.influxdata.com)INFLUX_DB_TOKENINFLUX_DB_PRODUCT_TYPE(cloud-serverless)
.env の例:
INFLUX_DB_INSTANCE_URL=https://us-east-1-1.aws.cloud2.influxdata.com
INFLUX_DB_TOKEN=your_influxdb_token_here
INFLUX_DB_PRODUCT_TYPE=cloud-serverless
Cloud Dedicated InfluxDB の場合:
INFLUX_DB_PRODUCT_TYPE=cloud-dedicated と INFLUX_DB_CLUSTER_ID に加えて、以下のトークンの組み合わせのいずれかを指定する必要があります。
オプション 1:データベーストークンのみ(クエリ/書き込み操作のみ):
INFLUX_DB_PRODUCT_TYPE=cloud-dedicated
INFLUX_DB_CLUSTER_ID=your_cluster_id_here
INFLUX_DB_TOKEN=your_database_token_here
オプション 2:管理トークンのみ(データベース管理のみ):
INFLUX_DB_PRODUCT_TYPE=cloud-dedicated
INFLUX_DB_CLUSTER_ID=your_cluster_id_here
INFLUX_DB_ACCOUNT_ID=your_account_id_here
INFLUX_DB_MANAGEMENT_TOKEN=your_management_token_here
オプション 3:両方のトークン(すべての機能):
INFLUX_DB_PRODUCT_TYPE=cloud-dedicated
INFLUX_DB_CLUSTER_ID=your_cluster_id_here
INFLUX_DB_ACCOUNT_ID=your_account_id_here
INFLUX_DB_TOKEN=your_database_token_here
INFLUX_DB_MANAGEMENT_TOKEN=your_management_token_here
Clustered InfluxDB の場合:
INFLUX_DB_PRODUCT_TYPE=clustered と INFLUX_DB_INSTANCE_URL に加えて、以下のトークンの組み合わせのいずれかを指定する必要があります。
オプション 1:データベーストークンのみ(クエリ/書き込み操作のみ):
INFLUX_DB_PRODUCT_TYPE=clustered
INFLUX_DB_INSTANCE_URL=https://your_cluster_host.com
INFLUX_DB_TOKEN=your_database_token_here
オプション 2:管理トークンのみ(データベース管理のみ):
INFLUX_DB_PRODUCT_TYPE=clustered
INFLUX_DB_INSTANCE_URL=https://your_cluster_host.com
INFLUX_DB_MANAGEMENT_TOKEN=your_management_token_here
オプション 3:両方のトークン(すべての機能):
INFLUX_DB_PRODUCT_TYPE=clustered
INFLUX_DB_INSTANCE_URL=https://your_cluster_host.com
INFLUX_DB_TOKEN=your_database_token_here
INFLUX_DB_MANAGEMENT_TOKEN=your_management_token_here
例と詳細については、対応する env.<instancetype>.example を参照してください。
MCP ツールプロファイルとテレメトリー(任意)
INFLUX_MCP_TOOL_PROFILE=readonly を使用すると、読み取り専用ツールのみが公開されます。
設定されていない場合、サーバーは完全なオペレーターツールプロファイルを使用します。
INFLUX_MCP_TOOL_PROFILE=readonly
ツール呼び出しのテレメトリーはデフォルトで有効になっており、構造化 JSON 行を
stderr に書き込みます。これにより、stdout は MCP stdio プロトコルメッセージ用に
確保されます。テレメトリーを無効にするには:
MCP_LOG_TOOL_CALLS=false
テレメトリーをファイルに書き込むには、ファイルバックエンドを設定します。
MCP_LOG_BACKEND=file
MCP_LOG_FILE=/logs/influxdb-mcp.jsonl
テレメトリーログには、ツール名、リクエスト ID、クエリ ID、所要時間、データベース、
行数、切り詰め状態、成功状態、エラーコードが含まれます。API
トークン、リクエストヘッダー、ツール引数、クエリテキストは記録されません。サンプルハーネスプロファイルは
harness-profiles/ にあります。承認設定と再現可能な E2E プロンプトについては、
AGENT_E2E_TESTS.md を参照してください。
2. MCP クライアントとの統合
A. ローカル(pnpm install と実行)
- 依存関係をインストールします:
pnpm install - サーバーをビルドします:
pnpm run build - ビルド済みサーバーを使用するように MCP クライアントを設定します。 例(
example-local.mcp.jsonを参照):{ "mcpServers": { "influxdb": { "command": "node", "args": ["/path/to/influx-mcp-standalone/build/index.js"], "env": { "INFLUX_DB_INSTANCE_URL": "http://localhost:8181/", "INFLUX_DB_TOKEN": "<YOUR_INFLUXDB_TOKEN>", "INFLUX_DB_PRODUCT_TYPE": "core" } } } }
B. ローカル(npx、インストール/ビルド不要)
- npx で直接実行します(npm への公開後に利用可能になります。現時点では動作しません):
{ "mcpServers": { "influxdb": { "command": "npx", "args": ["-y", "@influxdata/influxdb3-mcp-server"], "env": { "INFLUX_DB_INSTANCE_URL": "http://localhost:8181/", "INFLUX_DB_TOKEN": "<YOUR_INFLUXDB_TOKEN>", "INFLUX_DB_PRODUCT_TYPE": "core" } } } }
C. Docker
Docker 統合を実行する前に、Docker イメージをビルドする必要があります。
# Option 1: Use docker compose (recommended)
docker compose build
# Option 2: Use pnpm script
pnpm run docker:build
a) リモート InfluxDB インスタンスを使用する Docker(example-docker.mcp.json を参照):
{
"mcpServers": {
"influxdb": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"INFLUX_DB_INSTANCE_URL",
"-e",
"INFLUX_DB_TOKEN",
"-e",
"INFLUX_DB_PRODUCT_TYPE",
"mcp/influxdb"
],
"env": {
"INFLUX_DB_INSTANCE_URL": "http://remote-influxdb-host:8181/",
"INFLUX_DB_TOKEN": "<YOUR_INFLUXDB_TOKEN>",
"INFLUX_DB_PRODUCT_TYPE": "core"
}
}
}
}
b) 同じマシン上の Docker で実行している InfluxDB を使用する Docker(example-docker.mcp.json を参照):
MCP サーバーコンテナーから InfluxDB コンテナーに接続できるように、InfluxDB URL として host.docker.internal を使用します。
{
"mcpServers": {
"influxdb": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--add-host=host.docker.internal:host-gateway",
"-e",
"INFLUX_DB_INSTANCE_URL",
"-e",
"INFLUX_DB_TOKEN",
"-e",
"INFLUX_DB_PRODUCT_TYPE",
"influxdb-mcp-server"
],
"env": {
"INFLUX_DB_INSTANCE_URL": "http://host.docker.internal:8181/",
"INFLUX_DB_TOKEN": "<YOUR_INFLUXDB_TOKEN>",
"INFLUX_DB_PRODUCT_TYPE": "enterprise"
}
}
}
}
使用例
- 上記の説明に従って、MCP クライアントを使い、ツール、リソース、またはプロンプトを呼び出します。
- カスタムコンテキスト:データベースのドキュメントを提供するには、用意されている
context/database-context.mdファイルを編集するか、このファイルを削除して、名前に「context」を含む独自のコンテキストファイル(.json、.txt、.md)を作成します。load_database_contextツールまたはload-contextプロンプトを使ってアクセスします。 - すぐに使える設定テンプレートについては、
example-*.mcp.jsonファイルを参照してください。example-local.mcp.json- ローカル開発環境のセットアップexample-npx.mcp.json- NPX ベースのセットアップexample-docker.mcp.json- Docker ベースのセットアップexample-cloud-dedicated.mcp.json- すべての変数を含む Cloud Dedicatedexample-clustered.mcp.json- すべての変数を含む Clusteredexample-cloud-serverless.mcp.json- Cloud Serverless の設定
- 環境変数のテンプレートについては、
env.example、env.cloud-dedicated.example、env.clustered.example、env.cloud-serverless.exampleファイルを参照してください。 - MCP ハーネスのヒント、読み取り専用プロファイルの実行、テレメトリーの相関チェックについては、
AGENT_E2E_TESTS.mdを参照してください。
Cloud Serverless 統合テストの実行
Cloud Serverless テストコマンドは Claire の INFLUXDB3_CLOUD_* 変数を受け取り、
それらを MCP サーバーの実行時変数にマッピングします。
このコマンドは INFLUX_TEST_ENABLED=true と INFLUX_DB_PRODUCT_TYPE=cloud-serverless を設定します。
1Password を使用したローカルテストでは、~/.config/claire/cloud-serverless.env に
op:// 参照のみを保存します。
INFLUXDB3_CLOUD_URL=op://VAULT/ITEM/hostname
INFLUXDB3_CLOUD_TOKEN=op://VAULT/ITEM/token
INFLUXDB3_CLOUD_BUCKET=op://VAULT/ITEM/bucket
INFLUXDB3_CLOUD_ORG=op://VAULT/ITEM/org
トークンがテストプロセスの環境内にのみ存在するように、1Password 経由でライブテストを実行します。
op run --env-file ~/.config/claire/cloud-serverless.env -- \
pnpm run test:integration:cloud-serverless
代わりに、env.cloud-serverless.example を無視対象の
.env.cloud-serverless.local ファイルにコピーし、MCP の実行時変数をそこに設定することもできます。
その後、pnpm run test:integration:cloud-serverless を直接実行します。
別のプレーンテキストの認証情報ファイルを使用するには、INFLUX_TEST_ENV_FILE を設定します。
INFLUX_TEST_ENV_FILE=/path/to/serverless.env pnpm run test:integration:cloud-serverless
GitHub Actions は、cloud-serverless 環境にある既存の URL とトークンのシークレットを使って、同じコマンドを実行します。ワークフローでは mcp-ci-tests バケットを明示的に選択します。
データベースの保持ポリシーの例
Core/Enterprise - 90 日間の保持期間を設定
// Set 90-day retention policy on Enterprise instance
await mcp.update_database({
name: "my_database",
retentionPeriod: 7776000000000000, // 90 days in nanoseconds
});
Cloud Dedicated - 複数の設定を更新
// Update retention, maxTables, and maxColumnsPerTable
await mcp.update_database({
name: "my_database",
retentionPeriod: 7776000000000000, // 90 days
maxTables: 1000,
maxColumnsPerTable: 250,
});
一般的な保持期間
| 期間 | ナノ秒 |
|---|---|
| 7 日 | 604,800,000,000,000 |
| 30 日 | 2,592,000,000,000,000 |
| 90 日 | 7,776,000,000,000,000 |
| 180 日 | 15,552,000,000,000,000 |
| 1 年 | 31,536,000,000,000,000 |
サポートとトラブルシューティング
- 組み込みのヘルプとトラブルシューティングには、
get_helpツールを使用します。 - 接続に問題がある場合は、環境変数と InfluxDB インスタンスのステータスを確認してください。
- 高度な設定については、サンプルの
.envファイルと MCP 設定ファイル内のコメントを参照してください。
書き込みエラー
write_line_protocol は、一般的なメッセージではなく、InfluxDB 自体のエラーテキストを表示します。重複したタグキー、未認証のトークン、サイズ制限を超えるペイロードなどを InfluxDB が拒否した場合、ツールのエラーには具体的な理由が含まれます。たとえば次のとおりです。
Bad request: invalid line protocol - multiple instances of 'region' tag found
このサーバーに到達した 503 は、再試行可能として表現されます
(Service temporarily unavailable, retry the write: ...)。この場合、書き込みを安全に再試行できます。それ以外のステータスは再試行できません。
InfluxDB 3.11 との互換性
InfluxDB 3.11.5 Core および Enterprise(マルチノード Enterprise クラスターを含む)で検証済みです。Core と Enterprise は POST /api/v3/write_lp 経由で書き込みを行うため、3.11 でのレガシーな /api/v2/write エンドポイントに対する書き込み可用性の変更の影響を受けません。/api/v2/write を呼び出すのは clustered のみです。クエリツールとスキーマ検出ツールの動作は、対象データベースが Parquet(Core、またはアップグレード前の Enterprise)上にある場合も、PachaTree(Enterprise 3.11 以降のデフォルト、または --upgrade-pacha-tree の実行後)上にある場合も同じです。新しい system.pt_* テーブルは、他のシステムテーブルをすでに除外している table_schema = 'iox' フィルターによって、get_measurements/get_measurement_schema の結果から除外されます。
Core と Enterprise は、POST /api/v3/configure/token/named_admin 経由で名前付き管理者トークンを作成します。
名前付き管理者トークンには、有効期限を秒単位で任意に指定できます。
リソーストークンに対応しているのは Enterprise のみであるため、MCP サーバーは Core への接続に対してリソーストークン用ツールを公開しません。
MCP レジストリへの公開
安定版の GitHub リリースでは、最初に npm パッケージを公開し、その後
公式 MCP レジストリに
io.github.influxdata/influxdb3-mcp-server を登録します。
レジストリにはメタデータが保存され、クライアントは npm からサーバーをインストールします。
GitHub OIDC は id-token: write を使用してリリースジョブを認証するため、追加のレジストリシークレットは不要です。プレリリースとしてマークされたリリース、またはタグに - を含むリリースは、レジストリへの公開をスキップします。
リリースにタグを付ける前に、package.json、src/config.ts、最新の
CHANGELOG.md エントリ、および server.json 内の 2 つの version フィールドをまとめて更新してください。
package.json の mcpName が server.json の name と一致するようにしてください。ローカルで確認します:
node scripts/check-versions.js
bash scripts/install-mcp-publisher.sh /tmp/mcp-publisher
/tmp/mcp-publisher validate
インストーラーは、CI で使用する Linux amd64 パブリッシャーのバージョンを固定し、検証します。validate コマンドはレジストリに接続し、公開せずにメタデータを確認します。
CI はこれらのチェックを実行し、npm リリースジョブでもバージョンとタグを確認します。
最初のレジストリリリースでは、mcpName を含む新たに公開した npm バージョンを使用する必要があります。既存の npm バージョンに mcpName を追加することはできません。
公開後、各公開先でリリースを確認してください:
- npm: 該当する正確なパッケージバージョンが存在し、期待する
mcpNameが含まれている必要があります。 - Docker Hub: リリースバージョンのタグが付いたイメージを利用できる必要があります。
- MCP レジストリ: 正確なバージョンのエンドポイントが、期待するサーバー名とバージョンを返す必要があります。レジストリのリリースジョブがこの確認を自動化します。
リリースのチェックアウトから、npm とレジストリを手動で確認します:
version="$(node -p "require('./package.json').version")"
pnpm view "@influxdata/influxdb3-mcp-server@$version" version mcpName
docker manifest inspect "influxdata/influxdb3-mcp-server:$version"
curl --fail --silent --show-error \
"https://registry.modelcontextprotocol.io/v0.1/servers/io.github.influxdata%2Finfluxdb3-mcp-server/versions/$version" \
| jq --exit-status --arg version "$version" \
'.server.name == "io.github.influxdata/influxdb3-mcp-server" and .server.version == $version'
有効なデータベース環境変数を設定したうえで、MCP Inspector を使用して、公開した正確な npm バージョンのスモークテストも実施します:
npx @modelcontextprotocol/inspector --cli \
npx -y "@influxdata/influxdb3-mcp-server@$version" --method tools/list
メタデータの検証ではレジストリの説明を確認し、スモークテストでは公開されたパッケージが初期化され、ツールを公開することを確認します。該当するチェックに合格するまでは、リリースノートの確認チェックリストにチェックを入れないでください。
npm の公開に成功した後でレジストリへの公開に失敗した場合は、失敗したレジストリジョブのみを再実行してください。成功した npm ジョブを再実行すると、既存のバージョンを公開しようとしてしまいます。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。