mongo-scout-mcp
A production-ready MCP server for MongoDB with AI-powered tools for exploration, querying, diagnostics, monitoring, data quality, and safe writes.
README
Mongo Scout MCP
Scout your MongoDB databases with AI - A production-ready Model Context Protocol server with built-in safety features, live monitoring, and data quality tools.
What You Get
You ask:
"Anything unusual happening with order volume this month?"
Mongo Scout returns:
Volume Analysis: orders
Statistics (last 30 days)
| Metric | Value |
|---|---|
| Daily Average | 2,847 documents |
| Standard Deviation | 412 |
| Min / Max | 1,923 / 3,601 |
Anomalies Detected
- Feb 14 — 5,892 documents (+7.4σ) — Valentine's Day spike
- Feb 22 — 847 documents (-4.9σ) — Payment gateway outage window
- Mar 1 — 4,201 documents (+3.3σ) — Month-start subscription renewals
Recommendations
- Feb 22 drop warrants investigation — possible data loss during outage
- Consider auto-scaling rules for predictable spikes (month boundaries, holidays)
- Set up alerts for volumes exceeding ±3σ from rolling average
That's detectVolumeAnomalies — one of 50 tools covering exploration, querying, diagnostics, monitoring, data quality, and safe writes.
Quick Start
Claude Code
claude mcp add mongo-scout -- npx -y mongo-scout-mcp mongodb://localhost:27017 mydb
Then ask: "What collections do I have and what do their schemas look like?"
<details> <summary>Claude Desktop</summary>
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"mongo-scout": {
"command": "npx",
"args": ["-y", "mongo-scout-mcp", "mongodb://localhost:27017", "mydb"],
"type": "stdio"
}
}
}
</details>
<details> <summary>Cursor / VS Code</summary>
Add to your MCP settings:
{
"mongo-scout": {
"command": "npx",
"args": ["-y", "mongo-scout-mcp", "mongodb://localhost:27017", "mydb"]
}
}
</details>
<details> <summary>Read-Only vs Read-Write</summary>
The server runs in read-only mode by default. For write operations, run a separate instance:
{
"mcpServers": {
"mongo-scout-readonly": {
"command": "npx",
"args": ["-y", "mongo-scout-mcp", "--read-only", "mongodb://localhost:27017", "mydb"],
"type": "stdio"
},
"mongo-scout-readwrite": {
"command": "npx",
"args": ["-y", "mongo-scout-mcp", "--read-write", "mongodb://localhost:27017", "mydb_dev"],
"type": "stdio"
}
}
}
- mongo-scout-readonly: Safe exploration, no risk of data modification
- mongo-scout-readwrite: Write operations when explicitly needed
</details>
Tools
Explore — understand your database
listDatabases— all databases in the instancegetDatabaseStats— storage and performance statisticslistCollections— collections in the current databasegetCollectionStats— size, document count, index detailsinferSchema— schema inference from sampled documents
Query — find and analyze documents
find— query documents with filtering, sorting, projectionaggregate— run aggregation pipelinescount— count documents matching a querydistinct— unique values for a fieldtextSearch— full-text search across indexed fieldsexplainQuery— query execution plan analysis
Diagnose — spot problems early
detectVolumeAnomalies— unusual patterns in document volumeanalyzeQueryPerformance— query optimization using explain plans
Monitor — watch it live
getServerStatus— server performance metricsgetCurrentOperations— currently running operationsgetConnectionPoolStats— connection pool healthgetProfilerStats— profiler data and slow operationsgetLiveMetrics— real-time metrics with continuous updatesgetHottestCollections— collections with highest activitygetCollectionMetrics— detailed per-collection metricsgetSlowestOperations— slow query trackingrunAdminCommand— execute admin commands
Data Quality — trust your data
findDuplicates— duplicate documents by field combinationfindOrphans— orphaned references across collectionsfindMissingFields— documents missing required fieldsfindInconsistentTypes— type inconsistencies across documentsvalidateDocuments— custom validation with MongoDB$expr
Relationships — follow the references
exploreRelationships— multi-hop relationship traversal
Time Series — temporal analysis
findRecent— documents within a time windowfindInTimeRange— date range queries with optional grouping
Indexes — manage your indexes
listIndexes— all indexes for a collectioncreateIndex— create new indexesdropIndex— remove indexes
Export — get data out
exportCollection— JSON, JSONL, or CSVcloneCollection— clone with filtering and index copying
Preview — dry-run before changing anything
previewUpdate/previewDelete— see what would change before committingpreviewBulkWrite— preview bulk operations
Write (read-write only) — safe modifications
insertOne/insertMany— insert documentsupdateOne/updateMany— update with dryRun and maxDocuments limitsreplaceOne— replace a single documentfindOneAndUpdate— find and update atomicallydeleteOne/deleteMany— delete with dryRun and maxDocuments limitsbulkWrite— multiple write operations in one callrenameField— rename fields with dry-run and index migrationcreateCollection/dropCollection— collection management
Security
- Read-only by default — write operations must be explicitly enabled
- All queries are validated and sanitized
- MongoDB operator injection protection
- Connection string credential redaction in logs
- Rate limiting on all operations
- Response size limits to prevent memory exhaustion
Examples
"What collections do I have and what's the schema of users?"
listCollections()
inferSchema({ collection: "users", sampleSize: 50 })
"Find duplicate emails in the users collection."
findDuplicates({ collection: "users", fields: ["email"], options: { limit: 100 } })
"Show me order volume anomalies over the last month."
detectVolumeAnomalies({ collection: "orders", timestampField: "createdAt", options: { groupBy: "day", lookbackPeriods: 30 } })
"What's happening on the server right now?"
getServerStatus()
getCurrentOperations()
getHottestCollections({ limit: 5, sampleDuration: 5000 })
"Find orders that reference deleted users."
findOrphans({ collection: "orders", localField: "userId", foreignCollection: "users", foreignField: "_id" })
"Export the products collection as CSV."
exportCollection({ collection: "products", options: { format: "csv", flatten: true } })
Configuration
| Variable | Default | Description |
|---|---|---|
ENABLE_LOGGING |
false |
Enable file logging |
LOG_DIR |
./logs |
Log file directory |
CLI flags: --read-only (default), --read-write, --mode <mode>
Logging
File logging is disabled by default. Set ENABLE_LOGGING=true to enable. Two log files are created in LOG_DIR:
- tool-usage.log — every tool call with timestamp, name, and arguments
- error.log — errors with stack traces
Connection strings are automatically redacted in all output.
ObjectId Format
Both formats accepted:
{ "_id": { "$oid": "507f1f77bcf86cd799439011" } }
{ "_id": "507f1f77bcf86cd799439011" }
Development
git clone https://github.com/bluwork/mongo-scout-mcp.git
cd mongo-scout-mcp
pnpm install
pnpm build
pnpm test
License
Apache-2.0
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.
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.
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.
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.
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.
E2B
Using MCP to run code via e2b.