Skip to main content
Glama
sergei-tofu-fedorov

Mongo MCP Server

README.md
# MongoDB MCP Server

A Model Context Protocol (MCP) server that provides MongoDB database access for Claude Code. This server allows you to query MongoDB databases directly from Claude with configurable connection parameters.

## Features

- **Master User Management**: Find users by platform ID, email, account ID, or user ID
- **Invoice Management**: Search and retrieve invoices by account ID or invoice ID
- **Connection Health**: Check MongoDB connection status and health
- **Flexible Configuration**: Support for command-line arguments, environment variables, and config files
- **Error Handling**: Graceful fallback when database is unavailable

## Installation

### Option 1: Using mcp add (Recommended)
```bash
cd your-project-directory
mcp add https://github.com/sergei-tofu-fedorov/mongo_mcp.git
```

Then edit the generated `.mcp.json` to add your connection parameters:
```json
{
  "mcpServers": {
    "mongo_mcp": {
      "command": "npx",
      "args": [
        "mongo-mcp-server",
        "--uri", "mongodb://your-host:27017",
        "--db", "your-database-name"
      ]
    }
  }
}
```

### Option 2: Install from npm (coming soon)
```bash
npm install -g mongo-mcp-server
```

### Option 3: Install from GitHub
```bash
npm install -g git+https://github.com/sergei-tofu-fedorov/mongo_mcp.git
```

### Option 4: Clone and install locally
```bash
git clone https://github.com/sergei-tofu-fedorov/mongo_mcp.git
cd mongo_mcp
npm install
npm link  # Make it available globally
```

## Usage

### Method 1: Configure via .mcp.json (Recommended)

Add the server to your `.mcp.json` file in any project directory:

```json
{
  "mcpServers": {
    "mongodb": {
      "command": "npx",
      "args": [
        "mongo-mcp-server",
        "--mongo-uri", "mongodb://your-host:27017",
        "--database", "your-database-name"
      ]
    }
  }
}
```

Or with environment variables:
```json
{
  "mcpServers": {
    "mongodb": {
      "command": "npx",
      "args": ["mongo-mcp-server"],
      "env": {
        "MONGODB_URI": "mongodb://your-host:27017",
        "MONGODB_DATABASE": "your-database-name"
      }
    }
  }
}
```

### Method 2: Install locally in project

1. Clone this repo into your project or install as dependency
2. Create a `settings.json` file in the project root:

```json
{
  "mongodb": {
    "uri": "mongodb://your-host:27017",
    "database": "your-database-name"
  }
}
```

3. Add to your `.mcp.json`:
```json
{
  "mcpServers": {
    "mongodb": {
      "command": "node",
      "args": ["./path/to/mongo_mcp/server.js"]
    }
  }
}
```

## Configuration Priority

The server accepts configuration in the following priority order:

1. **Command-line arguments** (highest priority)
   ```bash
   # Full format
   mongo-mcp-server --mongo-uri mongodb://localhost:27017 --database mydb

   # Short format
   mongo-mcp-server --uri mongodb://localhost:27017 --db mydb

   # Single URI format (with database in path)
   mongo-mcp-server mongodb://localhost:27017/mydb
   ```

2. **Environment variables**
   ```bash
   export MONGODB_URI="mongodb://localhost:27017"
   export MONGODB_DATABASE="mydb"
   mongo-mcp-server
   ```

3. **settings.json file**
   ```json
   {
     "mongodb": {
       "uri": "mongodb://localhost:27017",
       "database": "mydb"
     }
   }
   ```

4. **Default values** (lowest priority)
   - URI: `mongodb://localhost:27017`
   - Database: `mcpserver`

## Available Tools

### Connection Management
- **`check_connection`**: Check if MongoDB connection is active and healthy

### Master User Tools
- **`find-master-user-by-platform-id`**: Find master user by platform ID (case-insensitive search)
  - Parameters: `platformId` (string), `limit` (number, default: 10)

- **`find-master-user-by-email`**: Find master user by email (case-insensitive search)
  - Parameters: `email` (string), `limit` (number, default: 10)

- **`find-master-user-by-id`**: Find a specific master user by their ID
  - Parameters: `id` (string)

- **`find-master-user-by-account-id`**: Find master user by account ID (case-insensitive search)
  - Parameters: `accountId` (string), `limit` (number, default: 10)

### Invoice Tools
- **`find-invoices-by-account-id`**: Find invoices by account ID (case-insensitive search)
  - Parameters: `accountId` (string), `limit` (number, default: 10)

- **`find-invoice-by-id`**: Find a specific invoice by its ID
  - Parameters: `id` (string)

## Quick Start with mcp add

1. Navigate to any directory where you want to use MongoDB tools:
   ```bash
   cd C:\AI\mongo_test
   ```

2. Add the MongoDB MCP server:
   ```bash
   mcp add https://github.com/sergei-tofu-fedorov/mongo_mcp.git
   ```

3. Edit the generated `.mcp.json` file to add your MongoDB connection:
   ```json
   {
     "mcpServers": {
       "mongo_mcp": {
         "command": "npx",
         "args": [
           "mongo-mcp-server",
           "mongodb://your-host:27017/your-database"
         ]
       }
     }
   }
   ```

4. Start Claude Code:
   ```bash
   claude-code
   ```

5. Use MongoDB tools directly in Claude:
   ```
   find master user by email john@example.com
   find invoices by account 2djcl2neh9-0f9f3bd0e
   check mongodb connection status
   ```

## Example Usage in Claude Code

Once configured, you can use these tools directly in Claude Code:

```
find master user by email john@example.com
find invoices by account 2djcl2neh9-0f9f3bd0e
check mongodb connection status
```

## Development

### Requirements
- Node.js >= 18.0.0
- MongoDB instance (local or remote)

### Running in Development
```bash
git clone https://github.com/sergei-tofu-fedorov/mongo_mcp.git
cd mongo_mcp
npm install
npm run dev  # Runs with --watch for auto-reload
```

### Testing with Different Configurations
```bash
# Test with command line args
node server.js --mongo-uri mongodb://localhost:27017 --database testdb

# Test with environment variables
MONGODB_URI=mongodb://localhost:27017 MONGODB_DATABASE=testdb node server.js

# Test with settings.json (create the file first)
node server.js
```

## Troubleshooting

### Connection Issues
- Verify MongoDB is running and accessible
- Check firewall settings and network connectivity
- Ensure the URI format is correct: `mongodb://host:port` or `mongodb+srv://cluster.example.com`
- Validate database name and permissions

### Permission Issues
- Ensure the MongoDB user has read permissions on the target database
- Check that the user can access the required collections

### MCP Server Issues
- Verify Claude Code can find the server executable
- Check the `.mcp.json` configuration syntax
- Look for error messages in Claude Code's output

## License

MIT

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

TDQS

B3.2/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap in purpose. The tool 'check_connection' has a single, clear function, making it impossible for an agent to confuse it with any other tool.

Naming Consistency5/5

The single tool name follows a consistent verb_noun pattern ('check_connection'), and with only one tool, there is no inconsistency in naming conventions. The naming is straightforward and predictable.

Tool Count2/5

A single tool is too few for a MongoDB server, which typically requires CRUD operations, querying, indexing, and other database management tasks. This minimal set severely limits the server's utility and scope, indicating a significant mismatch with the expected domain coverage.

Completeness1/5

The tool set is severely incomplete for a MongoDB server. It lacks essential operations like insert, find, update, delete, or any other database interactions, leaving major gaps that will cause agent failures in performing typical database tasks. The single tool only handles connection checking, which is insufficient for the stated purpose.