Sandbox
@mongodb-js/mongodb-mcp-server

MCP server for MongoDB databases and Atlas clusters

This repository provides an MCP server that lets an agent connect to MongoDB databases, MongoDB Atlas clusters, and Atlas Stream Processing resources. It works as a bridge between MCP clients and MongoDB tools such as find, aggregate, cluster setup, user management, and stream operations.

1,125 stars287 forksTypeScriptUpdated 7d ago
Who it's for

Builders who want their agent to query MongoDB, manage Atlas, and work from MCP clients instead of switching to a database console.

What it delivers

You can inspect and manage MongoDB and Atlas from your agent with reusable MCP tools instead of copying data and commands by hand.

What it does

Database tools

Supports find, aggregate, insert, update, delete, indexes, stats, schema inspection, export, and connection management for MongoDB databases.

Atlas tools

Supports Atlas cluster, project, user, access list, alerts, performance advisor, and sample dataset workflows.

Atlas Streams tools

Includes tools to build, inspect, manage, and tear down Atlas Stream Processing workspaces, connections, and processors.

Local and remote setup paths

Can run locally with `npx` or in Docker, and can connect to Atlas through OAuth or service account credentials.

Official MongoDB plugins

Ships with plugin paths for Cursor, Claude, Codex, Copilot CLI, Grok, VS Code, and Gemini CLI.

How to get it

  1. 1You can manually set up the local MCP server by running the following command
    npx -y mongodb-mcp-server@latest setup
  2. 2You can add and use the MongoDB MCP Server setup skill to configure your local MCP…
    npx skills add https://github.com/mongodb/agent-skills --skill mongodb-mcp-setup
  3. 3You can source environment variables defined in a config file or explicitly set them…
    # Set your credentials as environment variables first
    export MDB_MCP_API_CLIENT_ID="your-atlas-service-accounts-client-id"
    export MDB_MCP_API_CLIENT_SECRET="your-atlas-service-accounts-client-secret"
    
    # Then start the server
    npx -y mongodb-mcp-server@latest --readOnly
  4. 4Run
    docker run --rm -i \
      mongodb/mongodb-mcp-server:latest
  5. 5Run
    # Set your credentials as environment variables first
    export MDB_MCP_CONNECTION_STRING="mongodb+srv://username:password@cluster.mongodb.net/myDatabase"
    
    # Then start the docker container
    docker run --rm -i \
      -e MDB_MCP_CONNECTION_STRING \
      -e MDB_MCP_READ_ONLY="true" \
      mongodb/mongodb-mcp-server:latest

README

Install in VS Code Install in Cursor

MongoDB MCP Server

A Model Context Protocol server for interacting with MongoDB Databases and MongoDB Atlas.

Quick Start

Using the official MongoDB plugins for AI agents

MongoDB MCP Server comes bundled with the official MongoDB plugins for AI agents. The following plugins are available:

mongodb-atlas — connects to the MongoDB-hosted Atlas MCP server over OAuth. This does not require you to run anything locally, and is the recommended way to connect to MongoDB Atlas from your AI agent:

  • Cursor: marketplace
  • VSCode: Open the Extensions view (⇧⌘X / Ctrl+Shift+X), search for @agentPlugins, and install mongodb-atlas.
  • Claude: marketplace
  • Codex: Open /plugins and install mongodb-atlas.
  • GitHub Copilot CLI: Run copilot plugin install mongodb-atlas.
  • Grok: Open /marketplace in Grok Build and install mongodb-atlas.

mongodb — runs the MongoDB MCP server locally and connects to any self-managed deployment:

  • Cursor: marketplace
  • Claude: marketplace
  • Gemini: marketplace
  • Codex: Run codex plugin marketplace add mongodb/agent-skills, then open /plugins and install mongodb.
  • GitHub Copilot CLI: Run copilot plugin install mongodb.
  • Grok: Open /marketplace in Grok Build and install mongodb.

Using the setup script

You can manually set up the local MCP server by running the following command:

npx -y mongodb-mcp-server@latest setup

This will guide you through an interactive setup process, including configuring your MongoDB connection string or Atlas API credentials.

For more advanced setup options, see the Manual Setup section below.

Using the MongoDB MCP Server setup skill

You can add and use the MongoDB MCP Server setup skill to configure your local MCP server using an AI agent.

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

Using manual configuration

See Manual Setup for instructions on how to manually configure the MongoDB MCP Server.

📚 Table of Contents

Prerequisites

[!NOTE] Node 20.x support is deprecated and will be removed in a future release. Please upgrade to Node 22.13 or later. See https://nodejs.org/en/blog/migrations/v20-to-v22 for migration details.

  • Node.js

    • At least v22.13.0. Check with node -v.
  • A MongoDB connection string or Atlas API credentials.

    • Service Accounts Atlas API credentials are required to use the Atlas tools. You can create a service account in MongoDB Atlas and use its credentials for authentication. See Atlas API Access for more details.
    • If you have a MongoDB connection string, you can use it directly to connect to your MongoDB instance.

Manual Setup

🔒 Security Recommendation 1: When using Atlas API credentials, be sure to assign only the minimum required permissions to your service account. See Atlas API Permissions for details.

🔒 Security Recommendation 2: For enhanced security, we strongly recommend using environment variables to pass sensitive configuration such as connection strings and API credentials instead of command line arguments. Command line arguments can be visible in process lists and logged in various system locations, potentially exposing your secrets. Environment variables provide a more secure way to handle sensitive information.

Most MCP clients require a configuration file to be created or modified to add the MCP server.

Note: The configuration file syntax can be different across clients. Please refer to the following links for the latest expected syntax:

Default Safety Notice: All examples below include --readOnly by default to ensure safe, read-only access to your data. Remove --readOnly if you need to enable write operations.

Option 1: Connection String

You can pass your connection string via environment variables, make sure to use a valid username and password.

{
  "mcpServers": {
    "MongoDB": {
      "command": "npx",
      "args": ["-y", "mongodb-mcp-server@latest", "--readOnly"],
      "env": {
        "MDB_MCP_CONNECTION_STRING": "mongodb://localhost:27017/myDatabase"
      }
    }
  }
}

NOTE: The connection string can be configured to connect to any MongoDB cluster, whether it's a local instance or an Atlas cluster.

Option 2: Connect to the MongoDB Atlas-Managed MCP Server

When working with MongoDB Atlas, the recommended approach is to install the mongodb-atlas plugin for your AI agent, which handles OAuth authentication automatically.

For manual configuration, see the client-specific instructions for setting up the Atlas Remote MCP server with OAuth. Alternatively, you can connect using the mongodb-atlas-mcp-remote package with Service Account credentials — see the package README for setup instructions.

Note: You cannot authenticate to the remote MongoDB MCP server using a static API key over HTTP. You must either:

  • Use a client that supports the OAuth flow.
  • Use the mongodb-atlas-mcp-remote stdio server, which you can authenticate into using the static MDB_MCP_API_CLIENT_ID and MDB_MCP_API_CLIENT_SECRET environment variables.

To connect with the mongodb-atlas-mcp-remote stdio server using Service Account credentials, add it to your client's MCP configuration:

{
  "mcpServers": {
    "mongodb-atlas-mcp-remote": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mongodb-atlas-mcp-remote@latest"],
      "env": {
        "MDB_MCP_API_CLIENT_ID": "$CLIENT_ID",
        "MDB_MCP_API_CLIENT_SECRET": "$SECRET"
      }
    }
  }
}

Option 3: Atlas API Credentials

Use your Atlas API Service Accounts credentials. Must follow all the steps in Atlas API Access section.

{
  "mcpServers": {
    "MongoDB": {
      "command": "npx",
      "args": ["-y", "mongodb-mcp-server@latest", "--readOnly"],
      "env": {
        "MDB_MCP_API_CLIENT_ID": "your-atlas-service-accounts-client-id",
        "MDB_MCP_API_CLIENT_SECRET": "your-atlas-service-accounts-client-secret"
      }
    }
  }
}

Option 4: Standalone Service using environment variables and command line arguments

You can source environment variables defined in a config file or explicitly set them like we do in the example below and run the server via npx.

# Set your credentials as environment variables first
export MDB_MCP_API_CLIENT_ID="your-atlas-service-accounts-client-id"
export MDB_MCP_API_CLIENT_SECRET="your-atlas-service-accounts-client-secret"

# Then start the server
npx -y mongodb-mcp-server@latest --readOnly

💡 Platform Note: The examples above use Unix/Linux/macOS syntax. For Windows users, see Environment Variables for platform-specific instructions.

  • For a complete list of configuration options see Configuration Options
  • To configure your Atlas Service Accounts credentials please refer to Atlas API Access
  • Connection String via environment variables in the MCP file example
  • Atlas API credentials via environment variables in the MCP file example

Option 5: Using Docker

You can run the MongoDB MCP Server in a Docker container, which provides isolation and doesn't require a local Node.js installation.

Run with Environment Variables

You may provide either a MongoDB connection string OR Atlas API credentials:

Option A: No configuration
docker run --rm -i \
  mongodb/mongodb-mcp-server:latest
Option B: With MongoDB connection string
# Set your credentials as environment variables first
export MDB_MCP_CONNECTION_STRING="mongodb+srv://username:password@cluster.mongodb.net/myDatabase"

# Then start the docker container
docker run --rm -i \
  -e MDB_MCP_CONNECTION_STRING \
  -e MDB_MCP_READ_ONLY="true" \
  mongodb/mongodb-mcp-server:latest

💡 Platform Note: The examples above use Unix/Linux/macOS syntax. For Windows users, see Environment Variables for platform-specific instructions.

Option C: With Atlas API credentials
# Set your credentials as environment variables first
export MDB_MCP_API_CLIENT_ID="your-atlas-service-accounts-client-id"
export MDB_MCP_API_CLIENT_SECRET="your-atlas-service-accounts-client-secret"

# Then start the docker container
docker run --rm -i \
  -e MDB_MCP_API_CLIENT_ID \
  -e MDB_MCP_API_CLIENT_SECRET \
  -e MDB_MCP_READ_ONLY="true" \
  mongodb/mongodb-mcp-server:latest

💡 Platform Note: The examples above use Unix/Linux/macOS syntax. For Windows users, see Environment Variables for platform-specific instructions.

Docker in MCP Configuration File

Without options:

{
  "mcpServers": {
    "MongoDB": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-e",
        "MDB_MCP_READ_ONLY=true",
        "-i",
        "mongodb/mongodb-mcp-server:latest"
      ]
    }
  }
}

With connection string:

{
  "mcpServers": {
    "MongoDB": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "MDB_MCP_CONNECTION_STRING",
        "-e",
        "MDB_MCP_READ_ONLY=true",
        "mongodb/mongodb-mcp-server:latest"
      ],
      "env": {
        "MDB_MCP_CONNECTION_STRING": "mongodb+srv://username:password@cluster.mongodb.net/myDatabase"
      }
    }
  }
}

With Atlas API credentials:

{
  "mcpServers": {
    "MongoDB": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "MDB_MCP_READ_ONLY=true",
        "-e",
        "MDB_MCP_API_CLIENT_ID",
        "-e",
        "MDB_MCP_API_CLIENT_SECRET",
        "mongodb/mongodb-mcp-server:latest"
      ],
      "env": {
        "MDB_MCP_API_CLIENT_ID": "your-atlas-service-accounts-client-id",
        "MDB_MCP_API_CLIENT_SECRET": "your-atlas-service-accounts-client-secret"
      }
    }
  }
}

🛠️ Supported Tools

Tool List

MongoDB Database Tools

  • aggregate - Run an aggregation against a MongoDB collection
  • aggregate-db - Run an aggregation against a MongoDB database
  • collection-indexes - Describe the indexes for a collection
  • collection-schema - Describe the schema for a collection
  • collection-storage-size - Gets the size of the collection
  • connect - Connect to a MongoDB instance
  • count - Gets the number of documents in a MongoDB collection using db.collection.count() and query as an optional filter parameter
  • create-collection - Creates a new collection in a database. If the database doesn't exist, it will be created automatically.
  • create-index - Create an index for a collection
  • db-stats - Returns statistics that reflect the use state of a single database
  • delete-many - Removes all documents that match the filter from a MongoDB collection
  • disconnect - Close a MongoDB connection and revoke its connectionId.
  • drop-collection - Removes a collection or view from the database. The method also removes any indexes associated with the dropped collection.
  • drop-database - Removes the specified database, deleting the associated data files
  • drop-index - Drop an index for the provided database and collection.
  • explain - Returns statistics describing the execution of the winning plan chosen by the query optimizer for the evaluated method
  • export - Export a query or aggregation results in the specified EJSON format.
  • find - Run a find query against a MongoDB collection
  • insert-many - Insert an array of documents into a MongoDB collection. If the list of documents is above com.mongodb/maxRequestPayloadBytes, consider inserting them in batches.
  • list-collections - List all collections for a given database
  • list-connections - List the active MongoDB connections and their connectionIds. Use this to find a connectionId established earlier.
  • list-databases - List all databases for a MongoDB connection
  • mongodb-logs - Returns the most recent logged mongod events
  • rename-collection - Renames a collection in a MongoDB database
  • update-many - Updates all documents that match the specified filter for a collection. If the list of documents is above com.mongodb/maxRequestPayloadBytes, consider updating them in batches.

MongoDB Atlas Tools

  • atlas-connect-cluster - Connect to MongoDB Atlas cluster and get back a connectionId to pass to the other MongoDB tools. Each call establishes a new, independent connection — multiple connections can be active at the same time.
  • atlas-create-access-list - Allow Ip/CIDR ranges to access your MongoDB Atlas clusters.
  • atlas-create-cluster - Create a MongoDB Atlas cluster (M10–M80, replica set or single shard). Compute autoscaling is enabled by default: min instance size is set to the selected instance size, max is set two tiers above. Disk autoscaling is always enabled. Encryption at rest with customer-managed keys (CMK) is supported, the CMK provider must already have a valid encryption at rest configuration in the project. The tool returns immediately, use the atlas-inspect-cluster tool to poll the cluster state for readiness (state: IDLE). Connection strings are unavailable until the cluster reaches IDLE state.
  • atlas-create-db-user - Create an MongoDB Atlas database user
  • atlas-create-free-cluster - Create a free MongoDB Atlas cluster
  • atlas-create-project - Create a MongoDB Atlas project
  • atlas-get-performance-advisor - Get MongoDB Atlas performance advisor recommendations and suggestions, which includes the operations: suggested indexes, drop index suggestions, schema suggestions, and a sample of the most recent (max 50) slow query logs
  • atlas-get-regions - List supported MongoDB Atlas regions for a cloud provider.
  • atlas-inspect-access-list - Inspect Ip/CIDR ranges with access to your MongoDB Atlas clusters.
  • atlas-inspect-cluster - Inspect metadata of a MongoDB Atlas cluster
  • atlas-list-alerts - List triggered alerts for a MongoDB Atlas project. These are alerts Atlas has raised, not the alert configurations that define them. Defaults to OPEN alerts; set status to TRACKING or CLOSED to see others.
  • atlas-list-clusters - List MongoDB Atlas clusters
  • atlas-list-db-users - List MongoDB Atlas database users
  • atlas-list-orgs - List MongoDB Atlas organizations
  • atlas-list-projects - List MongoDB Atlas projects.
  • atlas-load-sample-dataset - Load a MongoDB sample dataset into an Atlas cluster, or check the status of a previously-initiated load. To start a new load, provide clusterName — the load runs asynchronously and the response includes a jobId and initial state. To check progress, call this tool again with jobId (sample dataset loads typically take 1–5 minutes). State can be WORKING, COMPLETED, or FAILED.
  • atlas-pause-resume-cluster - Pause or resume a dedicated (M10+) MongoDB Atlas cluster.
  • atlas-streams-build - Create Atlas Stream Processing resources. Use this tool for 'set up a Kafka pipeline', 'create a workspace', 'add a connection', or 'deploy a processor'. Use resource='workspace' to create a new workspace (specify cloud provider, region, and tier). Use resource='connection' to add a data source or sink to an existing workspace. Use resource='processor' to deploy a stream processor with a pipeline. Use resource='privatelink' to set up private networking. Typical workflow: create workspace → add connections → deploy processor.
  • atlas-streams-discover - Discover and inspect Atlas Stream Processing resources. Also use for 'why is my processor failing', 'what workspaces do I have', 'show processor stats', or 'check processor health'. Use 'list-workspaces' to see all workspaces in a project. Use inspect actions for details on a specific resource. Use 'diagnose-processor' for a combined health report including state, stats, connection health, and recent errors. Use 'get-networking' for PrivateLink and account details.
  • atlas-streams-manage - Manage Atlas Stream Processing resources: start/stop processors, modify pipelines, update configurations. Also use for 'change the pipeline', 'scale up my processor', or 'update my workspace tier'. Common workflow: action='stop-processor' → action='modify-processor' → action='start-processor'. Use atlas-streams-discover with action 'inspect-processor' to check state before managing.
  • atlas-streams-teardown - Delete Atlas Stream Processing resources. Also use for 'remove my workspace', 'disconnect a source', 'delete all processors', or 'clean up my streams environment'. Performs basic safety checks before deletion: summarizes counts of processors and connections, highlights connections referenced by processors where possible, and surfaces API errors if processors are still running when deletion is attempted. Use atlas-streams-discover to review resources before deleting.
  • atlas-upgrade-cluster - Upgrade or scale a MongoDB Atlas cluster. Free and Flex clusters can be upgraded to Flex or M10 Dedicated. Dedicated clusters can be scaled to a different instance size, and compute autoscaling settings can be updated. When scaling a Dedicated cluster, at least one of targetTier, computeAutoScaling, minInstanceSize, or maxInstanceSize must be provided. Compute autoscaling defaults to enabled when upgrading to M10 Dedicated: min instance size is set to the selected instance size, max is set two tiers above, unless overridden. Note to LLM: If provider and region are not already known, ask for both together in a single question before calling this tool. Use atlas-get-regions to resolve natural-language locations or uncertain region codes before calling this tool.

NOTE: atlas tools are only available when you set credentials on configuration section.

MongoDB Atlas Local Tools

  • atlas-local-connect-deployment - Connect to a MongoDB Atlas Local deployment and get back a connectionId to pass to the other M

Files in the repo

Repository payload27 top-level entries
  • .codex
  • .github
  • .husky
  • .vscode
  • api-extractor
  • eslint-rules
  • packages
  • skills
  • .gitattributes
  • .gitignore
  • .npmrc
  • .prettierignore
  • .prettierrc.json
  • CONTRIBUTING.md
  • eslint.config.js
  • knip.ts
  • LICENSE
  • licenses.json
  • MCP_SERVER_LIBRARY.md
  • package.json
  • pnpm-lock.yaml
  • pnpm-workspace.yaml
  • README.md
  • THIRD_PARTY_NOTICES.md
  • tsconfig.base.json
  • tsconfig.json
  • vitest.config.ts

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More connectors

High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

43k

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code

14k
okf-memory/
okf-agent-memory

Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300µs in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.

547
tirth8205/
code-review-graph

Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.

31k
2akouwu/
reverify

Stop your AI from making things up — it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.

1.1k
t8y2/dbxConnectors

20 MB lightweight cross-platform database client for 90+ databases, including MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, SQL Server, and Dameng. Built-in AI, MCP Server, CLI, desktop and Docker. | 轻量级跨平台数据库管理工具,支持 MySQL、PostgreSQL、SQLite、Redis、MongoDB、达梦等 90+ 数据库,提供桌面端、Docker、CLI、内置 AI 助手和 MCP Server。

19k