MongoDB MCPサーバーでAtlas・Community・Enterpriseに接続する
MongoDB公式のMCPサーバーで、Atlas・セルフホストのCommunity・Enterpriseに接続し、自然言語でコレクションを操作する手順をまとめます。
MongoDB公式のmongodb-mcp-serverは、Atlasのマネージドクラスタと、Community・Enterpriseのセルフホスト環境のどちらにも同じプロトコルで接続できるMCPサーバーです。複数DBに横断的に読み取り専用で繋ぐ汎用サーバーの選び方はMCPからデータベースに接続する方法で扱っており、この記事はMongoDB専用サーバーに絞って接続方式と操作手順を掘り下げます。接続方式が3通りあり、どれを選ぶかで認証情報の渡し方が変わります。この記事では接続の確立と、find・aggregate・insert-manyといった自然言語でのコレクション操作までを扱います。Atlasクラスタの作成やスケーリング、Stream Processingの操作は書き込み権限を要するAtlas管理の領域なので、MongoDB AtlasのクラスタをClaudeに任せる記事で扱います。
前提条件
Node.jsはv22.13以降が必要です。v20系はまだ動きますがサポートが非推奨になっており、将来のリリースで削除される予定です。接続方式ごとに用意するものが変わります。
- 接続文字列で繋ぐ場合:
mongodb://またはmongodb+srv://形式の接続文字列(Community・Enterprise・Atlasのいずれでも使えます) - Atlas API経由で繋ぐ場合: Atlas管理コンソールで発行するService AccountのClient IDとClient Secret
3つの接続方式を使い分ける
MongoDB MCPサーバーは、動かす場所と認証方式の組み合わせで3つの接続方式を持っています。どれも最終的に同じツール群をClaudeに公開しますが、ローカル実行の要不要と対応環境が異なります。
| 方式 | ローカル実行 | 対応環境 | 向くケース |
|---|---|---|---|
接続文字列(MDB_MCP_CONNECTION_STRING) | ローカル実行必要 | 対応環境Atlas / Community / Enterprise全部 | 向くケース手元に接続文字列が既にある、セルフホスト環境に繋ぐ |
mongodb-atlasプラグイン(OAuth) | ローカル実行不要 | 対応環境Atlasのみ | 向くケースAtlasだけを使っていて、ローカルにNode.jsを入れたくない |
Atlas APIサービスアカウント(MDB_MCP_API_CLIENT_ID) | ローカル実行必要 | 対応環境Atlasのみ | 向くケースクラスタ一覧やパフォーマンス分析などAtlas管理APIも使いたい |
Atlasだけを使うなら、公式が「ローカル実行が不要で推奨」と明言しているmongodb-atlasプラグインが最短です。Claudeのプラグインディレクトリ(https://claude.com/plugins/mongodb-atlas)から追加すると、OAuth認証を挟んでMongoDBがホストするリモートMCPサーバーに繋がります。セルフホストのCommunity・Enterpriseは、この方式では繋がりません。ローカルで`mongodb-mcp-server`プロセスを立てる必要があります。
接続文字列でClaude Codeに登録する
セルフホスト環境やAtlasの接続文字列がすでにある場合は、claude mcp add-jsonで直接登録します。認証情報をコマンドライン引数に書くとプロセス一覧から見えてしまうため、envフィールドで渡します。
claude mcp add-json mongodb \
'{"command":"npx","args":["-y","mongodb-mcp-server@latest","--readOnly"],"env":{"MDB_MCP_CONNECTION_STRING":"mongodb+srv://readonly:pass@cluster.mongodb.net/myDatabase"}}' \
-s user--readOnlyを付けていますが、この設定オプション自体の既定値はfalseです。公式READMEのサンプルはすべて--readOnlyを明示的に含めているため見落としがちですが、フラグを省略すればcreate・update・deleteの各ツールもそのまま登録されます。本番接続での安全な絞り込みは読み取り専用設定の記事にまとめています。ここでは、まず動くところまでを確認します。
claude mcp listで✔ Connectedと表示されれば、ツールがClaudeから見えている状態です。
Atlas APIサービスアカウントで登録する
Atlas管理APIの機能(クラスタ一覧・パフォーマンスアドバイザーなど)も使いたい場合は、接続文字列の代わりにサービスアカウントの認証情報を渡します。
claude mcp add-json mongodb \
'{"command":"npx","args":["-y","mongodb-mcp-server@latest","--readOnly"],"env":{"MDB_MCP_API_CLIENT_ID":"your-client-id","MDB_MCP_API_CLIENT_SECRET":"your-client-secret"}}' \
-s userサービスアカウントはAtlas管理コンソールの「Access Manager」>「Organization Access」から作成します。付与する権限は用途に応じて最小限に絞ります。読み取りだけならOrg Read Onlyで足り、Organization Ownerのような広い権限を選ぶ理由はほとんどありません。権限の絞り込みとIPアクセスリストの設定は読み取り専用設定の記事で扱います。
自然言語でコレクションを操作する
接続が済めば、Claudeに自然文でMongoDBの操作を頼めます。裏側ではfind・aggregate・insert-many・update-many・delete-many・create-indexといったツールが呼ばれます。
usersコレクションから、過去30日間にログインしていないアカウントを10件見せてこの聞き方ではfindツールが呼ばれ、フィルタ条件付きのクエリが実行されます。集計が必要な問いかけではaggregateが使われます。
ordersコレクションを商品カテゴリごとに集計して、売上の多い順に並べて書き込み系の操作も自然文で頼めますが、--readOnlyを付けていない構成では実際にデータが変わります。
statusがpendingのまま48時間経過した注文を、まとめてcancelledに変更してupdate-manyが呼ばれる操作です。drop-database・drop-collection・delete-many・drop-indexの4つのツールは既定で確認プロンプトを挟む対象(confirmationRequiredTools)に含まれており、対応するクライアントであれば実行前にユーザー確認が入ります。スキーマを把握したいだけならcollection-schema、インデックスの状況を見るならcollection-indexesと、読み取り系のツールだけでも一通りの調査が完結します。
対話形式のセットアップスクリプトを使う
claude mcp add-jsonで直接設定を組み立てる代わりに、対話形式のセットアップスクリプトを使う方法もあります。
npx -y mongodb-mcp-server@latest setup接続文字列またはAtlas API認証情報の入力を対話的に案内してくれるため、JSON設定を手で書くのに慣れていない場合はこちらが手早く済みます。MongoDB公式は、AIエージェント自身にセットアップを進めさせるSkillも配布しています。
npx skills add https://github.com/mongodb/agent-skills --skill mongodb-mcp-setupSkillを追加すると、Claude自身が対話しながら接続文字列の入力やAtlas認証情報の設定を進めます。手元にNode.jsを入れたくない場合は、mongodb/mongodb-mcp-serverのDockerイメージを使う方法もあり、この場合はdocker runに環境変数を渡す構成になります。
コレクション操作以外にも使えるツールがある
ここまでのfind・aggregate・insert-many・update-many・delete-manyはデータそのものを操作するツールですが、MongoDB MCPサーバーにはメタデータ確認や運用調査に使うツールも揃っています。
| ツール | できること |
|---|---|
db-stats | できることデータベース単位の使用状況統計を取得 |
collection-storage-size | できることコレクションの容量を確認 |
explain | できることクエリ実行計画を取得し、遅いクエリの原因を調べる |
mongodb-logs | できることmongodのログを直近分だけ取得 |
export | できることクエリやaggregateの結果をEJSON形式でエクスポート |
ordersコレクションの容量と、直近のログにエラーが出ていないか確認してcollection-storage-sizeとmongodb-logsが組み合わさって呼ばれる聞き方です。トラブルシューティングの初手として、書き込みを一切伴わずに状況を把握できます。
さらに、MongoDB公式のドキュメントやサポート情報を検索するsearch-knowledge・list-knowledge-sourcesというアシスタント系ツールもあります。コード上のMongoDB操作とは別に、公式ドキュメントの該当箇所を探したいときに使えます。
MongoDBの集計パイプラインで$lookupのパフォーマンスを改善する方法をMongoDBのドキュメントから探してよくあるつまずき
--readOnlyを付けたのに書き込みできてしまう: コマンドライン引数と環境変数を両方設定していないか確認します。優先順位はコマンドライン引数が最も高く、環境変数のMDB_MCP_READ_ONLY=trueより上書きされます- Node.js 20系で警告が出る: v20のサポートは非推奨で、将来のリリースで削除されます。
node -vで確認し、可能ならv22.13以降に上げます mongodb-atlasプラグインでセルフホスト環境に繋ごうとして失敗する: このプラグインはAtlasのマネージドMCPサーバーへのOAuth接続専用です。Community・Enterpriseのセルフホスト環境には、接続文字列を使うローカル実行の方式で繋ぎます- 接続文字列をコマンドライン引数に直接書いてしまう: 認証情報を含む接続文字列は
argsではなくenv経由で渡します。プロセス一覧や各種ログに平文で残るリスクを避けられます
よくある質問
Claude Desktopでも同じ手順で使えますか
Atlas・Community・Enterpriseへの接続方式そのものはクライアント非依存です。MongoDB公式は主要なMCPクライアントごとに設定例を公開しており、Claude Desktop & Web向けの案内も用意されています。設定ファイルの記法はmcpServersオブジェクトを使う点で共通しているため、claude mcp add-jsonで作った設定をClaude Desktopの設定ファイルにそのまま移せます。
DockerでMongoDB MCPサーバーを動かせますか
動かせます。Node.jsをローカルに入れたくない場合、mongodb/mongodb-mcp-serverイメージをdocker runで起動し、環境変数で接続文字列を渡す構成が公式に用意されています。
無料のAtlas Free Clusterでも使えますか
使えます。接続文字列さえ発行できれば、Free ClusterでもDedicated Clusterでも同じ手順で接続できます。クラスタ自体の作成を自然言語で頼みたい場合は、MongoDB AtlasのクラスタをClaudeに任せる記事で扱っているatlas-create-free-clusterツールが使えます。
社内プロキシ経由でも接続できますか
できます。MongoDB MCPサーバーはHTTPS_PROXY・HTTP_PROXY・ALL_PROXY・NO_PROXYといった標準的なプロキシ環境変数を検出し、Atlas管理API・MongoDBクラスタへの接続・OIDC認証のいずれにも適用します。挙動はmongoshと同じ実装を使っているため、mongoshで動くプロキシ設定であればそのまま使えます。接続文字列に直接SOCKS5プロキシを埋め込みたい場合は、proxyHost・proxyPortのパラメータも使えます。
まとめ
MongoDB MCPサーバーは、接続文字列・mongodb-atlasプラグインのOAuth・Atlas APIサービスアカウントという3つの経路でAtlas・Community・Enterpriseに接続できます。ローカル実行が要らない分、Atlasだけを使うならmongodb-atlasプラグインが最短です。セルフホスト環境や、Atlas管理APIまで使いたい場合は接続文字列かサービスアカウントをclaude mcp add-jsonで登録します。接続後はfindやaggregateのような読み取り系ツールから自然言語で試し、書き込み系ツールを使う前に本番接続での権限絞り込みを済ませておくと安全です。