MCP Database Server
# MCP Database Server
A Model Context Protocol (MCP) server implementation that allows Large Language Models (LLMs) to interact with various databases through natural language. Currently supports MongoDB, with plans to support:
- PostgreSQL
- CockroachDB
- Redis
- And more...
## Features
- Database operations through natural language
- Currently supports MongoDB with features:
- List all collections
- Query documents with filtering and projection
- Insert documents
- Delete documents
- Aggregate pipeline operations
- Future support for other databases:
- PostgreSQL: SQL queries, table operations
- CockroachDB: Distributed SQL operations
- Redis: Key-value operations, caching
## Prerequisites
- Node.js v20.12.2 or higher
- Database (currently MongoDB, other databases coming soon)
- Claude Desktop Application
## Installation
1. Clone the repository:
```bash
git clone https://github.com/manpreet2000/mcp-database-server.git
cd mcp-database-server
```
2. Install dependencies:
```bash
npm install
```
3. Build the TypeScript code:
```bash
npm run build
```
## Configuration
To get started, you need to configure your database connection in your Claude Desktop configuration file:
### MacOS
```bash
~/Library/Application\ Support/Claude/claude_desktop_config.json
```
### Windows
```bash
%APPDATA%/Claude/claude_desktop_config.json
```
Add the following configuration to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"database": {
"command": "/path/to/node",
"args": ["/path/to/mcp-database/dist/index.js"],
"env": {
"MONGODB_URI": "your-mongodb-connection-string"
}
}
}
}
```
Replace:
- `/path/to/node` with your Node.js executable path or just use `node`
- `/path/to/mcp-database` with the absolute path to this repository
- `your-mongodb-connection-string` with your MongoDB connection URL
## Usage Examples
### MongoDB Examples
1. List all collections in your database:
```
Can you show me all the collections in my database?
```
2. Get specific records from a collection:
```
Give me 2 records from the chargers collection
```
3. Query with filters:
```
Show me all documents in the users collection where status is active
```
4. Insert a document:
```
Add a new user to the users collection with name John and email john@example.com
```
5. Delete a document:
```
Remove the user with email john@example.com from the users collection
```
6. Aggregate data:
```
Show me the total count of users by status in the users collection
```
## Available Tools
### 1. getCollections
Lists all collections in the connected database.
### 2. getCollection
Retrieves documents from a collection with optional query parameters:
- `collectionName`: Name of the collection
- `limit`: Maximum number of documents to return (default: 10, max: 1000)
- `query`: MongoDB query object
- `projection`: Fields to include/exclude
### 3. insertOne
Inserts a single document into a collection:
- `collectionName`: Name of the collection
- `document`: Document object to insert
### 4. deleteOne
Deletes a single document from a collection:
- `collectionName`: Name of the collection
- `query`: Query to match the document to delete
### 5. aggregate
Executes an aggregation pipeline:
- `collectionName`: Name of the collection
- `pipeline`: Array of aggregation stages
- `options`: Optional aggregation options
## Future Database Support
### PostgreSQL
- SQL query execution
- Table operations
- Schema management
- Transaction support
### CockroachDB
- Distributed SQL operations
- Multi-region support
- Transaction management
- Schema operations
### Redis
- Key-value operations
- Caching mechanisms
- Pub/sub operations
- Data structure operations
## Security
- Never commit your database connection strings to version control
- Use environment variables for sensitive information
- Follow database-specific security best practices
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
## License
MIT License - See [LICENSE](LICENSE) for details
TDQS
Scored across 5 tools
The tools have distinct purposes: aggregate, deleteOne, getCollection, getCollections, and insertOne each target different database operations. However, getCollection and getCollections could potentially be confused due to similar naming and lack of descriptions clarifying their exact differences.
Naming is inconsistent with mixed conventions: getCollection and getCollections use camelCase, while deleteOne and insertOne use camelCase with different verb styles, and aggregate stands alone. There is no predictable pattern across all tools.
With 5 tools, the count is reasonable for a database server, but it feels borderline thin for covering full CRUD operations and database management. Key operations like update or query filtering are missing, making the set feel incomplete.
The tool set has significant gaps for a database server: it lacks update operations, query filtering tools, and transaction management. While basic insert, delete, and get operations are present, the surface is incomplete for typical database workflows, likely causing agent failures.