Skip to main content
Glama

MongoDB MCP Server

by ruslankf777
README.md6.84 kB
# MongoDB MCP Server A Model Context Protocol (MCP) server that provides MongoDB database operations through a standardized interface. This server enables AI assistants to interact with MongoDB databases using CRUD operations, schema analysis, and database management tools. ## Features - **CRUD Operations**: Create, Read, Update, Delete documents - **Collection Management**: List collections, get statistics, analyze schemas - **Index Management**: View and analyze database indexes - **Schema Analysis**: Automatic document schema detection - **JSON Serialization**: Proper handling of MongoDB ObjectIds and datetime objects - **Error Handling**: Comprehensive error messages and validation ## Installation ### Prerequisites - Python 3.8 or higher - MongoDB server running - pip (Python package installer) ### Install as a Package (main) 1. **Clone or download the repository**: ```bash cd C:/Users/Admin/Downloads/MCP/mcp_mongo ``` 2. **Create a virtual environment** (recommended): ```bash uv venv ``` 3. **Activate the virtual environment**: ```bash # Windows .venv\Scripts\activate # Linux/Mac source .venv/bin/activate ``` 4. **Install the package in development mode**: ```bash uv pip install -e . ``` ## Usage Options ### 1. As a Python Module Run the server directly as a Python module: ```bash python -m mcp_mongo.server <mongodb_connection_string> ``` **Examples**: ```bash # Local MongoDB python -m mcp_mongo.server "mongodb://localhost:27017/mydb" # MongoDB with authentication python -m mcp_mongo.server "mongodb://admin:password@localhost:27017/mydb?authSource=admin" # MongoDB Atlas python -m mcp_mongo.server "mongodb+srv://username:password@cluster.mongodb.net/database" ``` ### 2. As a Console Script After installation, use the console script: ```bash mcp-mongo <mongodb_connection_string> ``` **Examples**: ```bash # Local MongoDB mcp-mongo "mongodb://localhost:27017/mydb" # With authentication mcp-mongo "mongodb://username:password@localhost:27017/db_name?authSource=admin" ``` ### 3. Direct Script Execution Run the original script directly: ```bash python mongodb_mcp_server.py <mongodb_connection_string> ``` ## MCP Configuration ### For Cursor IDE Add this to your `~/.cursor/mcp.json`: ```json { "mcpServers": { "mongodb-simple": { "command": "<Path to python.exe in .venv>", "args": ["-m", "mcp_mongo.server", "mongodb://username:password@localhost:27017/mydb?authSource=admin"] } } } ``` ### For Other MCP Clients Configure your MCP client to use one of these approaches: 1. **Module approach** (recommended): ```json { "command": "python", "args": ["-m", "mcp_mongo.server", "mongodb://username:password@localhost:27017/mydb"] } ``` 2. **Console script approach**: ```json { "command": "mcp-mongo", "args": ["mongodb://username:password@localhost:27017/mydb"] } ``` ## Available Tools ### Document Operations - `list_collections()` - List all collections in the database - `create_document(collection_name, document)` - Insert a new document - `read_documents(collection_name, query, limit)` - Find documents - `read_document_by_id(collection_name, document_id)` - Find document by ID - `update_document(collection_name, query, update)` - Update documents - `update_document_by_id(collection_name, document_id, update)` - Update by ID - `delete_documents(collection_name, query)` - Delete documents - `delete_document_by_id(collection_name, document_id)` - Delete by ID - `count_documents(collection_name, query)` - Count documents ### Database Analysis - `get_collection_schema(collection_name)` - Analyze document schema - `get_collection_indexes(collection_name)` - View collection indexes - `get_collection_stats(collection_name)` - Get collection statistics ## Examples ### Basic CRUD Operations ```python # Create a document create_document("users", '{"name": "John Doe", "email": "john@example.com", "age": 30}') # Read documents read_documents("users", '{"age": {"$gte": 25}}', 10) # Update a document update_document("users", '{"name": "John Doe"}', '{"$set": {"age": 31}}') # Delete documents delete_documents("users", '{"age": {"$lt": 18}}') ``` ### Schema Analysis ```python # Get schema for a collection get_collection_schema("users") # Get collection statistics get_collection_stats("users") # Get indexes get_collection_indexes("users") ``` ## Connection String Format The MongoDB connection string follows this format: ``` mongodb://[username:password@]host[:port]/database[?options] ``` **Common options**: - `authSource=admin` - Authentication database - `replicaSet=name` - Replica set name - `ssl=true` - Enable SSL/TLS - `retryWrites=true` - Enable retryable writes ## Error Handling The server provides detailed error messages for: - **Connection failures** - Invalid connection strings, network issues - **Authentication errors** - Wrong credentials, missing permissions - **Query validation** - Invalid JSON, malformed queries - **Operation errors** - Missing collections, constraint violations ## Development ### Project Structure ``` mcp_mongo/ ├── setup.py # Package configuration ├── README.md # This file ├── pyproject.toml # Main server implementation ├── mcp_mongo/ │ ├── __init__.py # Package initialization │ ├── server.py # Module entry point | └── mongodb_mcp_server.py └── .venv/ # Virtual environment ``` ### Adding New Tools To add new MCP tools: 1. Add the function to `mongodb_mcp_server.py` 2. Decorate it with `@mcp.tool()` 3. Add proper documentation and error handling 4. Test the new functionality ### Testing Test the server with a local MongoDB instance: ```bash # Start MongoDB (if not running) mongod # Test the server python -m mcp_mongo.server "mongodb://username:password@localhost:27017/test" ``` ## Troubleshooting ### Common Issues 1. **Connection refused**: Ensure MongoDB is running 2. **Authentication failed**: Check username/password and authSource 3. **Module not found**: Ensure package is installed with `pip install -e .` 4. **Permission denied**: Check file permissions and MongoDB user roles ### Debug Mode For debugging, check the server logs in stderr. The server provides detailed error messages for troubleshooting. ## License This project is open source. Please check the license file for details. ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Add tests if applicable 5. Submit a pull request ## Support For issues and questions: - Check the troubleshooting section - Review the error messages - Ensure MongoDB is properly configured - Verify connection string format

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ruslankf777/mcp_mongo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server