FactVerse MCP — AI Agent 向けの管理された産業ツール
Model Context Protocol (MCP) を通じて、AI クライアントを管理された FactVerse ツール、産業データ、デジタルツインコンテキスト、シミュレーションサービス、承認済み操作経路へ接続します。
MCP とは?
Model Context Protocol は、AI アプリケーション(Claude Desktop、Cursor、自作 Agent など)が外部ツールやデータソースを安全に呼び出せるようにするオープン標準です。
FactVerse はプラットフォームのツールを 基盤 / モジュール(base / module) の区分で並列のガバナンス切片に分割しています。各切片は独立したエンドポイントで、per-customer API key から テナント + scope を解決して認証します。
| 切片 | 用途 | ケイパビリティ領域 |
|---|---|---|
| base(基盤) | 汎用読み取り + 汎用計算 + 横断的な実行 | 資産コンテキスト、ナレッジ、文書、データ品質、シミュレーション、予測、最適化、レビュー済み操作ドラフト |
| trafficops(モジュール) | 人流/車流オペレーション | フローコンテキスト、検問、レーン、ロスター計画、サージレビュー |
| pdm(モジュール) | 予知保全 | 設備健全性コンテキスト、異常レビュー、保全計画 |
| telcoops(モジュール) | 通信ネットワーク運用 | ネットワーク健全性、インシデントコンテキスト、容量計画 |
| semiops(モジュール) | 半導体 / クリーンルーム / Fab / SMT | クリーンルーム、ユーティリティ、施設環境、SMT 運用コンテキスト |
その他の顧客専用切片は、契約された導入範囲に応じて個別に有効化できます。
クイックスタート
以下は base 切片(汎用読み取り + 汎用計算)の例です。モジュールを使う場合は URL の
base を trafficops / pdm / telcoops / semiops に置き換え、対応する scope を持つ key を使います。
Claude Desktop
claude_desktop_config.json に追加:
{
"mcpServers": {
"factverse-base": {
"url": "https://your-factverse-server/mcp/base/",
"headers": {
"X-API-Key": "fvk_your_scoped_key"
}
}
}
}
Cursor IDE
.cursor/mcp.json に:
{
"mcpServers": {
"factverse-base": {
"url": "https://your-factverse-server/mcp/base/",
"headers": {
"X-API-Key": "fvk_your_scoped_key"
}
}
}
}
Python クライアント
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def main():
async with streamablehttp_client(
"https://your-factverse-server/mcp/base/",
headers={"X-API-Key": "fvk_your_scoped_key"}
) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
# この key で見えるツールを列挙
tools = await session.list_tools()
for tool in tools.tools:
print(f"{tool.name}: {tool.description[:60]}...")
# ツール呼び出し:設備状態を照会(base.read)
result = await session.call_tool(
"get_equipment_status",
{"equipment_id": "EQ-001"}
)
print(result)
# シミュレーション実行(base.compute.run)
result = await session.call_tool(
"run_simulation",
{
"scene_type": "trafficops",
"scene_id": "rts-main-hall",
"simulation_time": 480
}
)
print(result)
ツールリファレンスの流れ
このガイドでは、完全な手書きツールカタログを維持しません。FactVerse MCP ツールは製品モジュールと顧客環境に応じて変わるため、安定した利用手順は次の通りです。
| ステップ | 使用するページ |
|---|---|
| 顧客ワークフローを選ぶ | MCP ケイパビリティガイド |
| endpoint と scope を計画する | MCP Scope マトリクス |
| その key で見えるツールを一覧する | クライアントの実行時 MCP ツール発見 |
| 現在のツール名とパラメータを確認する | MCP ツールリファレンス |
| アクセス、参照元データ、計算、書き込み失敗を診断する | MCP エラーと監査 |
ツール名、説明、scope、パラメータは MCP ツールリファレンスで確認します。顧客環境での最終的な可用性は、実行時ツール発見を基準にします。
ケイパビリティ選択
| ニーズ | 開始点 | レビュー後に追加 |
|---|---|---|
| アセット、文書、参照元データのコンテキストを読む | /mcp/base/ + base.read | 領域固有信号のモジュール endpoint。 |
| シミュレーション、予測、最適化、空間分析を実行する | /mcp/base/ + base.compute.run | 仮定と出力のエンジニアリングレビュー。 |
| 作業指示または点検タスクをドラフトする | /mcp/base/ + base.action.write | 人による承認と監査記録。 |
| 予知保全出力をレビューする | /mcp/pdm/ + pdm.read | アセット記録とレビュー済み操作ドラフト用の /mcp/base/。 |
| モジュール化された運用領域をレビューする | 有効化されたモジュール endpoint | 共通文書とアセットコンテキスト用の /mcp/base/。 |
認証・認可(key → テナント + scope)
各 /mcp/<切片> はガバナンス対象のエンドポイントです。各リクエストは per-customer API key で認証し、サーバ側が key からテナントと権限 scope を解決します(クライアントはテナントを渡さず、共有キーも使えません)。
- Header:
X-API-Key: fvk_…(Authorization: Bearerではない) - key は管理者がテナント単位で発行(ハッシュ保存・一度だけ表示)。自己発行不可。
- key なし → ゲートウェイで 403、無効/失効 key → 401。
Scope(その key が呼べるツール)
| scope | 切片 | ケイパビリティ領域 |
|---|---|---|
base.read | base | 資産、ナレッジ、文書、コネクタ、データ品質、承認待ちに対する汎用読み取り |
base.compute.run | base | シミュレーション、最適化、予測、分析、空間ワークフローに対する汎用計算 |
base.action.write | base | レビュー済み操作ドラフトと管理された記録作成。既定では付与しない |
trafficops.read | trafficops | フロー、検問、レーン、ロスター、サージレビューに対する TrafficOps モジュールコンテキスト |
pdm.read | pdm | 設備健全性、異常、保全計画に対する予知保全モジュールコンテキスト |
telcoops.read | telcoops | ネットワーク健全性、インシデント、容量計画に対する TelcoOps モジュールコンテキスト |
semiops.read | semiops | 半導体、クリーンルーム、ユーティリティ、施設環境、SMT 運用コンテキスト |
モジュールは相互に分離されています。trafficops の key は pdm/telcoops/semiops のツールも base のツールも呼べません。横断アクセスが必要なら 1 つの key に複数 scope を付与します。
key が必要な scope を持たない tools/call はフェイルクローズで拒否され、missing required scope '…' を返します。1 つの key は複数の scope を保持できます。
使用シナリオ
1. Claude が施設シナリオをレビュー
ユーザー: 「7号冷凍機の最近の運転は? 周波数を 42Hz に下げたらどうなる?」
Claude の呼び出し:
→ get_equipment_status(equipment_id="CHILLER-007") # base.read
→ run_simulation(scene_type="fms", config_overrides={"frequency": 42}) # base.compute.run
→ 統合分析して回答
2. 自作 Agent がフォローアップ操作をドラフト
# 毎時 設備健全性をチェック(pdm.read)、レビュー後にフォローアップ作業票をドラフト(base.action.write)
health = await pdm_session.call_tool("get_equipment_health", {"equipment_name": "critical pump"})
for equipment in health.data["equipment"]:
if equipment["health_score"] < 60:
await base_session.call_tool("create_work_order", {
"equipment_id": equipment["id"],
"priority": "HIGH",
"title": "低い健全性スコアの確認",
"description": f"AI が健全性スコア 60 未満を検出: {equipment['health_score']}"
})
3. Cursor で生産データを照会
Cursor IDE で semiops 切片に接続し、「クリーンルーム CR-001 のパーティクル傾向は?」と質問 → Cursor が MCP 経由で get_particle_trend を呼び出します。
本番クライアント要件
FactVerse MCP は /mcp/base/、/mcp/trafficops/、/mcp/pdm/、/mcp/telcoops/、/mcp/semiops/ などの管理された HTTPS エンドポイントとして公開されます。実際に有効なエンドポイントは、顧客環境で有効化されたモジュールに依存します。
本番クライアントは HTTPS を使用し、各リクエストで X-API-Key を送信し、利用可能なツールは MCP の実行時ディスカバリで確認してください。末尾スラッシュ付きの /mcp/<切片>/ が標準のエンドポイント形式です。
クライアントはテナント識別子を渡すべきではありません。プラットフォームは発行済み key からテナントと scope を解決し、key が必要な scope を持たないツール呼び出しを拒否します。