MongoDB
About
This MCP server, developed by kiliczsh, provides AI assistants like Claude with read-only access to MongoDB databases. It offers tools for querying collections, retrieving schema information, and executing aggregations. The server integrates seamlessly with Claude Desktop on…
Details
- Repository
- kiliczsh/mcp-mongo-server
- License
- MIT
Explore
- Read-Only Mode — blocks every write path (insert, update, index creation, and aggregation stages like $out/$merge that could modify data).
- Smart ObjectId Handling — configurable auto/none/force conversion of 24-character hex strings to ObjectIds.
- Schema Inference — automatic collection schema detection from document samples.
- Query & Aggregation — full query and aggregation pipeline support, with optional explain plans.
- Write Operations — insert, update, and index creation (when read-only mode is off).
- Time Conversion — a convertTime helper turns Unix timestamps and date strings into UTC/GMT/ISO, so date queries stay unambiguous across timezones.
- Progress & Cancellation — long operations report progress and can be cancelled mid-flight.
- Two Transports — run locally over stdio, or expose an HTTP endpoint for remote access.
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
MongoDBCommand (node, npx, python, etc.)npxArguments-
Argument 1
mcp-mongo-server -
Argument 2
mongodb://user:pass@localhost:27017/mydatabase
Environment-
MCP_MONGODB_URI
mongodb://user:pass@localhost:27017/mydatabase
Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
-
Argument 1
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
- Node.js 20 or newer
| Variable | Description |
|----------|-------------|
| MCP_MONGODB_URI | MongoDB connection URI (alternative to the argument) |
| MCP_MONGODB_READONLY | Enable read-only mode ("true") |
| MCP_MONGODB_ALLOW_CROSS_DB | Allow cross-database aggregation stages ("true") |
| MCP_MONGODB_ALLOW_SERVER_JS | Allow server-side JavaScript operators ("true") |
| MCP_PORT | HTTP port |
| MCP_HTTP_ALLOWED_ORIGINS | Comma-separated browser origins to allow in HTTP mode |
| MCP_HTTP_JSON_LIMIT | Max HTTP request body size (default 10mb) |
| MCP_HTTP_AUTH_TOKEN | Bearer token required to access the HTTP endpoint |
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"mongodb": {
"env": {
"MCP_MONGODB_URI": "mongodb://user:pass@localhost:27017/mydatabase"
},
"args": [
"mcp-mongo-server",
"mongodb://user:pass@localhost:27017/mydatabase"
],
"command": "npx"
}
}
}
Linux
{
"env": {
"MCP_MONGODB_URI": "mongodb://user:pass@localhost:27017/mydatabase"
},
"args": [
"mcp-mongo-server",
"mongodb://user:pass@localhost:27017/mydatabase"
],
"command": "npx"
}
Macos
{
"env": {
"MCP_MONGODB_URI": "mongodb://user:pass@localhost:27017/mydatabase"
},
"args": [
"mcp-mongo-server",
"mongodb://user:pass@localhost:27017/mydatabase"
],
"command": "npx"
}
Windows
{
"env": {
"MCP_MONGODB_URI": "mongodb://user:pass@localhost:27017/mydatabase"
},
"args": [
"/c",
"npx",
"mcp-mongo-server",
"mongodb://user:pass@localhost:27017/mydatabase"
],
"command": "cmd"
}
MCP MongoDB Server
---
A Model Context Protocol (MCP) server that lets AI assistants work with your MongoDB databases. It exposes your collections, infers their schemas, and runs queries, aggregations, and writes through a standard interface — so tools like Claude Desktop and Cursor can read and reason about your data.
Demo
Why use it
- Talk to your database in plain language — the assistant discovers your collections and their shape automatically.
- Safe by default — turn on read-only mode to let an assistant explore without any risk of changing data.
- Works everywhere — connects to standalone, replica set, sharded, and Atlas deployments, over plain or TLS connections.
Key Features
- Read-Only Mode — blocks every write path (insert, update, index creation, and aggregation stages like $out/$merge that could modify data).
- Smart ObjectId Handling — configurable auto/none/force conversion of 24-character hex strings to ObjectIds.
- Schema Inference — automatic collection schema detection from document samples.
- Query & Aggregation — full query and aggregation pipeline support, with optional explain plans.
- Write Operations — insert, update, and index creation (when read-only mode is off).
- Time Conversion — a convertTime helper turns Unix timestamps and date strings into UTC/GMT/ISO, so date queries stay unambiguous across timezones.
- Progress & Cancellation — long operations report progress and can be cancelled mid-flight.
- Two Transports — run locally over stdio, or expose an HTTP endpoint for remote access.
Requirements
- Node.js 20 or newer
Quick Start
Point the server at your database — no install step needed:
npx -y mcp-mongo-server mongodb://localhost:27017/mydatabase
Explore safely, without any chance of changing data:
npx -y mcp-mongo-server mongodb://localhost:27017/mydatabase --read-only
Usage
Local (stdio)
This is the default, used by Claude Desktop, Cursor, and other local clients:
npx -y mcp-mongo-server "mongodb://user:pass@localhost:27017/mydatabase"
Remote (HTTP)
Expose an HTTP endpoint at /mcp for remote or multi-client access:
npx -y mcp-mongo-server "mongodb://user:pass@localhost:27017/mydatabase" --transport http --port 3001
By default, only requests without a browser Origin (CLIs, IDEs) and requests
from localhost are accepted; everything else is rejected with 403 to guard
against DNS-rebinding attacks. Allow specific browser origins with
--allowed-origins:
npx -y mcp-mongo-server "mongodb://..." --transport http --port 3001 --allowed-origins "https://app.example.com"
Options
| Flag | Description |
|------|-------------|
| --read-only, -r | Block all write operations |
| --allow-cross-db | Allow aggregation $out/$merge/$lookup to target other databases (off by default) |
| --allow-server-js | Allow server-side JavaScript operators $function/$where/$accumulator (off by default) |
| --transport, -t | stdio (default) or http |
| --port, -p | HTTP port (default 3001) |
| --allowed-origins | Comma-separated browser origins to allow in HTTP mode |
| --json-limit | Max HTTP request body size (default 10mb) |
| --auth-token | Require Authorization: Bearer <token> on the HTTP endpoint |
Environment Variables
| Variable | Description |
|----------|-------------|
| MCP_MONGODB_URI | MongoDB connection URI (alternative to the argument) |
| MCP_MONGODB_READONLY | Enable read-only mode ("true") |
| MCP_MONGODB_ALLOW_CROSS_DB | Allow cross-database aggregation stages ("true") |
| MCP_MONGODB_ALLOW_SERVER_JS | Allow server-side JavaScript operators ("true") |
| MCP_PORT | HTTP port |
| MCP_HTTP_ALLOWED_ORIGINS | Comma-separated browser origins to allow in HTTP mode |
| MCP_HTTP_JSON_LIMIT | Max HTTP request body size (default 10mb) |
| MCP_HTTP_AUTH_TOKEN | Bearer token required to access the HTTP endpoint |
Security
Database scope. The server operates on the database in your connection
string. Aggregation stages that reach another database ($out, $merge,
$lookup with an explicit db) are rejected by default, so a pipeline can't
quietly read from or write to databases you didn't point it at. Enable them
with --allow-cross-db if you need them.
Server-side JavaScript. The aggregation operators $function, $where,
and $accumulator run arbitrary JavaScript on the MongoDB server. They are
rejected by default; enable them with --allow-server-js if you trust the
pipelines being run.
Read-only mode blocks every write path, including aggregation stages that
write or run server-side JavaScript ($out, $merge, $function, $where,
$accumulator).
Least privilege. Application-level checks only go so far — the strongest
guarantee comes from the database. Connect with a MongoDB user scoped to just
the database you need, with read-only permissions when the assistant only needs
to explore. That way the database itself enforces the boundary, as defense in
depth.
Documentation
- Integration Guide — Claude Desktop, Windsurf, Cursor, Docker
- Available Tools — query, aggregate, update, insert, and more
- Development — setup, scripts, and debugging
- Contributing
License
MIT — see LICENSE for details.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




