Skip to main content
Glama
jb-7-jay

MongoDB MCP Server

by jb-7-jay
README.md6.3 kB
# MongoDB MCP Server A robust Model Context Protocol (MCP) server that provides tools and prompts for interacting with a MongoDB database. Built with Node.js and MongoDB, featuring graceful shutdown handling and comprehensive error management. ## Features - MongoDB integration using Mongoose - User management tools: - `create-user`: Create a new user - `get-user`: Retrieve user by email - `list-users`: List all users with pagination - Interactive prompts for guided operations - Graceful shutdown handling - Comprehensive error management - Clean single-file implementation ## Prerequisites - Node.js (Latest LTS version) - MongoDB (v8.0 or higher) - Claude for Desktop (latest version) - Visual Studio Code with Cursor extension (for development) ## Development Setup 1. Install MongoDB: ```bash # Using Homebrew on macOS brew tap mongodb/brew brew install mongodb-community # Start MongoDB service brew services start mongodb-community ``` 2. Install Cursor in VS Code: - Open VS Code - Go to Extensions (Ctrl+Shift+X) - Search for "Cursor" - Click Install 3. Clone and Setup: ```bash git clone <repository-url> cd learn-mcp-mongo npm install ``` 4. Configure Environment: ```bash cp .env.example .env # Edit .env with your MongoDB URI if different from default ``` ## Quick Start 1. Clone or download this repository 2. Install dependencies: ```bash npm install ``` 3. Configure MongoDB: - Make sure MongoDB is running locally (default: mongodb://localhost:27017) - Or update the `.env` file with your MongoDB connection string: ``` MONGODB_URI=your_mongodb_connection_string ``` 4. Configure Claude for Desktop: - Open or create `~/Library/Application Support/Claude/claude_desktop_config.json` - Add the following configuration: ```json { "mcpServers": { "mcp-mongo": { "command": "node", "args": ["/absolute/path/to/server.js"] } } } ``` 5. Start Claude for Desktop - The MCP server will start automatically - Look for the "Search and tools" icon to access the tools ## Using Cursor with MCP Server 1. **Install Cursor (AI Code Editor):** - Download from [https://www.cursor.so/](https://www.cursor.so/) - Install and open Cursor on your machine 2. **Add MCP Server to Cursor:** - Open Cursor - Go to `Settings` > `Integrations` > `MCP Servers` - Click `Add MCP Server` - Fill in: - **Name:** mcp-mongo - **Command:** node - **Arguments:** /absolute/path/to/server.js - **Working Directory:** /absolute/path/to/learn-mcp-mongo - Save and enable the integration 3. **Use Cursor's AI Features:** - Open your project folder in Cursor - Use `/help` in the command palette for available AI commands - Use `/edit`, `/fix`, `/doc`, and other AI features to interact with your code and MCP tools - You can now test, debug, and develop your MCP server directly in Cursor with AI assistance ## Usage Examples ### Creating a User ``` Create a new user with: - name: "John Doe" - email: "john@example.com" - age: 30 ``` ### Finding a User ``` Get user information for email: john@example.com ``` ## Project Structure ``` learn-mcp-mongo/ ├── server.js # Main server file with all functionality ├── .env # Environment variables └── package.json # Project dependencies and scripts ``` ## Available Tools ### create-user Creates a new user in the database. - Parameters: - name: User's full name (string, required) - email: User's email address (string, required, unique) - age: User's age (number, required) - Response: ```json { "_id": "user_id", "name": "John Doe", "email": "john@example.com", "age": 30, "createdAt": "2025-06-26T00:00:00.000Z" } ``` ### get-user Retrieves a user by their email address. - Parameters: - email: User's email address (string, required) - Response: ```json { "_id": "user_id", "name": "John Doe", "email": "john@example.com", "age": 30, "createdAt": "2025-06-26T00:00:00.000Z" } ``` ### list-users Lists all users in the database with pagination. - Parameters: - limit: Maximum number of users to return (number, optional, default: 10) - Response: ```json [ { "_id": "user_id", "name": "John Doe", "email": "john@example.com", "age": 30, "createdAt": "2025-06-26T00:00:00.000Z" }, // ... more users ] ``` ## Available Prompts ### create-new-user An interactive prompt that guides you through the process of creating a new user by asking for: 1. Full Name 2. Email Address 3. Age ## Development Guide ### Running the Server 1. Start in Development Mode: ```bash # Run with inspector for debugging npx @modelcontextprotocol/inspector node mcp-server.js # Or run directly npm start ``` 2. Using Cursor in VS Code: - Open the project in VS Code - Use Cursor's AI features: - Type `/help` for Cursor commands - Use `/edit` for code suggestions - Use `/doc` to generate documentation - Use `/fix` to get error fixes ### Debugging 1. Check Server Logs: ```bash # Watch server logs in real-time tail -f ~/Library/Logs/Claude/mcp*.log ``` 2. MongoDB Operations: ```bash # Check MongoDB status mongosh use mcp-mongo db.users.find() # List all users ``` 3. Test Tools Manually: ```bash # Using curl to test tools (when running in HTTP mode) curl -X POST http://localhost:3000/tools/list-users ``` ### Server Features 1. Graceful Shutdown: - Handles SIGINT, SIGTERM, SIGHUP signals - Closes MongoDB connections properly - Logs shutdown process 2. Error Handling: - MongoDB connection errors - Tool execution errors - Uncaught exceptions - Unhandled rejections 3. Performance Options: - MongoDB connection timeout: 5s - Heartbeat frequency: 2s - User listing pagination ## Troubleshooting 1. Make sure MongoDB is running and accessible 2. Check Claude for Desktop logs at `~/Library/Logs/Claude/mcp*.log` 3. Verify the server.js path in claude_desktop_config.json is correct 4. Restart Claude for Desktop after configuration changes

Latest Blog Posts

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/jb-7-jay/learn-mcp-server-mongo'

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