Labsco
jb-7-jay logo

MongoDB MCP Server

from jb-7-jay

An MCP server providing tools and prompts for interacting with a MongoDB database.

๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedFreeNeeds API keys

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

Using Cursor with MCP Server

  1. Install Cursor (AI Code Editor):

  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

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:
    {
      "_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:
    {
      "_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:
    [
      {
        "_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:

    # 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:

    # Watch server logs in real-time
    tail -f ~/Library/Logs/Claude/mcp*.log
  2. MongoDB Operations:

    # Check MongoDB status
    mongosh
    use mcp-mongo
    db.users.find()  # List all users
  3. Test Tools Manually:

    # 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