Claude Media
MongoDB MCPサーバーでAtlas・Community・Enterpriseに接続する

MongoDB MCPサーバーでAtlas・Community・Enterpriseに接続する

MongoDB公式のMCPサーバーで、Atlas・セルフホストのCommunity・Enterpriseに接続し、自然言語でコレクションを操作する手順をまとめます。

MongoDB公式のmongodb-mcp-serverは、Atlasのマネージドクラスタと、Community・Enterpriseのセルフホスト環境のどちらにも接続できるMCPサーバーです。複数DBに読み取り専用で横断的に繋ぐ汎用サーバーの選び方は、MCPからデータベースに接続する方法にあります。この記事はMongoDB専用サーバーに絞ります。

選ぶ分かれ目は2つあります。Atlasだけを使うか、セルフホストも含めるか。そして、Atlasの管理API(クラスタ一覧やパフォーマンスアドバイザー)までClaudeに触らせるかどうかです。この2点で、使う接続方式と、Claudeに見えるツールの数が変わります。Atlasクラスタの作成やスケーリング、Stream Processingの操作は、書き込み権限を要するAtlas管理の領域です。こちらはMongoDB AtlasのクラスタをClaudeに任せる記事で扱います。

前提条件

Node.jsはv22.13.0以降が必要です。v20系のサポートは非推奨で、将来のリリースで削除される予定です。バージョンはnode -vで確かめます。接続方式ごとに用意するものが変わります。

  • 接続文字列で繋ぐ場合: mongodb://またはmongodb+srv://形式の接続文字列(Community・Enterprise・Atlasのいずれでも使えます)
  • Atlas API経由で繋ぐ場合: Atlas管理コンソールで発行するService AccountのClient IDとClient Secret

接続方式をどう選ぶか

READMEには接続方法が複数並んでいますが、実際の分かれ目は「ローカルでプロセスを動かすか」と「対応環境」です。

方式ローカル実行対応環境向くケース
接続文字列(MDB_MCP_CONNECTION_STRING)ローカル実行必要対応環境Atlas / Community / Enterprise全部向くケース手元に接続文字列がある、セルフホスト環境に繋ぐ
mongodb-atlasプラグイン(OAuth)ローカル実行不要対応環境Atlasのみ向くケースAtlasだけを使っていて、ローカルにNode.jsを入れたくない
mongodbプラグインローカル実行必要対応環境セルフホストを含む任意のデプロイ向くケースプラグインで入れたいが、接続先がセルフホスト環境
Atlas APIサービスアカウント(MDB_MCP_API_CLIENT_ID)ローカル実行必要対応環境Atlasのみ向くケースクラスタ一覧やパフォーマンス分析などAtlas管理APIも使いたい
mongodb-atlas-mcp-remote(サービスアカウント)ローカル実行必要(stdio)対応環境Atlasのみ向くケースOAuthに対応しないクライアントからマネージドサーバーを使う

mongodb-atlasプラグインは、READMEが「ローカル実行が不要で、Atlasに繋ぐ推奨の方法」と位置づけている方式で、OAuth認証を挟んでMongoDBがホストするリモートMCPサーバーに繋がります。セルフホストのCommunity・Enterpriseには繋がらないので、そちらにはローカルでmongodb-mcp-serverプロセスを立てる方式を使います。

READMEには、Claude向けにもう1つ公式プラグインのmongodbがあります。こちらはMCPサーバーをローカルで動かし、セルフホストを含む任意のデプロイに接続するプラグインです。プラグインで導入したくて接続先がセルフホストなら、mongodbを選びます。

マネージドサーバーに静的なAPIキーをHTTPで渡して認証することはできません。OAuthに対応したクライアントを使うか、サービスアカウントの認証情報を環境変数で受け取るmongodb-atlas-mcp-remoteのstdioサーバーを挟みます。表の4行目はこの回避路です。

接続文字列でClaude Codeに登録する

接続文字列が手元にあるなら、claude mcp add-jsonで直接登録します。このコマンドが受け取るのは、サーバー名とJSON文字列、それにスコープの指定です。

claude mcp add-json --help
Usage: claude mcp add-json [options] <name> <json>
 
Add an MCP server (stdio, SSE, HTTP, or WebSocket) with a JSON string
 
Options:
  --client-secret      Prompt for OAuth client secret (or set MCP_CLIENT_SECRET
                       env var)
  -h, --help           Display help for command
  -s, --scope <scope>  Configuration scope (local, user, or project) (default:
                       "local")

上はv2.1.289の出力です。-sを省くと既定はlocalで、そのプロジェクトだけに効きます。以下の例は全プロジェクトで使えるよう-s userを付けています。認証情報をコマンドライン引数に書くとプロセス一覧から見えてしまうため、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 get mongodbで接続を確かめます。claude mcp listは各サーバーの横に、✔ Connected・! Needs authentication・✘ Failed to connectのいずれかを出します。失敗時はHTTPステータスやエラー文言が続きます。Claude Code起動後の/mcpパネルには、接続済みサーバーごとのツール数も出ます。

-s projectで.mcp.jsonに書く場合、接続文字列をそのまま書くとリポジトリに入ってしまいます。Claude Codeの.mcp.jsonは${VAR}形式の環境変数参照を受け付けるので、値は各自のシェルの環境変数に置く構成にできます。

Atlas APIサービスアカウントで登録する

接続文字列の代わりにサービスアカウントの認証情報を渡すと、Atlas管理APIのツールが使えるようになります。この方式ではAtlas側の作業が先に要ります。

手順

サービスアカウントを用意する流れ

  1. 1

    サービスアカウントを作る

    cloud.mongodb.comにログインし、Access Manager > Organization Accessを開きます。そこから「Add New」>「Applications」>「Service Accounts」と進みます。名前・説明・有効期限を入れ、権限を最小限に絞って作成します。READMEの例は有効期限7日です。

  2. 2

    Client Secretをその場で控える

    作成直後にClient IDとClient Secretが表示されます。Secretは再表示されないので、画面を閉じる前に保存します。

  3. 3

    IPアクセスリストに自分を足す

    APIアクセスリストに自分のIPアドレスを追加します。ここが抜けていると、認証情報が正しくてもAPI呼び出しは通りません。

  4. 4

    MCPサーバーに環境変数で渡す

    MDB_MCP_API_CLIENT_IDとMDB_MCP_API_CLIENT_SECRETをenvに入れて登録します。

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

付与する権限は、操作ごとに必要なロールが決まっています。READMEの早見表は次のとおりです。組織やプロジェクトの一覧はOrg MemberかOrg Read Onlyです。プロジェクト内のクラスタやDBの閲覧はProject Read Only、クラスタの作成・管理はProject Cluster Managerです。Organization Ownerは「必要になることはまれで、セキュリティリスクになりうる」と注記されており、組織レベルよりプロジェクトレベルのロールが勧められています。「Org Read Onlyだけでクラスタの中身まで見られる」という想定は成り立たない点に注意が必要です。権限の絞り込みとIPアクセスリストの設定は読み取り専用設定の記事で扱います。

認証情報の有無で、Claudeに見えるツールが変わる

接続方式を選ぶと、公開されるツールの範囲も決まります。READMEのツール一覧は4つの系統に分かれています。

ツール

ツールの4系統

  • データベース操作

    find・aggregate・insert-many・update-many・delete-many・create-indexなど。接続文字列があれば使えます。

  • Atlas管理(atlas-*)

    atlas-list-clusters・atlas-inspect-cluster・atlas-get-performance-advisorなど。API認証情報を設定したときだけ使えます。

  • Atlas Local

    atlas-local-create-deploymentなど、ローカルのAtlas Local環境を作る・繋ぐ・消すツールです。

  • Assistant

    MongoDBの知識ベースを引くsearch-knowledgeとlist-knowledge-sourcesです。

ClaudeがAtlasのクラスタ一覧を返せないときは、まずAPI認証情報の有無を疑います。接続文字列だけの登録ではatlas-*は出ません。Atlasクラスタへの接続を確立するatlas-connect-clusterは、呼ぶたびに独立した接続を作ってconnectionIdを返し、複数の接続を同時に保てます。list-connectionsで既存の接続とIDを引けます。

自然言語でコレクションを操作する

接続が済めば、Claudeに自然文でMongoDBの操作を頼めます。

usersコレクションから、過去30日間にログインしていないアカウントを10件見せて

この聞き方ではfindツールが呼ばれ、フィルタ条件付きのクエリが実行されます。集計が必要な問いかけではaggregateが使われます。

ordersコレクションを商品カテゴリごとに集計して、売上の多い順に並べて

書き込み系の操作も自然文で頼めますが、--readOnlyを付けていない構成では実際にデータが変わります。

statusがpendingのまま48時間経過した注文を、まとめてcancelledに変更して

これはupdate-manyが呼ばれる操作です。スキーマだけ知りたいならcollection-schema、インデックスの状況ならcollection-indexesと、読み取り系のツールだけでも調査は一通り進みます。

実行前に確認が入るツール

既定で確認の対象になるのは、confirmationRequiredToolsに入っている次の8つです。

  • drop-database・drop-collection・delete-many・drop-index
  • atlas-create-db-user・atlas-create-access-list
  • atlas-streams-manage・atlas-streams-teardown

これに加えて、aggregateとaggregate-dbは、パイプラインに$outか$mergeのステージがあるときだけ、実行前に必ず確認を求めます。この2つは書き込みステージで、$outはコレクションの中身を丸ごと置き換えるためです。確認にはクライアント側のelicitation(サーバーからの入力要求)への対応が必要で、Claude Codeは要求を受けるとダイアログを出します。aggregateをconfirmationRequiredToolsに足すと、書き込みステージの有無に関係なく毎回確認が入ります。

update-manyとinsert-manyは、この既定の一覧に入っていません。書き込みを任せる構成で確認を挟みたいなら、次の2つから選びます。

くらべる

書き込みを抑える2つの手段

登録しない

--readOnly

create・update・deleteの操作種別のツールがサーバーに登録されません。起動ログに、登録されなかったツールの名前が出ます。

登録して確認する

confirmationRequiredTools

ツールは登録されたまま、実行のたびにユーザー確認を挟みます。確認に対応しないクライアントでは働きません。

カテゴリ単位で無効化

disabledTools

ツール名・操作種別・カテゴリを配列で指定して無効にします。環境変数ならMDB_MCP_DISABLED_TOOLS="create,update,delete,atlas"のようにカンマ区切り、コマンドライン引数なら--disabledTools create update delete atlasと空白区切りです。

対話形式のセットアップスクリプトを使う

claude mcp add-jsonでJSONを組み立てる代わりに、対話形式のセットアップスクリプトもあります。

npx -y mongodb-mcp-server@latest setup

接続文字列かAtlas API認証情報の入力を案内してくれるので、JSONを手で書くのに慣れていない場合に手早く済みます。MongoDBは、AIエージェントにローカルMCPサーバーの設定を進めさせるSkillも配布しています。

npx skills add https://github.com/mongodb/agent-skills --skill mongodb-mcp-setup

Node.jsを入れたくない場合は、mongodb/mongodb-mcp-serverのDockerイメージを使います。docker runの-eで環境変数を渡す構成で、READMEは接続文字列版とAtlas API認証情報版の両方を載せています。

コレクション操作以外のツール

データそのものを操作するツールとは別に、メタデータの確認や運用調査のためのツールがあります。

ツールできること
db-statsできることデータベース単位の使用状況統計を取得
collection-storage-sizeできることコレクションの容量を確認
explainできることクエリ実行計画を取得し、遅いクエリの原因を調べる
mongodb-logsできることmongodのログを直近分だけ取得
exportできることクエリやaggregateの結果をEJSON形式でエクスポート
ordersコレクションの容量と、直近のログにエラーが出ていないか確認して

collection-storage-sizeとmongodb-logsが組み合わさって呼ばれる聞き方です。書き込みを伴わずに状況を把握できるので、トラブルシューティングの初手に向きます。

exportの出力先には注意が要ります。エクスポートされたデータは、MCPサーバーを動かしているマシンのexportsPathに一時保存されます。既定の場所はmacOS・Linuxなら~/.mongodb/mongodb-mcp/exportsで、5分で期限切れになり、2分間隔のクリーンアップで消されます。中身には機密データが含まれうるため、READMEはサーバーを動かすアカウントだけが読み書きできる権限に絞るよう求めています。

実行計画を見たいクエリが、インデックスを使わずにコレクション全体を走査していないかを機械的に弾くなら、--indexCheck(MDB_MCP_INDEX_CHECK=true)があります。有効にすると、インデックスを使わないクエリはエラーとして拒否されます。

さらに、MongoDBの公式ドキュメントなどを引くsearch-knowledgeとlist-knowledge-sourcesもあります。

MongoDBの集計パイプラインで$lookupのパフォーマンスを改善する方法をMongoDBのドキュメントから探して

共有サーバーとして公開しないための注意

npx mongodb-mcp-serverで動かすCLIは、1人のユーザーがlocalhostか閉じたネットワークで使う前提です。組み込みの認証がなく、MCPのプロトコルも検証済みのユーザーIDを運びません。複数人で共用する用途は想定されていません。

HTTPトランスポートで0.0.0.0のような非ループバックのホストに待ち受けさせるには、MDB_MCP_DANGEROUS_HOST_BINDING=trueが必要です。認証なしで外から届くエンドポイントになり、接続文字列に対する削除を含むMongoDB操作が、誰でも実行できてしまうからです。チームで使うなら、Atlasのマネージドサーバー(OAuth)を使うか、各自のマシンで個別に動かす構成になります。

設定の優先順位は、コマンドライン引数、環境変数、設定ファイル(MDB_MCP_CONFIGで指定)の順です。テレメトリは既定で有効で、MDB_MCP_TELEMETRY=disabledか--telemetry disabled、またはDO_NOT_TRACK=1で止められます。

よくあるつまずき

  • --readOnlyを付けたのに書き込みできてしまう: argsに--readOnlyが入っているかを見直します。引数、環境変数(MDB_MCP_READ_ONLY=true)、設定ファイルのうち、どれも指定がなければ既定のfalseです。有効なら起動ログに、登録されなかったツールが出ます。
  • 接続できない: サーバーはconfig://config(秘匿項目を伏せた設定)とdebug://mongodb(直近の接続試行とエラー)の2つのリソースを公開しています。接続の失敗理由は後者に残ります。
  • mongodb-atlasプラグインでセルフホスト環境に繋げない: このプラグインはAtlasのマネージドMCPサーバーへのOAuth接続専用です。Community・Enterpriseには、ローカル実行のmongodbプラグインか、接続文字列を使うローカル実行で繋ぎます。
  • 接続文字列をargsに直接書いてしまった: 認証情報を含む値はenv経由で渡します。プロセス一覧や各種ログに平文で残るのを避けられます。

よくある質問

Claude Desktopの設定と使い回せますか

接続方式そのものはクライアントに依存しません。ただしREADMEは、設定ファイルの記法がクライアントごとに違うとして、Claude Desktop & Web向けの設定例を別ページで案内しています。Claude Codeの公式ドキュメントでは、他クライアントのmcpServersブロックをclaude mcp add-jsonに渡すとき、中のオブジェクトだけを渡します。外側のmcpServersの枠は付けません。

社内プロキシ経由でも接続できますか

HTTPS_PROXY・HTTP_PROXY・ALL_PROXY・NO_PROXYが使えます。Atlas管理API、MongoDBクラスタへの接続、OIDC認証、MongoDB Assistantのいずれにも適用され、mongoshと同じ実装を使うのでmongoshで動くプロキシ設定がそのまま通ります。OSの証明書ストアも信頼されるため、OSに入れた社内ルート証明書は自動で拾われます。クラスタ接続だけにSOCKS5を使うなら、接続文字列にproxyHost・proxyPort(認証が要るならproxyUsername・proxyPassword)を足せます。

まとめ

選ぶ基準は、接続先がAtlasだけか、Atlas管理APIまで触らせるかの2点です。Atlasだけならmongodb-atlasプラグイン、セルフホストならmongodbプラグインか接続文字列、管理APIが要るならサービスアカウントになります。まず--readOnly付きで試し、書き込みを任せる段階で確認対象のツールを見直します。分析・フラグ管理に強いPostHog MCPサーバーの接続手順はPostHog MCPサーバー接続ガイドにまとめました。

この記事を共有:XはてブLinkedIn