Skip to main content
Glama
MongoDB MCP Server

MongoDB MCP Server

by jonfreeland

MongoDB MCP Server

A Model Context Protocol server that provides read-only access to MongoDB databases through standardized MCP tools and resources.

Overview

This MongoDB MCP server enables AI assistants to directly query and analyze MongoDB databases without write access, maintaining data safety while providing powerful data exploration capabilities.

Related MCP server: MongoDB MCP Server for LLMs

Features

MongoDB Operations

  • Database Exploration: List databases and collections

  • Schema Discovery: Infer collection schemas from sample documents

  • Querying: Execute MongoDB queries with filtering, projection, sorting, and limiting

  • Aggregation: Run read-only aggregation pipelines with safety validation

  • Text Search: Perform full-text search on collections with text indexes

  • Geospatial Queries: Find locations near points, within polygons, or intersecting geometries

  • Document Operations: Count documents, sample random documents, find documents by IDs

  • Data Analysis: Get collection statistics, index information, and query execution plans

  • Performance Insights: Examine query execution plans to optimize performance

  • Data Exploration: Get distinct values, field distributions, and data samples

  • Format Conversion: Export query results as JSON or CSV formats

Enhanced Capabilities

  • Schema Inference: Automatically detect data types and structure from documents

  • Visualization Hints: Intelligent suggestions for data visualization based on result content

  • Safety Validation: Prevents write operations in aggregation pipelines

  • Example-Rich Documentation: Each tool includes detailed examples in its description

Requirements

Environment Variables

  • MONGODB_URI (required): MongoDB connection string with authentication if needed

  • MONGODB_DEFAULT_DATABASE (optional): Default database name when not specified in queries

Prerequisites

  • Network access to MongoDB server

  • Authentication credentials if required by MongoDB instance

  • Appropriate read permissions on target databases

Installation

Building from Source

Install dependencies:

npm install

Build the server:

npm run build

For development with auto-rebuild:

npm run watch

Integration with Claude Desktop

To use with Claude Desktop, add the server configuration:

On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json On Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "mongodb": {
      "command": "/path/to/mongodb-server/build/index.js",
      "env": {
        "MONGODB_URI": "mongodb://username:password@hostname:port/database",
        "MONGODB_DEFAULT_DATABASE": "your_default_db"
      }
    }
  }
}

Integration with Claude Web

For Claude Web via the MCP Chrome extension, add configuration to Cline MCP settings:

{
  "mcpServers": {
    "mongodb": {
      "command": "node",
      "args": ["/path/to/mongodb-server/build/index.js"],
      "env": {
        "MONGODB_URI": "mongodb://username:password@hostname:port/database",
        "MONGODB_DEFAULT_DATABASE": "your_default_db"
      }
    }
  }
}

Integration with Claude Code

To use with Claude Code, use the following commands:

cd /path/to/my/project
claude mcp add mongo-server /path/to/mongodb-mcp/build/index.js -e "MONGODB_URI=mongodb://user@password:27017/dbname?authSource=authDbName" -e MONGO_DEFAULT_DATABASE=dbname 

Make sure to replace the placeholders with your actual MongoDB connection string and default database name.

If configured correctly, you should see the following when you run claude:

╭───────────────────────────────────────────────────────╮
│ ✻ Welcome to Claude Code research preview!            │
│                                                       │
│   /help for help                                      │
│                                                       │
│   cwd: <path-to-project-directory>                    │
│                                                       │
│   ─────────────────────────────────────────────────── │
│                                                       │
│   MCP Servers:                                        │
│                                                       │
│   • mongo-server                            connected │
╰───────────────────────────────────────────────────────╯

If you run into issues, see the Claude Code documentation.

Security Considerations

  • This server provides read-only access by design

  • Connection strings may contain sensitive authentication information

  • Store connection strings securely in environment variables

  • Use a MongoDB user with read-only permissions

Debugging

Since MCP servers communicate over stdio, debugging can be challenging. Use the MCP Inspector, which is available as a package script:

npm run inspector

The Inspector will provide a URL to access debugging tools in your browser.

Available Tools

14 tools
aggregateA

Execute a read-only aggregation pipeline on a collection.

Supported Stages:

  • $match: Filter documents

  • $group: Group documents by a key

  • $sort: Sort documents

  • $project: Shape the output

  • $addFields - Include additional or calculated fields

  • $lookup: Perform left outer joins

  • $unwind: Deconstruct array fields

Unsafe/Blocked Stages:

  • $out: Write results to collection

  • $merge: Merge results into collection

  • $set: Set field values

  • $unset: Remove fields

  • $replaceRoot: Replace document structure

  • $replaceWith: Replace document

Example - User Statistics by Role: use_mcp_tool with server_name: "mongodb", tool_name: "aggregate", arguments: { "collection": "users", "pipeline": [ { "$match": { "active": true } }, { "$group": { "_id": "$role", "count": { "$sum": 1 }, "avgAge": { "$avg": "$age" } }}, { "$sort": { "count": -1 } } ], "limit": 100 }

Example - Posts with Author Details: use_mcp_tool with server_name: "mongodb", tool_name: "aggregate", arguments: { "collection": "posts", "pipeline": [ { "$match": { "published": true } }, { "$lookup": { "from": "users", "localField": "authorId", "foreignField": "_id", "as": "author" }}, { "$unwind": "$author" }, { "$project": { "title": 1, "authorName": "$author.name", "publishDate": 1 }} ] }

Inputs: collection (required), pipeline (required), database, limit.

count_documentsA

Count documents in a collection that match a filter.

Benefits:

  • More efficient than retrieving full documents

  • Good for understanding data volume

  • Can help planning query strategies

  • Optimize pagination implementation

Example: use_mcp_tool with server_name: "mongodb", tool_name: "count_documents", arguments: { "collection": "users", "filter": { "active": true, "age": { "$gte": 21 } } }

Inputs: collection (required), database, filter.

explain_queryA

Get the execution plan for a query.

Helps understand:

  • How MongoDB will execute the query

  • Which indexes will be used

  • Number of documents examined

  • Execution stages and timing

Use this to optimize slow queries.

Inputs: collection (required), filter (required), database, projection, +1 more.

find_by_idsA

Find multiple documents by their IDs in a single request.

Advantages:

  • More efficient than multiple single document lookups

  • Preserves ID order in results when possible

  • Can filter specific fields with projection

  • Handles both string and ObjectId identifiers

Example: use_mcp_tool with server_name: "mongodb", tool_name: "find_by_ids", arguments: { "collection": "products", "ids": ["5f8d0f3c", "5f8d0f3d", "5f8d0f3e"], "idField": "_id", "projection": { "name": 1, "price": 1 } }

Inputs: collection (required), ids (required), database, idField, +1 more.

geo_queryA

Execute geospatial queries on a MongoDB collection.

Supports:

  • Finding points near a location

  • Finding documents within a polygon, circle, or box

  • Calculating distances between points

  • GeoJSON and legacy coordinate pair formats

Requirements:

  • Collection must have a geospatial index (2dsphere recommended)

  • Coordinates should follow MongoDB conventions (longitude first, then latitude)

Examples:

  1. Find locations near a point (2 miles radius): use_mcp_tool with server_name: "mongodb", tool_name: "geo_query", arguments: { "collection": "restaurants", "operation": "near", "point": [-73.9667, 40.78], "maxDistance": 3218.69, // 2 miles in meters "distanceField": "distance" }

  2. Find locations within a polygon: use_mcp_tool with server_name: "mongodb", tool_name: "geo_query", arguments: { "collection": "properties", "operation": "geoWithin", "geometry": { "type": "Polygon", "coordinates": [ [[-73.958, 40.8], [-73.94, 40.79], [-73.95, 40.76], [-73.97, 40.76], [-73.958, 40.8]] ] } }

Inputs: collection (required), operation (required), database, locationField, +8 more.

get_collection_statsC

Get detailed statistics about a collection.

Returns information about:

  • Document count and size

  • Storage metrics

  • Index sizes and usage

  • Average document size

  • Padding factor

Inputs: collection (required), database.

get_distinct_valuesA

Get distinct values for a field in a collection.

Useful for:

  • Understanding data distribution

  • Finding unique categories

  • Data quality checks

  • Identifying outliers

Example: use_mcp_tool with server_name: "mongodb", tool_name: "get_distinct_values", arguments: { "collection": "users", "field": "role", "filter": { "active": true } }

Inputs: collection (required), field (required), database, filter.

get_indexesB

Get information about indexes on a collection.

Returns details about:

  • Index names and fields

  • Index types (single field, compound, text, etc.)

  • Index sizes

  • Index options

  • Usage statistics

Inputs: collection (required), database.

get_schemaA

Infer schema from a collection by analyzing sample documents.

Best Practice: Use this before querying to understand collection structure.

Example: use_mcp_tool with server_name: "mongodb", tool_name: "get_schema", arguments: { "collection": "users", "sampleSize": 100 }

Inputs: collection (required), database, sampleSize.

list_collectionsA

List all collections in a database.

Start here to understand what collections are available before querying.

Inputs: database.

list_databasesB

List all databases in the MongoDB server.

Inputs: no named parameters.

queryA

Execute a read-only query on a collection using MongoDB query syntax.

Supports both JSON and CSV output formats:

  • Use outputFormat="json" for standard JSON (default)

  • Use outputFormat="csv" for comma-separated values export

Best Practices:

  • Use projections to fetch only needed fields

  • Add limits for large collections

  • Use sort for consistent ordering

Example - Standard Query: use_mcp_tool with server_name: "mongodb", tool_name: "query", arguments: { "collection": "users", "filter": { "age": { "$gte": 21 } }, "projection": { "name": 1, "email": 1 }, "sort": { "name": 1 }, "limit": 100 }

Example - CSV Export: use_mcp_tool with server_name: "mongodb", tool_name: "query", arguments: { "collection": "users", "filter": { "active": true }, "outputFormat": "csv", "formatOptions": { "includeHeaders": true, "delimiter": "," } }

Inputs: collection (required), filter (required), database, projection, +4 more.

sample_dataA

Get a random sample of documents from a collection.

Supports both JSON and CSV output formats:

  • Use outputFormat="json" for standard JSON (default)

  • Use outputFormat="csv" for comma-separated values export

Useful for:

  • Exploratory data analysis

  • Testing with representative data

  • Understanding data distribution

  • Performance testing with realistic data subsets

Example - JSON Sample: use_mcp_tool with server_name: "mongodb", tool_name: "sample_data", arguments: { "collection": "users", "size": 50 }

Example - CSV Export: use_mcp_tool with server_name: "mongodb", tool_name: "sample_data", arguments: { "collection": "users", "size": 100, "outputFormat": "csv", "formatOptions": { "includeHeaders": true, "delimiter": "," } }

Inputs: collection (required), database, size, outputFormat, +1 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 14 tools

    Disambiguation4/5

    Most tools have distinct purposes, such as aggregate for complex pipelines, query for basic queries, and geo_query for spatial operations. However, query and sample_data both retrieve documents with overlapping functionality, and get_schema might be confused with get_collection_stats for understanding collection structure, leading to some potential confusion.

    Naming Consistency4/5

    The naming follows a consistent verb_noun pattern throughout, like count_documents, explain_query, and get_indexes. There are minor deviations with list_collections and list_databases using 'list' instead of 'get', but overall the pattern is clear and predictable.

    Tool Count5/5

    With 14 tools, this is well-scoped for a MongoDB server, covering a comprehensive range of read-only operations from basic queries to advanced analytics. Each tool serves a specific purpose, such as aggregation, indexing, geospatial queries, and schema analysis, without feeling bloated or incomplete.

    Completeness5/5

    The tool set provides complete coverage for read-only MongoDB operations, including querying, aggregation, indexing, geospatial queries, text search, and metadata inspection. There are no obvious gaps; it supports everything from data retrieval to performance optimization and schema exploration for the domain.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol server that enables LLMs to interact directly with MongoDB databases, allowing users to query collections, inspect schemas, and manage data through natural language.
      23 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol server that enables LLMs to interact directly with MongoDB databases, allowing users to query collections, inspect schemas, and manage data through natural language.
      23 npm
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol (MCP) server for MongoDB operations, enabling AI assistants to interact with MongoDB databases through a standardized interface.
      21 npm
      6
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      A read-only MongoDB MCP server designed for serverless deployment on Vercel, providing secure, limited access to MongoDB databases for AI assistants.
      1
      -