mongodb-mcp-that-works
A reliable MongoDB MCP server that provides seamless MongoDB integration for Claude Desktop with built-in schema discovery and field validation
Documentation
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-worksConfiguration
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:password@cluster.mongodb.net/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: "user@example.com" }
})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: "john@example.com" }
})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": ["user@example.com"],
"frequency": "100/100",
"percentage": 100
}
}
}Best Practices
1. Use Schema Discovery First: Before querying, run `getSchema` to understand field names
2. Handle ObjectIds: The server automatically converts string IDs to ObjectIds
3. Use Projections: Limit returned fields to improve performance
4. 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 `getSchema` to 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 `limit` parameter
- 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
Frequently asked questions
What is mongodb-mcp-that-works?
mongodb-mcp-that-works is A reliable MongoDB MCP server that provides seamless MongoDB integration for Claude Desktop with built-in schema discovery and field validation
How do I install mongodb-mcp-that-works?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is mongodb-mcp-that-works open source?
Yes — it is hosted on GitHub at https://github.com/sourabhfb/mongodb-mcp-that-works.
Related MCP tools
The all-in-one Desktop & Docker AI application with built-in RAG, AI agents, No-code agent builder, MCP compatibility, and more.
An AI-powered task-management system you can drop into Cursor, Lovable, Windsurf, Roo, and others. Built for the Model Context Protocol to enhance AI capabiliti
Fay是一个帮助数字人(2.5d、3d、移动、pc、网页)或大语言模型(openai兼容、deepseek)连通业务系统的mcp框架。 JavaScript-based implementation. Trusted by 12000+ developers.
CTTF: MCP integration between Cursor and Figma, allowing Cursor Agentic AI to communicate with Figma for reading designs and modifying them programmatically.
🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients. JavaScript-based implementation.
This is MCP server for Claude that gives it terminal control, file system search and diff file editing capabilities JavaScript-based implementation.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP