xbbg MCP について
xbbg MCPは、xbbg-asyncを介してBloombergのリクエストとレスポンスを扱う、コーディングエージェント向けのローカルstdioサーバーです。Arrowスキーマメタデータ付きの上限管理された構造化JSONを返し、参照、履歴、一括、日中、クエリ、検索、オークションデータのツールを備えています。
主な機能
- 01Bloombergの参照データと履歴データ
- 02一括および日中データのリクエスト
- 03BQLクエリとBloomberg検索
- 04オークション会場の解決とスナップショット
- 05権限と遅延データの確認
- 06Arrowスキーマ付き上限管理JSON
活用シーン
- 01コーディングエージェントからBloombergデータを照会
- 02日中バーや履歴データの取得
- 03セッションの遅延状況と権限の確認
- 04オークションスナップショット用の会場解決
MCP 対応
xbbg MCPは、Claude CodeやOpenCodeなどのクライアント向けローカルstdio MCPサーバーです。xbbg-asyncを基盤とするBloombergのリクエスト/レスポンスツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
xbbg-mcp
最終更新日:2026-10-20。
xbbg-async を利用した、Bloomberg のリクエスト/レスポンスワークフロー向けの Stdio MCP サーバーです。
このバイナリは、ローカルの MCP サーバープロセスを起動し、stdio 経由でツールを呼び出せる Claude Code や OpenCode などのコーディングエージェントを対象としています。
提供する機能
現在のサーバーが提供するのは、リクエスト/レスポンスツールのみです。
bdp- 参照データbdh- ヒストリカルデータbds- バルクデータbdib- 日中バーbql- Bloomberg Query Languagebsrch- Bloomberg 検索bflds- フィールドメタデータの検索resolve_venues- 複合株式および優先株式の入力を、検証済みのオークション取引所に解決auction_snapshot- 主要取引所のオークションおよびインバランス参照データcheck_entitlements- Bloomberg サービスの権限 ID を確認delay_status- このセッションにおけるティッカーごとの遅延/リアルタイム状況。オプションでフィード EID の権限確認も可能request- 汎用の生データ/カスタムリクエスト経路
レスポンスは、Arrow スキーマメタデータを含む上限付きの構造化 JSON として返されるため、エージェントは上限のないペイロードを受け取らずにデータの形状を確認できます。制限は行数、セル数、文字列、メタデータの検査/保持、最終的にシリアル化されるペイロードに適用されます。行数の制限だけでは、出力サイズの上限にはなりません。
オークション会場とスナップショット
resolve_venues は、複合株式ティッカーまたは ISIN を主要上場取引所に、優先株を価格ソースに振り分けます。取引所を明示した上場情報はそのまま使用されます。このレシピは、重複や入力順を含め、入力ごとに 1 行を保持し、status(resolved、unresolved、unsupported、mismatch)と error を記録します。結果には、検索キー、証券の kind、株式の composite ティッカー、会場トピック、会場 FIGI、ルーティング方法、取引所、MIC、価格ソースも含まれます。元の入力文字列は security に保持され、検索キーはトリミングされます。有効な ISIN のみの場合は /isin/<ISIN> になります。
{
"securities": ["IBM US Equity", "AAPL US Equity"],
"pcs_overrides": {"NEW YORK": "SNY2"}
}
pcs_overrides は、どちらのツールでも任意です。キーは優先取引所名で、トリミング後に大文字へ変換され、内部の連続するスペースは 1 つにまとめられます。値はトリミング後に大文字へ変換された価格ソースコードです。オーバーライドは組み込みのマッピングより優先されます。空のコードや N.A. のような欠損値コードを指定すると、その取引所のマッピングは無効になります。同じ正規化済み取引所キーに対して表記が競合する場合は拒否されます。解決済みとして報告される前に、すべてのルートが検証されます。未登録の優先取引所には pcs_overrides エントリーが必要です。
auction_snapshot は、まず会場を解決し、その会場の Bloomberg 参照データを使用して要求されたフィールドを読み取ります。失敗または不一致の入力は、データフィールドを null にした状態で、元のステータスとエラーの行を保持します。結果には、input_order、security、venue_topic、status、error に続いて、選択された型付きフィールドが含まれます。
{
"securities": ["IBM US Equity", "AAPL US Equity"],
"groups": ["imbalance", "quotes"],
"fields": ["IN_AUCTION_RT"]
}
任意の groups リストには、imbalance、indicative、state、halts、results、composite、quotes、default を指定できます(トリミングされ、大文字小文字は区別されません)。グループは指定された順に展開され、その後に明示的な fields が指定順に続きます。フィールド名はトリミング後に大文字へ変換され、重複は最初に出現したものを残して削除されます。不明なグループは無効なパラメーターです。選択結果が空の場合は、デフォルトのオークショングループとして、imbalance、indicative、state、halts、results の順に使用されます。明示的なフィールドまたはグループを指定すると、この暗黙のデフォルトは置き換えられます。デフォルトを拡張するには、groups に default を含めます。
どちらのツールも、空白以外の証券を 1 つ以上指定する必要があります(件数制限はありませんが、結果は出力上限によって制限されます)。価格ソースのオーバーライドは最大 128 件まで指定できます。auction_snapshot では、グループエントリーは最大 8 件、明示的なフィールドは最大 256 件、展開後の一意なフィールドは最大 256 件まで指定できます。オーバーライドのキーと値を含むすべての入力文字列は、UTF-8 で 1,024 バイトまでです。空白のみの証券、フィールド、グループ名、オーバーライドキーは、黙って除外されるのではなく拒否されます。マッピングを無効にするため、空のオーバーライド値を指定できます。
時刻と遅延データ: 時刻フィールドは取引所ではなく、端末のローカル時刻です。Bloomberg は、行内に遅延を示さずに遅延値を返すことがあります。このセッションの遅延フラグは、delay_status、bdp、bdh、bdib、request の on_delayed、または bdp での IS_DELAYED_STREAM と EXCHANGE_DELAY の要求から取得できます。詳細は遅延データを参照してください。
時間関連のセルには、既存の Arrow JSON 文字列の規約が適用されます。Date32 は YYYY-MM-DD、Time64 は、日付やタイムゾーンを追加せずに HH:MM:SS[.fraction] とします。タイムスタンプには日付と時刻の両方が含まれます。UTC の場合は末尾に Z が付き、その他の宣言済みタイムゾーンではオフセットが付きます。タイムゾーンのないタイムスタンプには接尾辞がありません。小数秒は丸めずに保持され、オークションスナップショットのマイクロ秒も含まれます。null セルは JSON の null のままです。同じシリアル化は、value_time や value_ts などの型付きリクエスト列にも適用されます。Arrow スキーマには元の時間型、単位、タイムゾーンが保持されます。
どちらのツールも、bdp と同じ、Arrow スキーマのメタデータを含む上限付き JSON エンベロープを使用します。結果の上限によって行またはフィールドが省略される場合があるため、返された行を入力全体として扱う前に、必ず切り詰めフラグと件数を確認してください。
エンタイトルメント ID
returnEids に対応する Bloomberg の操作を使用するルートでのみ、return_eids: true を設定してください。
| MCP ルート | Bloomberg の操作 | EID オプション |
|---|---|---|
bdp, bds | ReferenceDataRequest(BDS/一括取得を含む) | return_eids: true |
bdh | HistoricalDataRequest | return_eids: true |
bdib | IntradayBarRequest | return_eids: true |
request | IntradayTickRequest | return_eids: true |
専用の bdp、bds、bdh、bdib ツールでは、return_eids が直接指定されています。イントラデイティックには汎用の request ツールを使用してください。
{
"service": "//blp/refdata",
"operation": "IntradayTickRequest",
"extractor": "intraday_tick",
"security": "AAPL US Equity",
"start_datetime": "2024-01-15T09:30:00",
"end_datetime": "2024-01-15T10:00:00",
"event_types": ["TRADE"],
"return_eids": true
}
メタデータと出力の予算内に保持された場合、結果には EID マップが metadata["xbbg.eid_data"] に構造化 JSON として含まれ、schema、row_count、returned_rows、truncated、rows も含まれます。truncated は単一のブール値ではなく、フラグのオブジェクトです。存在する場合は metadata_counts["xbbg.eid_data"] を確認し、EID と証券の総数および返却数、valid、counts_complete を確認してください。不明な総数は 0 ではなく null です。truncation_counts.omitted_priority_metadata は、保持できなかった優先メタデータを示します。収集した ID を読み取り専用の check_entitlements ツールに渡してください。service の既定値は //blp/refdata です。
{ "eids": [101, 202], "service": "//blp/refdata" }
確認結果には、service、eids、entitled、failed_eids に加え、両方の ID リストの総数、返却数、省略数、およびコンポーネントごとの truncated フラグが含まれます。失敗した ID には、入力 ID のエコーバックより先に、共有のセル/バイト上限が割り当てられます。短縮されたリストを、エンタイトルメント結果の全体として解釈しないでください。
遅延データ
Bloomberg は行に印を付けずに遅延データを配信します。遅延した bdp スナップショット、bdh の遅延した「今日」の行、現在時刻から遅延時間分だけ遡った時点で止まる日中バーやティックが該当します。IS_DELAYED_STREAM はリクエストを行ったセッションの遅延フラグです。EXCHANGE_DELAY は 15 Minutes のようなテキスト形式の取引所標準の遅延時間で、リアルタイム証券にも設定されています。
delay_status は両方のフィールド、EXCH_CODE、フィード EID を1回の参照データリクエストで読み取り、入力順に一意のティッカーごとに1行を返します。
{ "tickers": ["VOD LN Equity", "AAPL US Equity"], "check_identity": false }
| 列 | 意味 |
|---|---|
ticker | リクエストされた証券 |
delayed | このセッションが遅延データを受信しているかどうか(IS_DELAYED_STREAM)。不明な場合は null |
delay_minutes | EXCHANGE_DELAY から解析したリアルタイムからの遅延分数。リアルタイムまたは不明な場合は null |
exchange_delay | EXCHANGE_DELAY の生テキスト |
exch_code | EXCH_CODE |
realtime_eid1 ~ realtime_eid4 | リアルタイムフィード EID FEED_EID1 ~ FEED_EID4。Bloomberg が返さない場合は null |
delayed_eid | 遅延フィード EID FEED_DELAYED_EID1。存在しない場合は null |
realtime_entitled | セッション ID がすべてのリアルタイムフィード EID の利用権を持つかどうか。check_identity が設定され、ティッカーに1つ以上の EID がある場合を除き null |
delayed_entitled | セッション ID が delayed_eid の利用権を持つかどうか。check_identity が設定され、EID が存在する場合を除き null |
error | Bloomberg の証券エラーメッセージ。それ以外は null |
check_identity のデフォルトは false で、どの Desktop Terminal でも動作します。true に設定すると、返されたすべてのフィード EID に対して //blp/mktdata を使った利用権チェックも1回実行し、失敗を各ティッカーに対応付けます。これには認証済み ID が必要です。XBBG_MCP_AUTH_METHOD で設定した SAPI/B-PIPE 認証(実行環境を参照)、または EMRS に登録された Desktop API ユーザーが必要です。そうでない場合、呼び出しは失敗します。
on_delayed は bdp、bdh、bdib、および汎用 request ツール(ReferenceDataRequest、HistoricalDataRequest、IntradayBarRequest、または IntradayTickRequest)のデータリクエストと同時に同じチェックを実行します。bds はこの機能を提供しておらず、汎用 request ツールでは、BDS/bulk を含む他のすべての操作で無効なパラメーターとして拒否されます。
bdpでは、リクエストしていないIS_DELAYED_STREAMとEXCHANGE_DELAYのフィールドが同じリクエストに追加されます。追加されたフィールドは行として返されません。bdh、bdib、日中ティックのリクエストでは、期間が直近24時間に及ぶ場合に限り、小さな参照データリクエストがもう1つ送信されます。具体的には、end_dateが昨日(UTC)以降、またはend_datetimeが24時間前以降の場合です。それより古い期間ではチェックが省略され、メタデータも追加されません。
on_delayed | 結果 |
|---|---|
| 省略 | チェックなし |
warn | データと metadata["xbbg.delayed"] |
ignore | データと metadata["xbbg.delayed"] |
raise | Bloomberg is delivering delayed data; on_delayed=raise と遅延ティッカーを含むエラーで呼び出しが失敗します |
MCP の結果には警告チャンネルがないため、ここでは warn と ignore は同じ動作になります。メタデータを確認してください。メタデータはティッカーをキーとし、Bloomberg がフラグを返さなかったティッカー(無効な証券、または該当しないフィールド)は含まれません。
{
"VOD LN Equity": { "delayed": true, "delay_minutes": 15 },
"AAPL US Equity": { "delayed": false, "delay_minutes": null }
}
xbbg.delayed は優先メタデータです。metadata_counts["xbbg.delayed"] は返されたプロパティと省略されたプロパティを報告し、保持できなかった場合は truncation_counts.omitted_priority_metadata に一覧表示されます。
GitHub Releases からインストール
macOS arm64 および Linux amd64 の場合、次のコマンドで最新のラッパーとバイナリのペアをインストールします。
curl -fsSL https://raw.githubusercontent.com/underloam/xbbg/main/scripts/install-xbbg-mcp.sh | sh
特定のリリースをインストールするには、次のコマンドを実行します。
curl -fsSL https://raw.githubusercontent.com/underloam/xbbg/main/scripts/install-xbbg-mcp.sh | sh -s -- 1.0.0
インストーラーは、デフォルトで ~/.local/bin/ に次の 2 つのファイルを配置します。
xbbg-mcp- 起動ラッパーxbbg-mcp-real- コンパイル済みバイナリ
GitHub のリリースアセットには、起動ラッパーとコンパイル済み xbbg バイナリのみが含まれます。Bloomberg SDK ファイルや Bloomberg ランタイムは含まれません。Bloomberg との契約および利用資格に基づき使用が許可されている入手元から、これらをローカルに用意する必要があります。
GitHub Release の tar/zip アセットは、引き続き未加工バイナリの配布チャネルです。MCPB アセットは、MCPB 対応クライアントおよびレジストリ向けのディレクトリとワンクリックのローカルコネクタの配布チャネルです。
ラッパーは次の順序で Bloomberg ランタイムを探します。
XBBG_MCP_LIB_DIRBLPAPI_LIB_DIRBLPAPI_ROOTvendor/blpapi-sdk/にローカルに配置した、使用が許可された SDK- 公式 Python
blpapiパッケージ
Bloomberg の Python パッケージをインストールすると、通常、追加のシェル設定なしでラッパーを実行できます。
pip install blpapi --index-url https://blpapi.bloomberg.com/repository/releases/python/simple/
Windows のリリースアセットは .zip ファイルとして添付されますが、簡易インストーラーは現在 macOS/Linux のみを対象としています。
MCPB をインストール
Claude Desktop および MCPB 対応レジストリでは、GitHub Releases に添付された xbbg-mcp-v<VERSION>.mcpb アセットを使用できます。MCPB は現在、macOS arm64、Linux amd64、および Windows amd64 に対応しています。手動インストールやトラブルシューティングには、未加工のプラットフォーム別 tar/zip アセットも引き続き利用できます。
MCPB には、Bloomberg SDK ファイル、Bloomberg ランタイムライブラリ、認証情報、市場データは含まれません。XBBG_MCP_LIB_DIR、BLPAPI_LIB_DIR、BLPAPI_ROOT を設定するか、Bloomberg 公式の Python blpapi パッケージをインストールして、起動プログラムが使用を許可された Bloomberg ランタイムをローカルで見つけられるようにしてください。
Windows では、MCPB の PowerShell 起動プログラムは同じ順序で検索した後、Python パッケージにフォールバックする前に PATH もスキャンします(Bloomberg Terminal のインストール先は C:\blp\DAPI に設定されます)。xbbg-mcp.exe は 64 ビットで、blpapi3_64.dll が必要です。バージョンを読み取れないランタイムや、バイナリがインポートするエントリポイントをエクスポートできないほど古いランタイムは、診断メッセージを表示してスキップされます。現在の最小バージョンである Bloomberg API 3.20.0 は、バンドルのパッケージ化時にインポートされたシンボルのバージョンから導出されます。導出できない場合、ゲートを黙って無効にするのではなく、パッケージ化が失敗します。起動プログラムは、検証済みのディレクトリを子プロセスの作業ディレクトリと PATH の先頭の両方に設定し、実行ファイルの隣や Windows システムディレクトリにある優先度の高い DLL がこれをシャドーイングする場合は実行を拒否します。標準ハンドルを継承して xbbg-mcp.exe を起動するため、MCP ホストは PowerShell を介さず、バイナリと直接通信します。ローダーの状態に関する診断メッセージでは、選択された Bloomberg ランタイムを示しますが、直接または推移的なローダーの障害すべての原因がそのランタイムであるとは断定しません。
トラブルシューティング
サーバーは stderr にのみ書き込みます。Claude Desktop などの MCP ホストは、これをサーバーログに記録します。ホストによって stdin が閉じられると、xbbg-mcp: stdin closed; shutting down と出力します。stdin の読み取り失敗、リーダースレッドの障害、または異常なサービス停止が発生した場合は、ゼロ以外のプロセスステータスを返します。診断メッセージの書き込みはベストエフォートで行われるため、stderr ハンドルが閉じていても stdin リーダーが終了したり、障害が正常な EOF に変わったりすることはありません。RUST_LOG=info(または debug)を設定すると、エンジンと MCP ライブラリ独自のログ行も表示されます。
ソースからビルド
bash ./scripts/sdktool.sh
cargo build --release -p xbbg-mcp --locked
./scripts/xbbg-mcp
Claude Code
claude mcp add --transport stdio xbbg -- ~/.local/bin/xbbg-mcp
OpenCode
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"xbbg": {
"type": "local",
"command": ["/Users/you/.local/bin/xbbg-mcp"],
"enabled": true
}
}
}
ディレクトリとレジストリへの公開
公式 MCP Registry:リリースに .mcpb アセットが含まれた後、生成された server.json を公開します。
GitHub MCP Registry:公式レジストリへの取り込み後、サーバーが表示されることを確認します。
Claude Connectors Directory:MCPB をデスクトップ拡張機能として提出します。リモートコネクターの提出は、Bloomberg ローカルのワークフローでは既定の方法ではありません。
Smithery:MCPB バンドルを公開します。
Glama:公式レジストリへの公開後にインデックス登録を確認します。Bloomberg ランタイムがないと自動サンドボックスビルドを実行できない場合は、リストのメタデータに重点を置きます。
PulseMCP:公式レジストリへの取り込みを待つか、Pulse の提出ページを利用します。
MCP.so:正規のレジストリメタデータが公開された後、GitHub リポジトリ/リリースを提出します。
ランタイム環境
xbbg-mcp は Rust コアと同じエンジン指向の接続設定を受け付けます。利用可能な場合は、MCP 接頭辞付きの名前が優先されます。
一般的な設定:
XBBG_MCP_HOST/XBBG_HOSTXBBG_MCP_PORT/XBBG_PORTXBBG_MCP_AUTH_METHOD/XBBG_AUTH_METHODXBBG_MCP_APP_NAMEXBBG_MCP_BQL_APP_NAME– 任意の共有エンジン用 BQL クライアントコンテキストの既定値。セッション認証とは独立していますXBBG_MCP_DIR_PROPERTYXBBG_MCP_USER_IDXBBG_MCP_IP_ADDRESSXBBG_MCP_TOKENXBBG_MCP_REQUEST_POOL_SIZEXBBG_MCP_VALIDATION_MODE/XBBG_VALIDATION_MODE–disabled(既定値)、lenient、strictXBBG_MCP_SDK_LOG_LEVEL/XBBG_SDK_LOG_LEVEL–off(既定値)、fatal、error、warn、info、debug、traceXBBG_MCP_OVERFLOW_POLICY/XBBG_OVERFLOW_POLICY–drop_newest(既定値)、block
サポートされている認証方法:
noneuserappuserappdirdirectorymanualtoken
BQL クライアントコンテキスト
共有 Rust エンジンが、任意の BQL アプリケーション名の既定値を管理します。
XBBG_MCP_BQL_APP_NAME は、このサーバーからディスパッチされる、汎用の request ツールを含むすべての BQL sendQuery に対して EngineConfig.bql_app_name を設定します。
bql ツールの呼び出しごとの app_name と、明示的な clientContext.appName 要素または kwargs は、エンジンの既定値を上書きします。値が指定されていない場合、アプリケーション名は省略され、現在の Bloomberg の既定値は変更されません。名前が自動的に選択されることはありません。
{
"expression": "get(name()) for('IBM US Equity')",
"app_name": "example-authorized-bql-app"
}
Bloomberg 環境で認可されているアプリケーション名を使用してください。この設定によって BQL エンタイトルメントが付与されたり、セッション認証が変更されたりすることはありません。
XBBG_MCP_APP_NAME は引き続き認証設定であり、BQL クライアントコンテキストの設定ではありません。呼び出しごとの app_name が明示的に空欄の場合、サーバーのアプリケーション名にはフォールバックせず、拒否されます。
SDK のアプリケーションモード認証とアプリケーション ID キーは、別個のセッション設定です。BQL の既定値はリクエスト要素であり、SDK の認証設定もセッション識別オプションも設定しません。
汎用の request ツールは、文字列値の elements マップ内でドット区切りのキーとして clientContext.appName も受け付けます。ここではネストされたオブジェクトは受け付けません。
致命的な BQL 応答例外は、サービスと操作のコンテキストとともに MCP エラーメッセージに保持されます。メッセージには、以下の文字列およびシリアライズ済み出力の上限が引き続き適用されます。短縮されたエラーには message_truncated: true が含まれます。
結果の上限
これらの MCP 専用環境設定では整数値を使用します。設定されていない場合は、以下のデフォルト値が使用されます。最小値を下回る値や無効な整数を指定すると、上限が暗黙的に無効になるのではなく、設定に失敗します。
| 設定 | デフォルト | 最小値 | 対象 |
|---|---|---|---|
XBBG_MCP_MAX_ROWS | 500 | 1 | 返される行 |
XBBG_MCP_MAX_CELLS | 50,000 | 1 | 返されるセルと検査対象のスキーマ列。共有される権限リスト項目と検証エラーレコード数にも適用 |
XBBG_MCP_MAX_METADATA_PROPERTIES | 50,000 | 1 | 保持されるメタデータのプロパティ/配列項目の合計数と、メタデータエントリの検査 |
XBBG_MCP_MAX_METADATA_BYTES | 65,536 | 1 | 解析前のメタデータ検査用生バイト数の合計、および保持されるメタデータとその件数サマリー |
XBBG_MCP_MAX_STRING_CHARS | 2,048 | 1 | 文字列あたりの Unicode 文字数 |
XBBG_MCP_MAX_STRING_BYTES | 8,192 | 3 | 文字列あたりの UTF-8 バイト数。必要な場合は切り詰めマーカーを含む |
XBBG_MCP_MAX_RESULT_BYTES | 1,048,576 | 2,048 | スキーマ、メタデータ、診断情報を含む、最終的にシリアライズされた構造化 JSON ペイロード。シリアライズされたエラー結果にも適用 |
最終バイト数の上限には、JSON エスケープとエンベロープのオーバーヘッドが含まれます。生の文字列長の合計だけを示すものではなく、周囲の MCP トランスポートフレーミングも対象外です。各上限は最大値です。行より先にメタデータとスキーマが容量を消費するため、ペイロードで返される行数や列数は、それぞれの個別上限を下回る場合があります。セル数の上限は、返される行と列全体に適用され、行ごとに個別に適用されるわけではありません。行数がゼロのバッチでも、スキーマの出力には上限があります。
文字列値は Unicode の文字境界で短縮されます。列名とメタデータキーは識別子であるため、大きすぎる名前は短縮せずに省略されます。また、JSON の行では、重複する列名が暗黙的に上書きされることはありません。ネストされた Arrow 値は、無制限にセルを再帰的に整形する代わりに、上限付きの省略マーカーで表されます。省略件数により、通常のスカラー値との区別が可能です。JavaScript の安全な範囲を超える整数値は、丸められた数値ではなく文字列として返されます。
メタデータの検査は、JSON 解析前に上限が適用されます。大きすぎるエントリや、合計上限内で検査できない汎用メタデータは、全件走査せずに省略されることがあります。xbbg.security_errors、xbbg.field_exceptions、xbbg.delayed、xbbg.eid_data は、汎用メタデータや行より優先されます。診断レコードは任意のプロパティの断片ではなく、構造を保ったまま保持されますが、文字列の内容とレコード数には上限があります。優先度の高いメタデータでも、収まらない場合は省略されることがあります。
出力診断とエラー
結果エンベロープは拡張可能です。たとえば、1 行の結果には次の抜粋を含めることができます(ここでは追加のカウンターを省略しています)。
{
"schema": [{ "name": "PX_LAST", "data_type": "Float64", "nullable": true }],
"row_count": 1,
"column_count": 1,
"returned_rows": 1,
"returned_columns": 1,
"returned_cells": 1,
"result_budget_bytes": 1048576,
"truncated": {
"rows": false,
"columns": false,
"cells": false,
"values": false,
"metadata": false,
"output": false
},
"rows": [{ "PX_LAST": 190.1 }]
}
row_count と column_count はソースバッチを示し、returned_* フィールドは出力された内容を示します。truncation_counts は、省略された内容と検査の完全性を示すもので、omitted_rows、omitted_columns、omitted_cells、known_omitted_value_bytes、omitted_complex_values、known_omitted_metadata_properties が含まれます。完全性が確認されていない限り、known_* カウントは下限として扱い、網羅的なスキャンの証拠とはみなさないでください。特に、schema_column_count_complete、metadata_input_count_complete、metadata_property_count_complete は関連する診断情報の確度を示します。入力カウントが不完全な場合、omitted_metadata_input_bytes は null になります。オプションの metadata_counts は、キーごとの追加診断情報を提供します。
エラーにも上限があります。リクエスト、検証、内部の各失敗は、成功形式の空の結果ではなく、エラーとして返されます。エラーメッセージには、文字列およびエスケープ済み JSON のバイト数制限が適用され、短縮された場合は message_truncated で示されます。既存のアダプターのエラーコードは保持され、省略された付随的なエラーデータは error_data_omitted で示されます。検証エラーでは、path、message、レコードごとの truncated フラグを含む、サイズ制限付きの構造化された errors レコードに加え、total_errors、returned_errors、omitted_errors が返されます。結果の最小予算である 2,048 バイトでも、主要な検証診断を格納する領域が確保されます。長い要約やオプションの suggestion よりも、診断のパスとメッセージが優先されます。パスとメッセージが短縮されたり、候補や後続のレコードが省略されたりすることはありますが、後続のエラーによって主要な診断が置き換えられることはありません。
シリアル化の同時実行
サーバーは 2 つの非同期ランタイムワーカーを使用します。小さな結果変換はインラインで処理し、大規模または負荷の高い変換はブロッキングワーカーにオフロードします。共有の許可数制限により、オフロードされたシリアル化を同時に最大 2 件までに抑え、変換が完了するまで許可を保持します。これはシリアル化の同時実行数を制限するものであり、プロセス全体のスレッド数を制限するものではありません。Bloomberg エンジンの処理と標準入出力の処理には、それぞれ独自のライフサイクルがあります。
プライバシーポリシー
xbbg-mcp は、標準入出力を使用するローカルの MCP サーバーとして動作します。テレメトリや使用状況データを、underloam、GitHub、Anthropic、Smithery、Glama、その他の第三者に送信することはありません。
ツール呼び出しはユーザーのマシン上で処理され、ユーザーが設定した Bloomberg ランタイム/API エンドポイント(XBBG_MCP_HOST / XBBG_HOST、デフォルトは localhost:8194)にのみ転送されます。その際は、ユーザー自身の Bloomberg 契約および利用資格に従います。結果は、サーバーを起動した MCP クライアントのプロセスにのみ返されます。
Bloomberg は、リクエスト時に利用資格を検証します。これには証券およびフィールドごとのアクセス権が含まれます。ローカルセッションが有効であっても、ユーザーの DAPI、SAPI/B-PIPE、または ZFP の利用資格セットが要求されたデータをカバーしていない場合、空または一部の結果が返されることがあります。
サーバーは環境変数から設定を読み込み、リクエストデータ、認証情報、Bloomberg の応答をディスクに保存しません。
スモークテスト
ローカルでビルドした後、次のコマンドで標準入出力のハンドシェイクと、いくつかのライブリクエストを確認します。
uv run python -X utf8 scripts/xbbg_mcp_smoke.py
このスクリプトは、アクティブな Bloomberg 接続と、ローカルでビルドされた target/debug/xbbg-mcp バイナリを必要とします。デバッグビルドが存在しない場合は、target/release/xbbg-mcp を使用します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。