Skip to main content
Glama
josh-thurston

Vanta MCP Server

Vanta MCPサーバー

Vantaコンプライアンスプラットフォーム用のMCPサーバーです。コントロール、脆弱性、ベンダー、テスト、リスクシナリオ、ポリシー、監視対象コンピュータ、ドキュメント、および検出結果を管理するための16個のツールを提供します。

トランスポート

トランスポート

エンドポイント

ユースケース

Streamable HTTP

http://<host>:8010/mcp

Claude Desktop、ほとんどのMCPクライアント

SSE

http://<host>:8010/sse

レガシークライアント (n8nなど)

Health

http://<host>:8010/health

コンテナのヘルスチェック

クイックスタート — Docker

1. 認証情報の取得

  1. Vanta Developer Consoleにログインします。

  2. Settings → API Accessに移動します。

  3. OAuthアプリケーションを作成し、Client IDClient Secretをコピーします。

  4. ツールが必要とするスコープ(通常はvanta.readおよびvanta.write)を付与します。

2. 設定

cp .env.example .env
# Edit .env — set OAUTH_CLIENT_ID and OAUTH_CLIENT_SECRET at minimum

.envの例:

OAUTH_CLIENT_ID=your_client_id
OAUTH_CLIENT_SECRET=your_client_secret
AUTH_TOKEN=          # optional — requires Bearer auth on /mcp and /sse
PORT=8010

3. 実行

docker compose up -d
# Server: http://localhost:8010
# Health: http://localhost:8010/health

4. Claude Desktopへの接続

claude_desktop_config.jsonに追加します:

{
  "mcpServers": {
    "vanta": {
      "type": "http",
      "url": "http://localhost:8010/mcp"
    }
  }
}

AUTH_TOKENが設定されている場合:

{
  "mcpServers": {
    "vanta": {
      "type": "http",
      "url": "http://localhost:8010/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_AUTH_TOKEN"
      }
    }
  }
}

クイックスタート — ローカル (Dockerなし)

python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
export OAUTH_CLIENT_ID=your_client_id
export OAUTH_CLIENT_SECRET=your_client_secret
python -m src.server

環境変数

変数

デフォルト

説明

TRANSPORT_MODE

streamable-http

情報用 — /mcp/sseの両方が常にアクティブです

MCP_HOST

0.0.0.0

バインドアドレス

MCP_PORT

8010

HTTPポート (レガシーなPORTも受け付けます)

AUTH_TOKEN

(無効)

設定されている場合、クライアントはAuthorization: Bearer <AUTH_TOKEN>を送信する必要があります

LOG_LEVEL

INFO

DEBUG, INFO, WARNING, ERROR

TIMEOUT_SECONDS

60

HTTPリクエストのタイムアウト(秒)

API_BASE_URL

https://api.vanta.com

Vanta APIのベースURL

OAUTH_CLIENT_ID

デフォルトテナント: Vanta OAuth2クライアントID (vci_...)

OAUTH_CLIENT_SECRET

デフォルトテナント: Vanta OAuth2クライアントシークレット (vcs_...)

OAUTH_CLIENT_ID / OAUTH_CLIENT_SECRETは、"default"テナントエントリを自動作成するためにのみ使用されます。マルチテナントデプロイメントの場合は、代わりにconfig/tenants.jsonを使用してください。


マルチテナント

複数のVanta組織に対応するには、config/tenants.jsonに値を入力します(config/tenants.json.exampleからコピーしてください):

{
  "tenants": [
    {
      "id": "acme-corp",
      "vanta_base_url": "https://api.vanta.com",
      "vanta_client_id": "vci_CLIENT_ID_A",
      "vanta_client_secret": "vcs_CLIENT_SECRET_A"
    },
    {
      "id": "contoso",
      "vanta_base_url": "https://api.vanta.com",
      "vanta_api_token": "vat_PERSONAL_ACCESS_TOKEN_B"
    }
  ]
}

id値は、エージェント/クライアントがX-Tenant-IDリクエストヘッダーで送信する値です:

X-Tenant-ID: acme-corp
Authorization: Bearer <AUTH_TOKEN>   ← only if AUTH_TOKEN is set in .env

認証情報フィールド:

フィールド

必須

説明

id

X-Tenant-IDヘッダーと完全に一致する必要があります(大文字小文字を区別)

vanta_base_url

オプション

デフォルトはhttps://api.vanta.com

vanta_client_id

*

OAuthクライアントID (プレフィックス: vci_)

vanta_client_secret

*

OAuthクライアントシークレット (プレフィックス: vcs_)

vanta_api_token

*

個人用アクセストークン — OAuthの代替 (プレフィックス: vat_)

*テナントごとに1つの認証方法が必要です。本番環境ではOAuthが推奨されます。

tenants.json"default"が存在する場合、X-Tenant-IDヘッダーのないリクエストは自動的にその認証情報を使用します。完全なアーキテクチャとクライアントの使用例については、../MCP-Multi-Tenant-Guide.mdを参照してください。

config/tenants.jsonはgitignoredであり、Dockerイメージには含まれません。実行時に./config:/app/config:roボリュームを介してマウントされます。


ツール

コントロール

ツール

説明

list_controls

オプションのページネーションを使用してすべてのコントロールを一覧表示

get_control

IDを指定して特定のコントロールの詳細を取得

list_control_tests

特定のコントロールにリンクされているすべてのテストを一覧表示

脆弱性

ツール

説明

list_vulnerabilities

オプションのページネーションを使用して脆弱性を一覧表示

remediate_vulnerability

脆弱性の修正ステータスとメモを更新

list_vulnerability_findings

オプションのページネーションを使用して脆弱性の検出結果を一覧表示

deactivate_vulnerability

IDを指定して脆弱性を無効化

ベンダー

ツール

説明

list_vendors

オプションのページネーションを使用して承認済みベンダーを一覧表示

get_vendor

IDを指定して特定のベンダーの詳細を取得

list_discovered_vendors

自動検出されたベンダー(統合機能によるもの)を一覧表示

テスト

ツール

説明

list_tests

オプションのページネーションを使用してすべてのコンプライアンステストを一覧表示

list_test_entities

特定のテストに関連付けられたエンティティを一覧表示

リスクとポリシー

ツール

説明

list_risk_scenarios

オプションのページネーションを使用してリスクシナリオを一覧表示

list_policies

オプションのページネーションを使用してセキュリティポリシーを一覧表示

アセットとドキュメント

ツール

説明

list_monitored_computers

Vantaエージェントによって監視されているコンピュータを一覧表示

list_documents

ドキュメント(ポリシー、手順、証拠)を一覧表示


認証フロー

Claude Desktop → POST /mcp
  → TenantAuthMiddleware (validates AUTH_TOKEN if set, reads X-Tenant-ID)
  → _require_client() → tenants.json lookup or env vars
  → OAuth2 token exchange (POST https://api.vanta.com/oauth/token)
  → Vanta API call with Bearer token
  → Response

トークンはテナントインスタンスごとにキャッシュされ、401エラー時に自動的に更新されます。


プロジェクトレイアウト

Vanta-MCP/
├── src/
│   ├── server.py              # Starlette app; /mcp, /sse, /health endpoints
│   ├── middleware.py          # TenantAuthMiddleware (AUTH_TOKEN + X-Tenant-ID)
│   ├── context.py             # Request-scoped tenant ID storage
│   ├── tools.py               # All 16 MCP tool functions
│   └── vanta_client.py        # Vanta API client (OAuth2, all endpoints)
├── config/
│   ├── tenants.json           # Gitignored — your multi-tenant config
│   └── tenants.json.example   # Template — safe to commit
├── Dockerfile
├── docker-compose.yml
├── docker-compose.override.yml.example
├── requirements.txt
├── .env.example
└── README.md

トラブルシューティング

401 Unauthorized

  • OAUTH_CLIENT_IDOAUTH_CLIENT_SECRETが正しいことを確認してください。

  • OAuthアプリがVanta Developer Consoleで必要なスコープを持っていることを確認してください。

  • AUTH_TOKENを使用している場合は、クライアントがAuthorization: Bearer <token>を送信していることを確認してください。

403 Forbidden

  • OAuthアプリのスコープが不足しています。Vanta Developer Consoleで更新してください。

404 Not Found

  • リソースIDがVanta組織内に存在しません。

Claude Desktopにツールが表示されない

  • claude_desktop_config.jsonを変更した後、Claude Desktopを再起動してください。

  • サーバーが実行中であることを確認してください: curl http://localhost:8010/health

No Vanta credentials found

  • .env(または環境変数)でOAUTH_CLIENT_IDOAUTH_CLIENT_SECRETが設定されていることを確認してください。

  • または、config/tenants.jsonがマウントされており、要求されたテナントの有効なエントリが含まれていることを確認してください。

Dockerのコード変更が反映されない

  • docker compose restartではイメージは再ビルドされません。以下を実行してください:

    docker compose build --no-cache && docker compose up -d

ライセンス

MIT

Related MCP Connectors