Mammoth Analytics について
Mammoth Analytics は、Claude や ChatGPT などのクライアントから Mammoth のデータを扱うための MCP サーバーです。ログインユーザーの権限に基づき、データの探索、クリーニング、変換、エクスポートを行えます。
主な機能
- 01Mammoth データの探索
- 02データのクリーニングと変換
- 03データのエクスポート
- 04ログインユーザーの Mammoth 権限を使用
- 05ホスト型またはローカル環境で接続
活用シーン
- 01Mammoth プロジェクトのデータを確認
- 02データセットをクリーニングまたは変換
- 03処理済みの Mammoth データをエクスポート
MCP 対応
MCP クライアントに Mammoth のデータ操作ツールを提供します。ホスト型エンドポイントは OAuth ログインに対応し、ローカルでのインストールと実行も可能です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.mammoth.io/mcpclaude mcp add --transport http io-mammoth https://mcp.mammoth.io/mcp{"mcpServers":{"io-mammoth":{"type":"http","url":"https://mcp.mammoth.io/mcp"}}}Cursor で開く{"servers":{"io-mammoth":{"type":"http","url":"https://mcp.mammoth.io/mcp"}}}VS Code で開く{"mcpServers":{"io-mammoth":{"type":"http","url":"https://mcp.mammoth.io/mcp"}}}{"mcpServers":{"io-mammoth":{"serverUrl":"https://mcp.mammoth.io/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
mammoth-mcp-server
Mammoth MCP サーバーです。AI クライアント(Claude、ChatGPT)はそのツールを使って、サインイン中のユーザーとして Mammoth のデータを探索、クリーンアップ、変換、エクスポートします。
このサーバーが依存する Mammoth パッケージは、SDK(mammoth-io)のみです。各ツールは SDK と同様に、API 経由で Mammoth にアクセスします。サーバーはバックエンドのコードをインポートしません。
ホスト型またはローカル
- ホスト型: Mammoth はこのサーバーを
https://mcp.mammoth.io/mcpで実行します。その URL を MCP クライアントに追加し、Mammoth アカウントでサインインします(OAuth)。インストールは不要です。 - ローカル:
pip install mammoth-mcp-serverを実行し、MCP_ENCRYPTION_KEYを設定してからmammoth-mcp-serverを起動します(下記の仮想環境から実行を参照)。MCP_ENCRYPTION_KEYは、URL セーフな Base64 でエンコードされた 32 バイトの Fernet キーである必要があります。python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"で生成できます。このキーが設定されていない場合、または値が Fernet キーでない場合、サーバーは起動を拒否します。
構成
| パス | 内容 |
|---|---|
mammoth_mcp_server/tools/ | ツールです。分野ごとに 1 つのモジュールがあります(ビュー、パイプライン、ファイル、ダッシュボードなど)。 |
mammoth_mcp_server/sdk.py | ツール呼び出しに渡される SDK クライアントと、モデルが扱える表現の API エラーです。 |
mammoth_mcp_server/jobs.py | API のルートが開始したジョブを待機します。 |
mammoth_mcp_server/task_params.py | 変換を、API が受け取るパイプラインタスクに対応付けます。 |
mammoth_mcp_server/tokens.py | 呼び出し元のトークンを検証します。Mammoth がトークンの有効性と対象サーバーを判定します。 |
mammoth_mcp_server/store.py | Redis 内の短期間有効なレコード(アップロードチケット)です。 |
mammoth_mcp_server/upload_routes.py | ユーザーがローカルファイルをドロップするページです。 |
mammoth_mcp_server/server_card.py | /.well-known/mcp/server-card.json にある公開サーバーカードです。 |
mammoth_mcp_server/shape.py | 読み取りツールがモデルに渡す、API の応答から切り出したデータです。 |
mammoth_mcp_server/app.py | ASGI アプリと main() です。 |
mammoth_mcp_server/config.py | 環境変数から読み込む、すべてのデプロイ設定です。 |
設定
| 変数 | デフォルト | 意味 |
|---|---|---|
MCP_SERVER_URL | https://mcp.mammoth.io | クライアントがアクセスするこのサーバーの URL です。 |
MAMMOTH_APP_URL | https://app.mammoth.io | ツールがユーザーに提示するリンクの Web アプリです。 |
MAMMOTH_DASHBOARD_URL | MAMMOTH_APP_URL | 公開済みダッシュボードを提供するホストです。 |
MAMMOTH_API_URL | MAMMOTH_APP_URL + /api/v2 | すべてのツール呼び出しがアクセスする API です。 |
MAMMOTH_API_ROOT | /api/v2 | API が提供されるパスです。API に直接アクセスする場合は空に設定します。 |
MAMMOTH_OAUTH_URL | MAMMOTH_APP_URL + /api/v2 | Mammoth の認可サーバー(発行者)であり、クライアントがユーザーをサインインさせる場所です。 |
MCP_REDIS_URL | redis://localhost:6379/0 | アップロードチケットの保存先です。 |
MCP_ENCRYPTION_KEY | なし | Fernet キーです。アップロードチケット内の呼び出し元のトークンを、このキーで暗号化します。必須です。 |
MCP_STORE_PREFIX | mammoth_mcp | 共有 Redis 内で、このデプロイメントのレコードを分離します。 |
MCP_HOST、MCP_PORT | 127.0.0.1、8270 | サーバーがリッスンする場所です。 |
サインイン
このサーバーは誰のサインインも処理しません。処理するのは Mammoth 独自の認可サーバー、つまり Mammoth API が提供する OAuth サーバーです。このサーバーは OAuth リソースサーバーとしてのみ動作します。
- クライアントがトークンなしで
/mcpを呼び出します。サーバーは401を返し、/.well-known/oauth-protected-resource/mcpを案内します。 - そのドキュメントには Mammoth の認可サーバー(
MAMMOTH_OAUTH_URL)が記載されています。クライアントはそこでサーバーのメタデータを読み取り、ユーザーをそのサーバーに誘導します。 - ユーザーは Mammoth にサインインし、ワークスペースとプロジェクトを選んで承認します。クライアントはこのサーバーの URI
<MCP_SERVER_URL>/mcp用のトークンを要求します(resourceパラメーター、RFC 8707)。 - クライアントはそのトークンを使って
/mcpを呼び出します。リクエストごとにサーバーは Mammoth にトークンの用途を問い合わせます(GET /workspaces/current)。Mammoth がトークンは有効で、このサーバーの URI 用に発行されたと返した場合に限り、サーバーはそのトークンを受け入れます。 - 各ツール呼び出しは同じトークンを使って Mammoth API に送信されるため、ユーザーの権限が適用されます。
トークンは1つのワークスペースに属します。別のワークスペースに対するツール呼び出しは拒否されます。Workspace settings で手動作成した Mammoth API トークンは、どのサーバー用にも発行されていないため、このサーバーは拒否します。
サーバーはサインイン情報もトークンも保持しません。ただし、アップロードリンクだけは例外で、ユーザーがアップロードするか30分が経過するまで、呼び出し元のトークンを暗号化して Redis に保持します。
Mammoth に必要な設定
- MCP サーバーの URI
<MCP_SERVER_URL>/mcpを、mvc-service のconst.iniの[oauth]セクションにあるMCP_RESOURCESに設定します。Mammoth は他のリソース用のトークンを発行しません。 GET /workspaces/currentは、ワークスペースのidとともにトークンのresourceを返す必要があります。そうでなければ、このサーバーはすべてのトークンを拒否します。
環境で動作させる前にには、確認すべきすべての手順を順番に記載しています。
実行
ホスト側に必要なのが Docker だけのコンテナーとして実行
イメージはこのリポジトリからビルドされるため、デプロイ時に SDK のリリースを待つ必要はありません。ビルドコンテキストであるリポジトリのルートからビルドします。
cp mammoth-mcp-server/deploy/.dockerignore.example .dockerignore
docker build -f mammoth-mcp-server/deploy/Dockerfile -t mammoth-mcp-server .
docker run --env-file mammoth-mcp-server/deploy/.env -p 8270:8270 mammoth-mcp-server
専用の Redis とともに、1つのスタックとして実行します。
cp mammoth-mcp-server/.env.example mammoth-mcp-server/deploy/.env # then set the values
docker compose -f mammoth-mcp-server/deploy/compose.yaml up -d --build
サーバーはリクエスト間でメモリに何も保持しないため、コンテナーを追加してスケールできます。共有するのは Redis だけです。
仮想環境から実行
pip install mammoth-mcp-server
cp .env.example .env # then set the values
mammoth-mcp-server # or: uvicorn mammoth_mcp_server.app:create_app --factory
deploy/ の内容
| ファイル | 用途 |
|---|---|
Dockerfile | このリポジトリからビルドするイメージ |
compose.yaml | サーバーと Redis をまとめた1つのスタック |
.dockerignore.example | ビルド前にリポジトリのルートにコピーします |
mammoth-mcp-server-container.service.example | コンテナーを実行する systemd 設定 |
mammoth-mcp-server.service.example | 仮想環境を実行する systemd 設定 |
nginx.example.conf | デプロイに必要な2つのサーバーブロック |
環境で動作させる前に
これらの項目は、それぞれ単独でサインインを妨げます。順番に確認してください。
-
DNS とフロントエンドで、
MCP_SERVER_URLをサーバーのポートに向けます。 サーバーブロックはdeploy/nginx.example.confにあります。 -
MCP_ENCRYPTION_KEYを設定します。 このサーバーが保持する唯一のシークレットです。 デフォルト値がなく、ほかに必要な設定はありません。設定を参照してください。 -
Mammoth にこのサーバーを登録します。 mvc-service の
const.iniの[oauth]セクションで、MCP_RESOURCES = <MCP_SERVER_URL>/mcpと設定します。Mammoth は他のリソース用のトークンを発行しません。 -
Mammoth のホストが、クライアントが参照する場所で OAuth メタデータを提供していることを確認します。 パスを含む発行者の場合、RFC 8414 ではドキュメントが
/.well-known/oauth-authorization-server/api/v2に配置されます。apiv2 は独自のパスで提供されるため、フロントエンドでこの2つを結合する必要があります。deploy/nginx.example.confの2つ目のサーバーブロックがこれを行います。次のコマンドで確認します。curl https://<mammoth host>/.well-known/oauth-authorization-server/api/v2404ではなく、ドキュメントが返される必要があります。 -
Web アプリの OAuth 同意ページをデプロイします。 デプロイされていないと、ユーザーは存在しないページに移動し、何も承認できません。
その後、クライアントは <MCP_SERVER_URL>/mcp に接続し、ユーザーは Mammoth にサインインしてワークスペースとプロジェクトを選びます。
テスト
cd mammoth-mcp-server
python -m pytest tests -q
テストではサーバーに接続しません。SDK クライアントとツールは実物を使用し、クライアント側の HTTP トランスポートのみを置き換えます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。