CouchDB MCP Server

# couchdb-mcp-server [![smithery badge](https://smithery.ai/badge/@robertoamoreno/couchdb-mcp-server)](https://smithery.ai/server/@robertoamoreno/couchdb-mcp-server) A Model Context Protocol server for interacting with CouchDB This is a TypeScript-based MCP server that provides tools for managing CouchDB databases and documents. It enables AI assistants to interact with CouchDB through a simple interface. ## Features ### Tools #### Base Tools (All CouchDB Versions) - `createDatabase` - Create a new CouchDB database - Takes `dbName` as a required parameter - Creates the database if it doesn't exist - `listDatabases` - List all CouchDB databases - Returns an array of database names - `deleteDatabase` - Delete a CouchDB database - Takes `dbName` as a required parameter - Removes the specified database and all its documents - `createDocument` - Create a new document or update an existing document in a database - Required parameters: - `dbName`: Database name - `docId`: Document ID - `data`: Document data (JSON object) - For updates, include `_rev` field with the current document revision - Returns: - For new documents: document ID and new revision - For updates: document ID and updated revision - Automatically detects if operation is create or update based on presence of `_rev` field - `getDocument` - Get a document from a database - Required parameters: - `dbName`: Database name - `docId`: Document ID - Returns the document content #### Mango Query Tools (CouchDB 3.x+ Only) - `createMangoIndex` - Create a new Mango index - Required parameters: - `dbName`: Database name - `indexName`: Name of the index - `fields`: Array of field names to index - Creates a new index for efficient querying - `deleteMangoIndex` - Delete a Mango index - Required parameters: - `dbName`: Database name - `designDoc`: Design document name - `indexName`: Name of the index - Removes an existing Mango index - `listMangoIndexes` - List all Mango indexes in a database - Required parameters: - `dbName`: Database name - Returns information about all indexes in the database - `findDocuments` - Query documents using Mango query - Required parameters: - `dbName`: Database name - `query`: Mango query object - Performs a query using CouchDB's Mango query syntax ## Version Support The server automatically detects the CouchDB version and enables features accordingly: - All versions: Basic database and document operations - CouchDB 3.x+: Mango query support (indexes and queries) ## Configuration The server requires a CouchDB connection URL and version. These can be provided through environment variables: ```bash COUCHDB_URL=http://username:password@localhost:5984 COUCHDB_VERSION=1.7.2 You can create a `.env` file in the project root with this configuration. If not provided, it defaults to `http://localhost:5984`. ## Development Install dependencies: ```bash npm install ``` Build the server: ```bash npm run build ``` For development with auto-rebuild: ```bash npm run watch ``` ## Installation ### Installing via Smithery To install couchdb-mcp-server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@robertoamoreno/couchdb-mcp-server): ```bash npx -y @smithery/cli install @robertoamoreno/couchdb-mcp-server --client claude ``` To use with Claude Desktop, add the server config: On MacOS: `~/Library/Application Support/Claude/claude_desktop_config.json` On Windows: `%APPDATA%/Claude/claude_desktop_config.json` ```json { "mcpServers": { "couchdb-mcp-server": { "command": "/path/to/couchdb-mcp-server/build/index.js", "env": { "COUCHDB_URL": "http://username:password@localhost:5984" } } } } ``` ### Prerequisites - Node.js 14 or higher - Running CouchDB instance - Proper CouchDB credentials if authentication is enabled ### Debugging Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector), which is available as a package script: ```bash npm run inspector ``` The Inspector will provide a URL to access debugging tools in your browser. ## Error Handling The server includes robust error handling for common scenarios: - Invalid database names or document IDs - Database already exists/doesn't exist - Connection issues - Authentication failures - Invalid document data All errors are properly formatted and returned through the MCP protocol with appropriate error codes and messages.