MCP MongoDB Server について
MCP MongoDB Server は、AI アシスタントから MongoDB データベースを操作できるようにする MCP サーバーです。コレクションのスキーマを推定し、読み取り専用モードも備えているため、自然言語でデータを探索したい開発者に向いています。
主な機能
- 01スキーマ推定を伴うクエリと集計
- 02読み取り専用モードによる書き込み操作の遮断
- 03クロスデータベース操作とサーバーサイド JavaScript の制限
- 04stdio と HTTP の両トランスポートに対応
- 05タイムスタンプと日付文字列の変換ヘルパー
活用シーン
- 01自然言語による MongoDB コレクションの探索
- 02読み取り専用モードでのデータ分析
- 03HTTP エンドポイントを通じた複数クライアントへのデータベース提供
MCP 対応
MCP サーバーとして動作し、コレクションのクエリ・集計・書き込み・時刻変換などのツールを Claude Desktop や Cursor などの MCP クライアントに公開します。ローカルの stdio とリモートの HTTP接続の両方に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP MongoDB サーバー
AI アシスタントが MongoDB データベースを操作できるようにする、Model Context Protocol(MCP)サーバーです。コレクションを公開してスキーマを推測し、標準インターフェースを通じてクエリ、集計、書き込みを実行するため、Claude Desktop や Cursor などのツールでデータを読み取り、推論できます。
デモ
選ばれる理由
- 自然な言葉でデータベースに話しかけられます — アシスタントがコレクションとその構造を自動的に検出します。
- デフォルトで安全です — 読み取り専用モードを有効にすれば、データを変更するリスクなしでアシスタントに調査させることができます。
- あらゆる環境で動作します — スタンドアロン、レプリカセット、シャーディング構成、Atlas の各デプロイメントに、平文または TLS 接続で接続できます。
主な機能
- 読み取り専用モード — すべての書き込み処理(挿入、更新、インデックス作成、およびデータを変更する可能性がある
$out/$mergeなどの集計ステージ)をブロックします。 - スマートな ObjectId 処理 — 24 文字の 16 進文字列を ObjectId に変換する方法を
auto/none/forceから設定できます。 - スキーマ推論 — ドキュメントのサンプルからコレクションのスキーマを自動検出します。
- クエリと集計 —
explainプランのオプションを含め、クエリと集計パイプラインを完全にサポートします。 - 書き込み操作 — 読み取り専用モードがオフの場合、挿入、更新、インデックス作成を実行できます。
- 時刻変換 —
convertTimeヘルパーで Unix タイムスタンプや日付文字列を UTC/GMT/ISO に変換できるため、タイムゾーンをまたぐ日付クエリも曖昧になりません。 - 進捗とキャンセル — 時間のかかる操作の進捗を報告し、実行中にキャンセルできます。
- 2 種類のトランスポート — stdio でローカル実行するか、リモートアクセス用の HTTP エンドポイントを公開できます。
要件
- Node.js 20 以降
クイックスタート
サーバーをデータベースに接続します。インストールは不要です。
npx -y mcp-mongo-server mongodb://localhost:27017/mydatabase
データを変更する心配なく、安全に調査できます。
npx -y mcp-mongo-server mongodb://localhost:27017/mydatabase --read-only
使用方法
ローカル(stdio)
Claude Desktop、Cursor、その他のローカルクライアントで使用するデフォルトの設定です。
npx -y mcp-mongo-server "mongodb://user:pass@localhost:27017/mydatabase"
リモート(HTTP)
リモートまたは複数クライアントからのアクセス用に、/mcp で HTTP エンドポイントを公開します。
npx -y mcp-mongo-server "mongodb://user:pass@localhost:27017/mydatabase" --transport http --port 3001
デフォルトでは、ブラウザーの Origin を含まないリクエスト(CLI、IDE)と localhost からのリクエストのみが受け付けられます。それ以外は、DNS リバインディング攻撃を防ぐため 403 で拒否されます。--allowed-origins を使って、特定のブラウザーオリジンを許可できます。
npx -y mcp-mongo-server "mongodb://..." --transport http --port 3001 --allowed-origins "https://app.example.com"
オプション
| フラグ | 説明 |
|---|---|
--read-only, -r | すべての書き込み操作をブロックします |
--allow-cross-db | 集計の $out/$merge/$lookup で他のデータベースを対象にできるようにします(デフォルトでは無効) |
--allow-server-js | サーバーサイド JavaScript 演算子 $function/$where/$accumulator を許可します(デフォルトでは無効) |
--transport, -t | stdio(デフォルト)または http |
--port, -p | HTTP ポート(デフォルトは 3001) |
--allowed-origins | HTTP モードで許可するブラウザーオリジンをカンマ区切りで指定します |
--json-limit | HTTP リクエストボディの最大サイズ(デフォルトは 10mb) |
--auth-token | HTTP エンドポイントへのアクセスに Authorization: Bearer <token> を要求します |
環境変数
| 変数 | 説明 |
|---|---|
MCP_MONGODB_URI | MongoDB 接続 URI(引数の代わりに使用できます) |
MCP_MONGODB_READONLY | 読み取り専用モードを有効にします("true") |
MCP_MONGODB_ALLOW_CROSS_DB | データベースをまたぐ集計ステージを許可します("true") |
MCP_MONGODB_ALLOW_SERVER_JS | サーバーサイド JavaScript 演算子を許可します("true") |
MCP_PORT | HTTP ポート |
MCP_HTTP_ALLOWED_ORIGINS | HTTP モードで許可するブラウザーオリジンをカンマ区切りで指定します |
MCP_HTTP_JSON_LIMIT | HTTP リクエストボディの最大サイズ(デフォルトは 10mb) |
MCP_HTTP_AUTH_TOKEN | HTTP エンドポイントへのアクセスに必要なベアラートークン |
セキュリティ
データベースの範囲。 サーバーは接続文字列で指定されたデータベースを操作します。別のデータベースにアクセスする集約ステージ($out、$merge、明示的な db を指定した $lookup)は、デフォルトで拒否されます。そのため、パイプラインが指定していないデータベースを、気付かれないうちに読み書きすることはありません。必要な場合は、--allow-cross-db で有効にできます。
サーバーサイド JavaScript。 集約演算子 $function、$where、$accumulator は、MongoDB サーバー上で任意の JavaScript を実行します。デフォルトでは拒否されます。実行するパイプラインを信頼できる場合は、--allow-server-js で有効にできます。
読み取り専用モードでは、書き込みを行う、またはサーバーサイド JavaScript を実行する集約ステージ($out、$merge、$function、$where、$accumulator)を含む、すべての書き込み経路がブロックされます。
最小権限。 アプリケーションレベルのチェックには限界があります。最も強力な保証はデータベース自体によって得られます。必要なデータベースのみにアクセスできるよう範囲を限定した MongoDB ユーザーで接続し、アシスタントが参照のみを必要とする場合は読み取り専用の権限を付与してください。これにより、多層防御としてデータベース自体が境界を強制します。
ドキュメント
- 連携ガイド — Claude Desktop、Windsurf、Cursor、Docker
- 利用可能なツール — クエリ、集約、更新、挿入など
- 開発 — セットアップ、スクリプト、デバッグ
- コントリビューション
ライセンス
MIT — 詳細は LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
