Skip to main content
Glama
XiangXi011

ODPS MCP Server

by XiangXi011

ODPS MCPサーバー

Alibaba Cloud MaxCompute用の読み取り専用MCPサーバー。

ASGIモード

HTTPサーバーには create_app() を使用してください。このアプリは GET /health を公開し、標準のMCP Streamable HTTPアプリを /mcp にマウントします。また、古い呼び出し元との互換性のために / を維持しています。

例:

uvicorn odps_mcp_server.server:create_app --factory

エンドポイント:

  • 標準MCPエンドポイント: http://<host>:<port>/mcp

  • 互換性MCPエンドポイント: http://<host>:<port>/

  • ヘルスチェック: http://<host>:<port>/health

このサービスは streamable-http を介してリモートMCPエンドポイントを公開するため、内部エージェントが許可リストに登録されたMaxComputeテーブルを安全にクエリできます。

環境変数

サーバーを実行する前に、以下の環境変数を設定してください:

  • ALIBABA_CLOUD_ACCESS_KEY_ID

  • ALIBABA_CLOUD_ACCESS_KEY_SECRET

  • ODPS_ENDPOINT

  • ODPS_PROJECT

  • ODPS_ALLOWLIST_PATH

ODPS_ALLOWLIST_PATH はポリシーファイルを指す必要があります。config/allowlist.example.yaml を基にして、サンプルプロジェクト名とテーブル名を承認済みの許可リストに置き換えてください。

ローカルでのワンクリック起動フローが必要な場合は、.env.local.example.env.local にコピーし、ODPS認証情報を入力してください。このファイルはgitの管理対象外です。

ローカルセットアップ

仮想環境で依存関係をインストールします:

python -m venv .venv
.venv\Scripts\activate
pip install -e .

uv を使用する場合の同等のフローは以下の通りです:

uv venv
uv pip install -e .

ポリシーファイル

許可リストファイルは、MCPサーバーがアクセスできるMaxComputeプロジェクトとテーブルを制御します。例:

projects:
  analytics:
    tables:
      sales_orders:
        allowed_columns:
          - order_id
          - order_date

default_limit: 100
max_limit: 200

MCPサーバーの実行

サーバーを起動するには以下を実行します:

python -m odps_mcp_server.server

サーバーは streamable-http モードでMCPトランスポートを開始するように構成されています。

Windowsでのローカル開発の場合は、以下も使用できます:

.\scripts\start-local-mcp.ps1

.env.local を使用したワンクリック起動フローを希望する場合は、以下を使用してください:

.\scripts\start-local-mcp-oneclick.ps1

内部エージェントの統合

内部エージェントは、標準のMCPエンドポイント http://<host>:<port>/mcp に接続する必要があります。ルートパス / は後方互換性のためにのみ利用可能です。このサービスは以下のツールを公開します:

  • list_allowed_tables

  • describe_table

  • preview_table

  • run_select_sql

推奨されるエージェントフロー:

  1. 許可されたテーブルを一覧表示する。

  2. 選択したテーブルのスキーマを読み取る。

  3. 必要に応じて行をプレビューする。

  4. 許可リストに登録されたテーブルに対して、フィルタリングされた SELECT クエリを実行する。

手動スモークテスト

scripts/manual_smoke_test.py を使用して、非本番環境のMaxComputeプロジェクトに対する接続性とポリシーの動作を検証してください。

例:

python scripts/manual_smoke_test.py list-tables --project analytics
python scripts/manual_smoke_test.py describe-table --project analytics --table sales_orders
python scripts/manual_smoke_test.py run-sql --project analytics --sql "SELECT order_id FROM analytics.sales_orders LIMIT 10"

許可リストと行制限がレビューされるまで、スモークテストを本番環境専用のプロジェクトに向けないでください。

F
license - not found
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/XiangXi011/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server