couchdb mcp server
A TypeScript-based MCP server that enables AI assistants to interact with CouchDB databases through a simple interface, providing tools for creating, reading, and querying databases and documents.
A TypeScript-based MCP server that enables AI assistants to interact with CouchDB databases through a simple interface, providing tools for creating, reading, and querying databases and documents.
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.
createDatabase
- Create a new CouchDB databasedbName
as a required parameterCreates the database if it doesn't exist
listDatabases
- List all CouchDB databases
Returns an array of database names
deleteDatabase
- Delete a CouchDB database
dbName
as a required parameterRemoves the specified database and all its documents
createDocument
- Create a new document or update an existing document in a database
dbName
: Database namedocId
: Document IDdata
: Document data (JSON object)_rev
field with the current document revisionAutomatically detects if operation is create or update based on presence of _rev
field
getDocument
- Get a document from a database
dbName
: Database namedocId
: Document IDcreateMangoIndex
- Create a new Mango indexdbName
: Database nameindexName
: Name of the indexfields
: Array of field names to indexCreates a new index for efficient querying
deleteMangoIndex
- Delete a Mango index
dbName
: Database namedesignDoc
: Design document nameindexName
: Name of the indexRemoves an existing Mango index
listMangoIndexes
- List all Mango indexes in a database
dbName
: Database nameReturns information about all indexes in the database
findDocuments
- Query documents using Mango query
dbName
: Database namequery
: Mango query objectThe 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)
The server requires a CouchDB connection URL and version. These can be provided through environment variables:
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:
npm run build
For development with auto-rebuild:
npm run watch
To install couchdb-mcp-server for Claude Desktop automatically via Smithery:
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
{
"mcpServers": {
"couchdb-mcp-server": {
"command": "/path/to/couchdb-mcp-server/build/index.js",
"env": {
"COUCHDB_URL": "http://username:password@localhost:5984"
}
}
}
}
Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:
npm run inspector
The Inspector will provide a URL to access debugging tools in your browser.
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.
[
{
"description": "Create a new CouchDB database",
"inputSchema": {
"properties": {
"dbName": {
"description": "Database name",
"type": "string"
}
},
"required": [
"dbName"
],
"type": "object"
},
"name": "createDatabase"
},
{
"description": "List all CouchDB databases",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "listDatabases"
},
{
"description": "Delete a CouchDB database",
"inputSchema": {
"properties": {
"dbName": {
"description": "Database name to delete",
"type": "string"
}
},
"required": [
"dbName"
],
"type": "object"
},
"name": "deleteDatabase"
},
{
"description": "Create a new document or update an existing document in a database",
"inputSchema": {
"properties": {
"data": {
"description": "Document data",
"type": "object"
},
"dbName": {
"description": "Database name",
"type": "string"
},
"docId": {
"description": "Document ID",
"type": "string"
}
},
"required": [
"dbName",
"docId",
"data"
],
"type": "object"
},
"name": "createDocument"
},
{
"description": "Get a document from a database",
"inputSchema": {
"properties": {
"dbName": {
"description": "Database name",
"type": "string"
},
"docId": {
"description": "Document ID",
"type": "string"
}
},
"required": [
"dbName",
"docId"
],
"type": "object"
},
"name": "getDocument"
},
{
"description": "Create a new Mango index (CouchDB 3.x+)",
"inputSchema": {
"properties": {
"dbName": {
"description": "Database name",
"type": "string"
},
"fields": {
"description": "Fields to index",
"items": {
"type": "string"
},
"type": "array"
},
"indexName": {
"description": "Name of the index",
"type": "string"
}
},
"required": [
"dbName",
"indexName",
"fields"
],
"type": "object"
},
"name": "createMangoIndex"
},
{
"description": "Delete a Mango index (CouchDB 3.x+)",
"inputSchema": {
"properties": {
"dbName": {
"description": "Database name",
"type": "string"
},
"designDoc": {
"description": "Design document name",
"type": "string"
},
"indexName": {
"description": "Name of the index",
"type": "string"
}
},
"required": [
"dbName",
"designDoc",
"indexName"
],
"type": "object"
},
"name": "deleteMangoIndex"
},
{
"description": "List all Mango indexes in a database (CouchDB 3.x+)",
"inputSchema": {
"properties": {
"dbName": {
"description": "Database name",
"type": "string"
}
},
"required": [
"dbName"
],
"type": "object"
},
"name": "listMangoIndexes"
},
{
"description": "Query documents using Mango query (CouchDB 3.x+)",
"inputSchema": {
"properties": {
"dbName": {
"description": "Database name",
"type": "string"
},
"query": {
"description": "Mango query object",
"type": "object"
}
},
"required": [
"dbName",
"query"
],
"type": "object"
},
"name": "findDocuments"
}
]