MongoDB MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MONGODB_URIYesMongoDB connection string with authentication if needed
MONGODB_DEFAULT_DATABASENoDefault database name when not specified in queries

Schema

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Tools

Functions exposed to the LLM to take actions

NameDescription
list_databases

List all databases in the MongoDB server.

list_collections

List all collections in a database.

Start here to understand what collections are available before querying.

get_schema

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 }

query

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": "," } }

aggregate

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
  • $lookup: Perform left outer joins
  • $unwind: Deconstruct array fields

Unsafe/Blocked Stages:

  • $out: Write results to collection
  • $merge: Merge results into collection
  • $addFields: Add new fields
  • $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 }} ] }

get_collection_stats

Get detailed statistics about a collection.

Returns information about:

  • Document count and size
  • Storage metrics
  • Index sizes and usage
  • Average document size
  • Padding factor
get_indexes

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
explain_query

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.

get_distinct_values

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 } }

sample_data

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": "," } }

count_documents

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 } } }

find_by_ids

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 } }

geo_query

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]] ] } }
text_search

Perform a full-text search on a collection.

Requirements:

  • Collection must have a text index
  • Only one text index per collection is allowed

Features:

  • Supports phrases and keywords
  • Word stemming
  • Stop words removal
  • Text score ranking

Example: use_mcp_tool with server_name: "mongodb", tool_name: "text_search", arguments: { "collection": "articles", "searchText": "mongodb database", "filter": { "published": true }, "limit": 10, "includeScore": true }