PiAPI-MCP Server

# šŸ—„ļø MongoDB MCP Server for LLMS [![Node.js 18+](https://img.shields.io/badge/node-18%2B-blue.svg)](https://nodejs.org/en/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) A Model Context Protocol (MCP) server that enables LLMs to interact directly with MongoDB databases. Query collections, inspect schemas, and manage data seamlessly through natural language. ## āœØ Features - šŸ” Collection schema inspection - šŸ“Š Document querying and filtering - šŸ“ˆ Index management - šŸ“ Document operations (insert, update, delete) ## Demo Video https://github.com/user-attachments/assets/2389bf23-a10d-49f9-bca9-2b39a1ebe654 ## šŸš€ Quick Start To get started, find your mongodb connection url and add this configuration to your Claude Desktop config file: **MacOS**: `~/Library/Application\ Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%/Claude/claude_desktop_config.json` ```json { "mcpServers": { "mongodb": { "command": "npx", "args": [ "mongo-mcp", "mongodb://<username>:<password>@<host>:<port>/<database>?authSource=admin" ] } } } ``` ### Prerequisites - Node.js 18+ - npx - Docker and Docker Compose (for local sandbox testing only) - MCP Client (Claude Desktop App for example) ### Test Sandbox Setup If you don't have a mongo db server to connect to and want to create a sample sandbox, follow these steps 1. Start MongoDB using Docker Compose: ```bash docker-compose up -d ``` 2. Seed the database with test data: ```bash npm run seed ``` ### Configure Claude Desktop Add this configuration to your Claude Desktop config file: **MacOS**: `~/Library/Application\ Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%/Claude/claude_desktop_config.json` #### Local Development Mode: ```json { "mcpServers": { "mongodb": { "command": "node", "args": [ "dist/index.js", "mongodb://root:example@localhost:27017/test?authSource=admin" ] } } } ``` ### Test Sandbox Data Structure The seed script creates three collections with sample data: #### Users - Personal info (name, email, age) - Nested address with coordinates - Arrays of interests - Membership dates #### Products - Product details (name, SKU, category) - Nested specifications - Price and inventory info - Tags and ratings #### Orders - Order details with items - User references - Shipping and payment info - Status tracking ## šŸŽÆ Example Prompts Try these prompts with Claude to explore the functionality: ### Basic Operations ```plaintext "What collections are available in the database?" "Show me the schema for the users collection" "Find all users in San Francisco" ``` ### Advanced Queries ```plaintext "Find all electronics products that are in stock and cost less than $1000" "Show me all orders from the user john@example.com" "List the products with ratings above 4.5" ``` ### Index Management ```plaintext "What indexes exist on the users collection?" "Create an index on the products collection for the 'category' field" "List all indexes across all collections" ``` ### Document Operations ```plaintext "Insert a new product with name 'Gaming Laptop' in the products collection" "Update the status of order with ID X to 'shipped'" "Find and delete all products that are out of stock" ``` ## šŸ“ Available Tools The server provides these tools for database interaction: ### Query Tools - `find`: Query documents with filtering and projection - `listCollections`: List available collections - `insertOne`: Insert a single document - `updateOne`: Update a single document - `deleteOne`: Delete a single document ### Index Tools - `createIndex`: Create a new index - `dropIndex`: Remove an index - `indexes`: List indexes for a collection ## šŸ“œ License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.