legacy-mongodb-mcp
Provides read-only access to legacy MongoDB instances (<4.0) via the Model Context Protocol, enabling AI models to query databases, collections, and run aggregations safely.
README
Legacy MongoDB MCP Server
A Model Context Protocol (MCP) server specifically designed for legacy MongoDB instances (versions < 4.0).
Overview
Modern MongoDB tools often drop support for older versions of the database. This project aims to bridge that gap by providing an MCP interface for legacy MongoDB deployments, allowing AI models to interact with historical data stored in older systems.
Current Status
Focus: Strictly read-only operations.
This project enforces read-only access to ensure data safety when inspecting legacy production systems.
🔒 Read-Only Enforcement
- No
connecttool exposed - Connection is established at startup via environment variable - No write operations - All tools are read-only by design
- Aggregation restrictions -
$outand$mergestages are blocked - Index check mode - Optional enforcement to reject queries without index usage
- Response limits - Configurable limits on documents and bytes per query
Available Tools
| Tool | Description |
|---|---|
list_databases |
List all databases in the MongoDB instance |
list_collections |
List all collections in a database |
find |
Run a find query against a collection |
count |
Count documents in a collection with optional filter |
aggregate |
Run an aggregation pipeline (read-only stages only) |
collection_indexes |
Describe indexes for a collection |
collection_schema |
Infer schema from sampled documents |
collection_storage_size |
Get storage size statistics for a collection |
db_stats |
Get database statistics |
explain |
Get query execution plan for find/aggregate/count |
export_data |
Export query/aggregation results to EJSON file |
mongodb_logs |
Retrieve recent mongod log entries |
get_server_config |
Get current server configuration (redacted) |
Tool Usage Examples
explain
Returns query execution plan statistics:
# Format: ["method_name", {"arguments"}]
explain(
database="testdb",
collection="products",
method=["find", {"filter": {"status": "active"}, "limit": 10}],
verbosity="executionStats"
)
export_data
Exports query results to a JSON file:
# Format: ["target_name", {"arguments"}]
export_data(
database="testdb",
collection="products",
exportTitle="active_products",
exportTarget=["find", {"filter": {"status": "active"}, "limit": 100}],
jsonExportFormat="relaxed" # or "canonical"
)
Configuration
The server is configured via environment variables:
| Variable | Required | Default | Description |
|---|---|---|---|
MDB_MCP_CONNECTION_STRING |
Yes | - | MongoDB connection string (mongodb:// or mongodb+srv://) |
MDB_MCP_READ_ONLY |
No | true |
Enable read-only mode (always true for this server) |
MDB_MCP_INDEX_CHECK |
No | false |
Reject queries that don't use an index |
MDB_MCP_MAX_DOCUMENTS_PER_QUERY |
No | 100 |
Maximum documents per query |
MDB_MCP_MAX_BYTES_PER_QUERY |
No | 16777216 |
Maximum response bytes (16MB) |
MDB_MCP_LOG_LEVEL |
No | INFO |
Logging level (DEBUG, INFO, WARNING, ERROR) |
🔒 Security Recommendation: Always use environment variables for the connection string. Never pass credentials as command-line arguments.
Installation
Prerequisites
- Python 3.10+ (for local installation)
- Docker (for containerized usage)
- Access to a MongoDB instance (version 2.6 - 3.6 recommended)
Option 1: Docker (Recommended)
Pull and run the pre-built Docker image:
docker run --rm -i \
--network=host \
-e MDB_MCP_CONNECTION_STRING="mongodb://user:password@localhost:27017/mydb?authSource=admin" \
-e MDB_MCP_READ_ONLY=true \
ghcr.io/webxspark/legacy-mongodb-mcp:latest
Or build locally:
# Clone the repository
git clone https://github.com/Webxspark/legacy-mongodb-mcp.git
cd legacy-mongodb-mcp
# Build the image
docker build -t legacy-mongodb-mcp .
# Run the container
docker run --rm -i \
--network=host \
-e MDB_MCP_CONNECTION_STRING="mongodb://user:password@localhost:27017" \
legacy-mongodb-mcp
Option 2: Local Installation
# Clone the repository
git clone https://github.com/Webxspark/legacy-mongodb-mcp.git
cd legacy-mongodb-mcp
# Install dependencies
pip install -r requirements.txt
Usage
With VS Code / Cursor (Docker)
Add to your .vscode/mcp.json:
{
"servers": {
"legacy-mongodb": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--network=host",
"-e", "MDB_MCP_CONNECTION_STRING",
"-e", "MDB_MCP_READ_ONLY",
"ghcr.io/webxspark/legacy-mongodb-mcp:latest"
],
"env": {
"MDB_MCP_CONNECTION_STRING": "mongodb://user:password@localhost:27017/mydb?authSource=admin",
"MDB_MCP_READ_ONLY": "true"
}
}
}
}
With VS Code / Cursor (Local Python)
Add to your .vscode/mcp.json:
{
"servers": {
"legacy-mongodb": {
"command": "python",
"args": ["src/server.py"],
"env": {
"MDB_MCP_CONNECTION_STRING": "mongodb://user:password@localhost:27017",
"MDB_MCP_READ_ONLY": "true",
"MDB_MCP_INDEX_CHECK": "false"
}
}
}
}
Or with uv:
{
"servers": {
"legacy-mongodb": {
"command": "uv",
"args": ["run", "--with", "mcp", "--with", "pymongo", "python", "src/server.py"],
"env": {
"MDB_MCP_CONNECTION_STRING": "mongodb://user:password@localhost:27017"
}
}
}
}
Dry Run Mode
Test your configuration without starting the server:
# Local
export MDB_MCP_CONNECTION_STRING="mongodb://localhost:27017"
python src/server.py --dry-run
# Docker
docker run --rm -i \
-e MDB_MCP_CONNECTION_STRING="mongodb://localhost:27017" \
ghcr.io/webxspark/legacy-mongodb-mcp:latest --dry-run
Testing with Docker Compose
A Docker Compose configuration is provided for testing with MongoDB 3.6:
A Docker Compose configuration is provided for testing with MongoDB 3.6:
# Start the test MongoDB instance
docker compose up -d
# The connection string will be:
# mongodb://admin:secret_password@localhost:27017
Roadmap
Future development will expand functionality based on user needs:
- [ ] Write operations (safeguarded, opt-in)
- [ ] User/Role management
- [ ] Backup utilities
License
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.