An MCP (Model Context Protocol) server that enables Claude to interact with MongoDB databases, with optional Mongoose schema support.
- Query, aggregation, insert, update, and manage MongoDB collections directly from Claude
- Optional Mongoose schema support for data validation and hooks
- Soft delete implementation for document safety
- Clean separation between schema-based and schemaless operations
- Node.js (v18 or higher)
- MongoDB
To add the MCP server to Claude Desktop:
- Go to Settings > Developer > Edit config
- Add the following to your claude_desktop_config.json file:
{
"mcpServers": {
"mongodb-mongoose": {
"command": "npx",
"args": [
"-y",
"mongo-mongoose-mcp",
],
"env": {
"MONGODB_URI": "<your mongodb uri>",
"SCHEMA_PATH" : "<path to the root folder of all your mongoose schema objects>"
}
}
}
}
When integrated with Claude, the following commands become available:
find
: Query documents with filtering and projectionlistCollections
: List available collectionsinsertOne
: Insert a single documentupdateOne
: Update a single documentdeleteOne
: Soft delete a single documentcount
: Count documents with filteringaggregate
: Query documents with aggregation pipeline
createIndex
: Create a new indexdropIndex
: Remove an indexindexes
: List indexes for a collection
Once integrated with Claude Desktop, you can use natural language to interact with your MongoDB database:
- "Show me all users in my database who are older than 30"
- "Insert a new product with name 'Widget X', price $29.99, and category 'Electronics'"
- "Count all completed orders from the past week"
- "Create an index on the email field of the users collection"
# Clone the repository
git clone https://github.com/nabid-pf/mongo-mongoose-mcp.git
cd mongo-mongoose-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Test with the MCP inspector
npx @modelcontextprotocol/inspector node dist/index.js
Place your Mongoose schema object files in the a directory and specify that path in SCHEMA_PATH var Make sure file names reflect the collection name
// models/users.js (for users collection)
export default {
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
age: Number,
createdAt: { type: Date, default: Date.now },
isDeleted: { type: Boolean, default: false },
deletedAt: Date
};
This project uses:
- MongoDB native driver for direct database operations
- Mongoose for schema-based operations when schemas are available
- The Model Context Protocol (MCP) to communicate with Claude
MIT