MongoDB That Works
A MongoDB MCP server with schema discovery and field validation. Requires a MONGODB_URI environment variable.
MongoDB That Works - MCP Server
A reliable MongoDB MCP (Model Context Protocol) server that provides seamless MongoDB integration for Claude Desktop with built-in schema discovery and field validation.
Features
- 🔍 Schema Discovery: Automatically analyze collection structures
- ✅ Field Validation: Prevent field name mistakes
- 📊 Full MongoDB Support: Find, aggregate, insert, update, delete operations
- 🚀 High Performance: Efficient connection pooling and query optimization
- 🔐 Secure: Support for MongoDB Atlas and authentication
- 🎯 Type-Safe: Built with TypeScript and Zod validation
Installation
Install from npm
npm install -g @sourabhshegane/mongodb-mcp-that-works
Configuration
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"mongodb": {
"command": "npx",
"args": ["-y", "@sourabhshegane/mongodb-mcp-that-works@latest"],
"env": {
"MONGODB_URI": "mongodb+srv://username:[email protected]/database",
"MONGODB_DATABASE": "your_database_name"
}
}
}
}
Configuration Options
MONGODB_URI: Your MongoDB connection string (required)MONGODB_DATABASE: Default database name (optional)
Available Tools
1. listCollections
List all collections in the database.
// Example
mcp.listCollections({ filter: {} })
2. find
Find documents in a collection with filtering, sorting, and pagination.
// Example
mcp.find({
collection: "users",
filter: { status: "active" },
sort: { createdAt: -1 },
limit: 10
})
3. findOne
Find a single document.
// Example
mcp.findOne({
collection: "users",
filter: { email: "[email protected]" }
})
4. aggregate
Run aggregation pipelines.
// Example
mcp.aggregate({
collection: "orders",
pipeline: [
{ $match: { status: "completed" } },
{ $group: { _id: "$userId", total: { $sum: "$amount" } } }
]
})
5. count
Count documents matching a filter.
// Example
mcp.count({
collection: "products",
filter: { inStock: true }
})
6. distinct
Get distinct values for a field.
// Example
mcp.distinct({
collection: "orders",
field: "status"
})
7. insertOne
Insert a single document.
// Example
mcp.insertOne({
collection: "users",
document: { name: "John Doe", email: "[email protected]" }
})
8. updateOne
Update a single document.
// Example
mcp.updateOne({
collection: "users",
filter: { _id: "123" },
update: { $set: { status: "active" } }
})
9. deleteOne
Delete a single document.
// Example
mcp.deleteOne({
collection: "users",
filter: { _id: "123" }
})
10. getSchema
Analyze collection structure and discover field names.
// Example
mcp.getSchema({
collection: "users",
sampleSize: 100
})
// Returns:
{
"collection": "users",
"sampleSize": 100,
"fields": {
"_id": {
"types": ["ObjectId"],
"examples": ["507f1f77bcf86cd799439011"],
"frequency": "100/100",
"percentage": 100
},
"email": {
"types": ["string"],
"examples": ["[email protected]"],
"frequency": "100/100",
"percentage": 100
}
}
}
Best Practices
- Use Schema Discovery First: Before querying, run
getSchemato understand field names - Handle ObjectIds: The server automatically converts string IDs to ObjectIds
- Use Projections: Limit returned fields to improve performance
- Batch Operations: Use aggregation pipelines for complex queries
Examples
Basic Usage
// Get schema first to avoid field name mistakes
const schema = await mcp.getSchema({ collection: "reports" });
// Use correct field names from schema
const reports = await mcp.find({
collection: "reports",
filter: { organization_id: "64ba7374f8b63db2083b2665" },
limit: 10
});
Advanced Aggregation
const analytics = await mcp.aggregate({
collection: "orders",
pipeline: [
{ $match: { createdAt: { $gte: new Date("2024-01-01") } } },
{ $group: {
_id: { $dateToString: { format: "%Y-%m", date: "$createdAt" } },
revenue: { $sum: "$amount" },
count: { $sum: 1 }
}},
{ $sort: { _id: 1 } }
]
});
Troubleshooting
Connection Issues
- Verify your MongoDB URI is correct
- Check network connectivity to MongoDB Atlas
- Ensure IP whitelist includes your current IP
Field Name Errors
- Always use
getSchemato discover correct field names - Remember MongoDB is case-sensitive
- Check for typos in nested field paths (e.g., "user.profile.name")
Performance
- Use indexes for frequently queried fields
- Limit result sets with
limitparameter - Use projections to return only needed fields
License
MIT License - see LICENSE file for details
Changelog
v0.1.0
- Initial release
- Full MongoDB CRUD operations
- Schema discovery tool
- Automatic ObjectId conversion
- TypeScript support
Made out of pain since the official MongoDB MCP didn't work for me
Serveurs connexes
SQL-Transpiler MCP Tool
Transpile SQL queries between different dialects using the sqlglot library.
MongoDB Atlas MCP Server
Manage MongoDB Atlas projects, including cluster creation, user management, and network access configuration.
MCP Toolbox for Databases
Open source MCP server specializing in easy, fast, and secure tools for Databases.
CData CSV Files
A read-only MCP server for CSV files from CData, requiring an external JDBC driver for connection.
Database Server
A Model Context Protocol (MCP) server that provides multi-database query execution capabilities with support for SQLite, PostgreSQL, and MySQL databases. Includes a built-in Web UI for managing database connections.
DeFi Rates
Real-time DeFi lending rates across 14+ protocols (Aave, Morpho, Spark, Compound, Venus, etc). Query borrow/supply rates, c ompare platforms, calculate looping strategies on 6 chains (Ethereum, Arbitrum, Base, BSC, Solana, HyperEVM).
Vestige MCP
Provides comprehensive DeFi analytics and data for the Algorand ecosystem through the Vestige API.
BigQuery
Inspect database schemas and execute queries on Google BigQuery.
Yargı MCP
Access Turkish legal databases and decision sources through a standardized MCP server.
Dune Analytics
Access Dune Analytics data for AI agents, including DEX metrics, EigenLayer stats, and Solana token balances.