diff --git a/DOCKER.md b/DOCKER.md index 8085575..7e44bcb 100644 --- a/DOCKER.md +++ b/DOCKER.md @@ -22,6 +22,9 @@ Dockerfile: https://github.com/Couchbase-Ecosystem/mcp-server-couchbase/blob/mai - There is an option in the MCP server, `CB_MCP_READ_ONLY_QUERY_MODE` that is set to true by default to disable running SQL++ queries that change the data or the underlying collection structure. Note that the documents can still be updated by ID. - Get the status of the MCP server - Check the cluster credentials by connecting to the cluster +- List all indexes in the cluster with their definitions, with optional filtering by bucket, scope, collection and index name. +- Get index recommendations from Couchbase Index Advisor for a given SQL++ query to optimize query performance +- Get cluster health status and list of all running services ## Usage diff --git a/Dockerfile b/Dockerfile index d4d4cc2..ad410ed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,7 +27,8 @@ LABEL org.opencontainers.image.revision="${GIT_COMMIT_HASH}" \ org.opencontainers.image.created="${BUILD_DATE}" \ org.opencontainers.image.title="MCP Server Couchbase" \ org.opencontainers.image.description="Model Context Protocol server for Couchbase" \ - org.opencontainers.image.source="https://github.com/couchbaselabs/mcp-server-couchbase" + org.opencontainers.image.source="https://github.com/Couchbase-Ecosystem/mcp-server-couchbase"\ + io.modelcontextprotocol.server.name="io.github.Couchbase-Ecosystem/mcp-server-couchbase" # Create non-root user RUN useradd --system --uid 1001 mcpuser diff --git a/README.md b/README.md index 8b84007..9fae243 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ An [MCP](https://modelcontextprotocol.io/) server implementation of Couchbase th - There is an option in the MCP server, `CB_MCP_READ_ONLY_QUERY_MODE` that is set to true by default to disable running SQL++ queries that change the data or the underlying collection structure. Note that the documents can still be updated by ID. - Get the status of the MCP server - Check the cluster credentials by connecting to the cluster -- List all indexes in the cluster with their definitions, with optional filtering by bucket, scope, and collection +- List all indexes in the cluster with their definitions, with optional filtering by bucket, scope, collection and index name. - Get index recommendations from Couchbase Index Advisor for a given SQL++ query to optimize query performance - Get cluster health status and list of all running services diff --git a/server.json b/server.json new file mode 100644 index 0000000..c74f45b --- /dev/null +++ b/server.json @@ -0,0 +1,253 @@ +{ + "$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json", + "name": "io.github.Couchbase-Ecosystem/mcp-server-couchbase", + "description": "Couchbase Model Context Protocol Server to interact with Couchbase clusters", + "repository": { + "url": "https://github.com/Couchbase-Ecosystem/mcp-server-couchbase", + "source": "github" + }, + "version": "0.5.0", + "packages": [ + { + "registryType": "pypi", + "identifier": "couchbase-mcp-server", + "version": "0.5.0", + "transport": { + "type": "stdio" + }, + "environmentVariables": [ + { + "name": "CB_CONNECTION_STRING", + "description": "Couchbase connection string. Required for connecting to the cluster.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "name": "CB_USERNAME", + "description": "Couchbase database username. Required for basic authentication.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "name": "CB_PASSWORD", + "description": "Couchbase database password. Required for basic authentication.", + "isRequired": false, + "format": "string", + "isSecret": true + }, + { + "name": "CB_CA_CERT_PATH", + "description": "Couchbase CA certificate path. Required for TLS authentication in non Capella clusters.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "name": "CB_CLIENT_CERT_PATH", + "description": "Couchbase client certificate path. Required for mTLS authentication.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "name": "CB_CLIENT_KEY_PATH", + "description": "Couchbase client key path. Required for mTLS authentication.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "name": "CB_MCP_READ_ONLY_QUERY_MODE", + "description": "Couchbase read only query mode. Set to true to allow only read-only queries. Set to false to allow data modification queries.", + "isRequired": false, + "format": "boolean", + "isSecret": false + }, + { + "name": "CB_MCP_TRANSPORT", + "description": "Transport mode for the server (stdio, http or sse). Default is stdio", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "name": "CB_MCP_HOST", + "description": "Host to run the MCP server on (default: 127.0.0.1). Used only for HTTP and SSE transport modes.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "name": "CB_MCP_PORT", + "description": "Port to run the MCP server on (default: 8000). Used only for HTTP and SSE transport modes.", + "isRequired": false, + "format": "number", + "isSecret": false + } + ], + "packageArguments": [ + { + "type": "named", + "name": "--connection-string", + "description": "Couchbase connection string. Required for connecting to the cluster.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "type": "named", + "name": "--username", + "description": "Couchbase database username. Required for basic authentication.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "type": "named", + "name": "--password", + "description": "Couchbase database password. Required for basic authentication.", + "isRequired": false, + "format": "string", + "isSecret": true + }, + { + "type": "named", + "name": "--ca-cert-path", + "description": "Couchbase CA certificate path. Required for TLS authentication in non Capella clusters.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "type": "named", + "name": "--client-cert-path", + "description": "Couchbase client certificate path. Required for mTLS authentication.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "type": "named", + "name": "--client-key-path", + "description": "Couchbase client key path. Required for mTLS authentication.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "type": "named", + "name": "--read-only-query-mode", + "description": "Couchbase read only query mode. Set to true to allow only read-only queries. Set to false to allow data modification queries.", + "isRequired": false, + "format": "boolean", + "isSecret": false + }, + { + "type": "named", + "name": "--transport", + "description": "Transport mode for the server (stdio, http or sse). Default is stdio", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "type": "named", + "name": "--host", + "description": "Host to run the MCP server on (default: 127.0.0.1). Used only for HTTP and SSE transport modes.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "type": "named", + "name": "--port", + "description": "Port to run the MCP server on (default: 8000). Used only for HTTP and SSE transport modes.", + "isRequired": false, + "format": "number", + "isSecret": false + } + ] + }, + { + "registryType": "oci", + "identifier": "docker.io/couchbaseecosystem/mcp-server-couchbase:0.5.0", + "transport": { + "type": "stdio" + }, + "environmentVariables": [ + { + "name": "CB_CONNECTION_STRING", + "description": "Couchbase connection string. Required for connecting to the cluster.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "name": "CB_USERNAME", + "description": "Couchbase database username. Required for basic authentication.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "name": "CB_PASSWORD", + "description": "Couchbase database password. Required for basic authentication.", + "isRequired": false, + "format": "string", + "isSecret": true + }, + { + "name": "CB_CA_CERT_PATH", + "description": "Couchbase CA certificate path. Required for TLS authentication in non Capella clusters.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "name": "CB_CLIENT_CERT_PATH", + "description": "Couchbase client certificate path. Required for mTLS authentication.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "name": "CB_CLIENT_KEY_PATH", + "description": "Couchbase client key path. Required for mTLS authentication.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "name": "CB_MCP_READ_ONLY_QUERY_MODE", + "description": "Couchbase read only query mode. Set to true to allow only read-only queries. Set to false to allow data modification queries.", + "isRequired": false, + "format": "boolean", + "isSecret": false + }, + { + "name": "CB_MCP_TRANSPORT", + "description": "Transport mode for the server (stdio, http or sse). Default is stdio", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "name": "CB_MCP_HOST", + "description": "Host to run the MCP server on (default: 127.0.0.1). Used only for HTTP and SSE transport modes.", + "isRequired": false, + "format": "string", + "isSecret": false + }, + { + "name": "CB_MCP_PORT", + "description": "Port to run the MCP server on (default: 8000). Used only for HTTP and SSE transport modes.", + "isRequired": false, + "format": "number", + "isSecret": false + } + ] + } + ] +}