trocco-mcp-tools

trocco-mcp-tools

Read-only MCP tools for TROCCO API, enabling workflow and BigQuery datamart audit information retrieval.

Category
访问服务器

README

trocco-mcp-tools

TROCCO API を Model Context Protocol (MCP) から扱うための読み取り専用ツール群です。TROCCO workflow と BigQuery datamart の差分監査に必要な情報を取得し、ChatGPT から監査エージェントが SQL、出力先、更新方式、依存関係、リスク候補を整理できる状態を目指します。

現在の優先方針

現在の最優先は、実監査そのものではなく、この TROCCO MCP server を ChatGPT から追加・接続できる状態にすることです。

進め方:

  1. Cloud Run などに HTTP MCP endpoint を deploy する
  2. TROCCO_API_KEY を安全に server 側へ注入する
  3. ChatGPT から MCP server を追加する
  4. ChatGPT から build_workflow_audit_payload を呼べることを確認する
  5. 以後の監査は ChatGPT から MCP tool を利用して実行する

目的

このリポジトリでは、TROCCO と BigQuery を使った差分監査を支援するため、次の情報を MCP ツール経由で取得します。

  • workflow の基本情報
  • workflow task 一覧
  • task dependency 一覧
  • TROCCO BigQuery datamart task の definition id
  • datamart SQL
  • datamart の出力先 dataset / table
  • write_disposition、incremental_column、merge_keys、lookback_period などの更新設定
  • SQL から推定した source table / destination / write disposition
  • resolved destination / resolved write disposition
  • risk flags
  • downstream references

初期段階では読み取り専用のツールに限定し、TROCCO 側の設定変更や実行操作は対象外とします。

実装構成

  • Runtime: Node.js 20+
  • Language: TypeScript
  • MCP framework: @modelcontextprotocol/sdk
  • Validation: zod
  • Stdio entry point: src/index.ts
  • HTTP entry point: src/http.ts
  • Shared MCP server factory: src/server.ts
  • TROCCO API client: src/troccoClient.ts
  • SQL analysis: src/sqlAnalysis.ts
  • Audit model: src/auditModel.ts
  • HTTP smoke test: scripts/smoke-http.mjs

Transport

この repository では 2 種類の起動方式を持ちます。

  • stdio: Cloud Shell やローカルでの検証用
  • Streamable HTTP: ChatGPT / Cloud Run 接続用

HTTP endpoint:

  • GET /status: status check
  • POST /mcp: MCP Streamable HTTP endpoint

MCP_AUTH_TOKEN を設定した場合、POST /mcpAuthorization: Bearer <token> または x-mcp-auth-token: <token> を要求します。

既定の監査対象

明示指定がない場合、監査エージェントは次の workflow を既定対象として扱います。

  • pipeline_definition_id=3847
  • SH_PLUS_BQ_RAISE_data_daily_new

環境変数

TROCCO API 接続に必要な認証情報は環境変数から読み込みます。

  • TROCCO_API_KEY: TROCCO API key
  • TROCCO_BASE_URL: TROCCO API base URL。未指定時は https://trocco.io を使います
  • PORT: HTTP server port。Cloud Run では自動設定されます
  • MCP_AUTH_TOKEN: HTTP MCP endpoint 用の bearer token
  • MCP_ENDPOINT: smoke test 用 MCP endpoint URL
  • PIPELINE_DEFINITION_ID: smoke test 用 workflow id。未指定時は 3847

TROCCO API は Authorization: Token {{API KEY}} 形式の header で認証します。

セットアップ

npm install
npm run build

stdio server を起動します。

TROCCO_API_KEY=... npm run start:stdio

HTTP server を起動します。

TROCCO_API_KEY=... MCP_AUTH_TOKEN=... npm run start:http

status check:

curl http://localhost:8080/status

Cloud Run deployment

Secret Manager に TROCCO API key を保存します。

printf '%s' '<TROCCO_API_KEY>' | gcloud secrets create trocco-api-key --data-file=-

MCP endpoint 用 token は trocco-mcp-auth-token として保存済みの前提です。未作成の場合だけ次を実行します。

openssl rand -hex 32 | gcloud secrets create trocco-mcp-auth-token --data-file=-

Cloud Run に deploy します。

gcloud run deploy trocco-mcp-tools \
  --source . \
  --region asia-northeast1 \
  --allow-unauthenticated \
  --set-secrets TROCCO_API_KEY=trocco-api-key:latest,MCP_AUTH_TOKEN=trocco-mcp-auth-token:latest

Deploy 後に確認します。

curl https://<cloud-run-url>/status

ChatGPT に追加するときの MCP endpoint は次です。

https://<cloud-run-url>/mcp

ChatGPT 側の connector 設定では、trocco-mcp-auth-token と同じ値を bearer token として設定してください。

HTTP smoke test

Cloud Run deploy 後、ChatGPT に追加する前に MCP client で疎通確認します。

export MCP_ENDPOINT="https://<cloud-run-url>/mcp"
export MCP_AUTH_TOKEN="$(gcloud secrets versions access latest --secret=trocco-mcp-auth-token)"
npm run smoke:http

期待する summary:

{
  "ok": true,
  "check": "build_workflow_audit_payload",
  "pipeline_definition_id": 3847,
  "payload_ok": true,
  "workflow_name": "SH_PLUS_BQ_RAISE_data_daily_new",
  "datamart_count": 31,
  "datamart_error_count": 0
}

Inspector / local verification

Inspector で stdio server を確認します。

TROCCO_API_KEY=... npm run build
TROCCO_API_KEY=... npm run inspector

Cloud Shell などで Inspector proxy が扱いづらい場合は、MCP SDK client から stdio server を直接呼び出して確認します。

MCP tools

get_workflow

指定した workflow の構造を取得します。

TROCCO endpoint:

  • GET /api/pipeline_definitions/{pipeline_definition_id}

Input:

{
  "pipeline_definition_id": 3847
}

get_datamart

指定した datamart definition の SQL と BigQuery option metadata を取得します。

TROCCO endpoint:

  • GET /api/datamart_definitions/{datamart_definition_id}

Input:

{
  "datamart_definition_id": 12345
}

build_workflow_audit_payload

指定した workflow と、その配下の BigQuery datamart definition をまとめて取得します。監査コメント生成の入力 payload として使う統合 tool です。

Input:

{
  "pipeline_definition_id": 3847
}

Output の主な項目:

{
  "ok": true,
  "pipeline_definition_id": 3847,
  "workflow_name": "SH_PLUS_BQ_RAISE_data_daily_new",
  "workflow": {},
  "datamarts": [
    {
      "definition_id": 12345,
      "name": "example_datamart",
      "destination_dataset": "dataset",
      "destination_table": "table",
      "write_disposition": "append",
      "sql_analysis": {},
      "resolved_destination": {},
      "resolved_write_disposition": {},
      "risk_flags": [],
      "downstream_references": []
    }
  ],
  "datamart_errors": []
}

SQL analysis

sql_analysis は SQL コメントを除去したうえで、監査に必要な最低限の候補を抽出します。

  • from / join から source table 候補を抽出
  • create or replace table / insert into / insert <table> / delete from / merge から destination 候補を抽出
  • delete frominsert の組み合わせを delete_insert として推定
  • mergemerge として推定
  • destination と source が同じ table の場合に destination_also_used_as_sourcetrue にする

高度な SQL lineage parser ではないため、確定値ではなく監査用の候補値として扱います。

Resolved audit fields

resolved_destination は、API metadata と SQL 推定を分けて扱います。

  • API の destination_dataset / destination_table があれば source = api
  • API destination がなく SQL 内 destination があれば source = sql_inferred
  • どちらもなければ source = unknown

resolved_write_disposition は、API の write_disposition を優先しつつ、SQL 推定値も保持します。

  • API の write_disposition があれば source = api
  • API 値がなく SQL 推定値があれば source = sql_inferred
  • どちらもなければ unknown

Risk flags

現在の実装では、次の risk_flags を返します。

  • missing_api_destination: API metadata に destination がない
  • sql_destination_inferred: SQL から destination を推定した
  • destination_also_used_as_source: destination と source が同じ table の可能性がある
  • api_write_disposition_but_sql_destination_unknown: API write_disposition はあるが SQL から destination が取れない
  • write_disposition_mismatch: API と SQL 推定の write_disposition が食い違う

Downstream references

downstream_references は、ある datamart の resolved destination が、別 datamart の sql_analysis.source_tables に含まれる場合に返します。workflow dependency と合わせて確認することで、後続参照や依存漏れの監査に使います。

Error payload

MCP tool は失敗時も JSON text として次の形を返します。

{
  "ok": false,
  "error": {
    "code": "auth_error",
    "message": "TROCCO API authentication failed. Check TROCCO_API_KEY.",
    "status": 401,
    "endpoint": "https://trocco.io/api/...",
    "detail": {}
  }
}

Error code:

  • config_error: TROCCO_API_KEY が未設定
  • auth_error: 401 / 403
  • not_found: 404。workflow または datamart が存在しない、もしくは権限がない
  • api_error: その他の HTTP error
  • network_error: TROCCO API に接続できない

次の確認ステップ

  1. Cloud Run に最新の main を deploy する
  2. /status/mcp の認証を確認する
  3. npm run smoke:http を実行する
  4. ChatGPT に https://<cloud-run-url>/mcp を追加する
  5. ChatGPT から build_workflow_audit_payload を実行し、監査に進む

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选