Skip to main content
Glama
celticht32

Couchbase-Analytics-MCP

by celticht32

Couchbase-Analytics-MCP

A production-grade Model Context Protocol (MCP) server for the Couchbase Enterprise Analytics service. Exposes the full Analytics API surface as 25 strongly-typed MCP tools, with a built-in GUI console, structured logging, Prometheus metrics, OpenTelemetry tracing, and comprehensive test coverage.

Important: This server targets the Analytics service (Apache AsterixDB engine, SQL++, port 8095) — not the Couchbase Query (N1QL) service. All tools call cluster.analyticsQuery() and /analytics/* REST endpoints exclusively.


Feature matrix

Feature

Status

25 MCP tools covering full Analytics API

stdio transport (Claude Desktop)

SSE/HTTP transport (remote agents)

Connection pool (min/max/idle reaper)

JWT + API key auth on SSE endpoint

Structured JSON logging (Pino)

Daily log rotation (pino-roll)

Optional Loki push transport

Prometheus /metrics endpoint

OpenTelemetry traces → Jaeger

/health/live + /health/ready probes

React GUI console at /console

Monaco SQL++ editor

Schema browser (dataverse → dataset tree)

Live tool call inspector

Unit tests (≥90% coverage)

Integration tests (real Couchbase)

E2E tests (Supertest SSE transport)

Docker multi-stage image

Docker Compose (CB + Prometheus + Grafana + Jaeger)

Helm chart

GitHub Actions CI/CD

Architecture docs + ADRs

Operational runbooks


Quick start

Prerequisites

  • Node.js ≥ 20

  • Docker + Docker Compose

  • Couchbase Server Enterprise ≥ 7.2 with Analytics service enabled

Local development (Docker Compose)

git clone https://github.com/your-org/couchbase-analytics-mcp
cd couchbase-analytics-mcp

# Copy and edit environment
cp .env.example .env

# Start Couchbase + MCP server + Prometheus + Grafana + Jaeger
docker-compose up -d

# GUI console: http://localhost:3000/console
# Prometheus:  http://localhost:9091
# Grafana:     http://localhost:3001  (admin/admin)
# Jaeger:      http://localhost:16686

Run against an existing Couchbase cluster

npm install

CB_CONNECTION_STRING=couchbase://my-cluster \
CB_USERNAME=Administrator \
CB_PASSWORD=password \
TRANSPORT=stdio \
node packages/mcp-server/dist/index.js

Claude Desktop integration

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "couchbase-analytics": {
      "command": "node",
      "args": ["/path/to/couchbase-analytics-mcp/packages/mcp-server/dist/index.js"],
      "env": {
        "CB_CONNECTION_STRING": "couchbase://your-cluster",
        "CB_USERNAME": "Administrator",
        "CB_PASSWORD": "your-password",
        "TRANSPORT": "stdio"
      }
    }
  }
}

Environment variables

Variable

Default

Description

CB_CONNECTION_STRING

(required)

couchbase://host or couchbases://host for TLS

CB_USERNAME

(required)

Couchbase RBAC username

CB_PASSWORD

(required)

Couchbase RBAC password

CB_ANALYTICS_PORT

8095

Analytics REST port (18095 for TLS)

CB_ANALYTICS_TLS

false

Enable TLS for REST calls

TRANSPORT

stdio

stdio or sse

PORT

3000

HTTP server port (SSE + health + GUI)

POOL_MIN

2

Minimum pool connections

POOL_MAX

10

Maximum pool connections

POOL_IDLE_TIMEOUT_MS

30000

Idle connection reap threshold

QUERY_DEFAULT_TIMEOUT_MS

60000

Default query timeout

LOG_LEVEL

info

trace|debug|info|warn|error|fatal

LOG_FORMAT

json

json|pretty

LOG_FILE_ENABLED

false

Enable file transport

LOG_FILE_PATH

/var/log/cba-mcp/server.log

Log file path

LOKI_HOST

(optional)

Loki push endpoint

METRICS_ENABLED

true

Expose /metrics

OTEL_ENABLED

false

Enable OpenTelemetry tracing

JAEGER_ENDPOINT

http://localhost:14268/api/traces

Jaeger HTTP collector

JWT_SECRET

(optional)

JWT signing secret for SSE auth

API_KEY

(optional)

Static API key for SSE auth

GUI_ENABLED

true

Serve GUI at /console


Tool reference

See docs/api/TOOLS.md for full input/output schemas.

Tool

Group

Description

analytics_execute

Query

Execute SQL++ statement

analytics_explain

Query

Return query execution plan

analytics_cancel

Query

Cancel running query

analytics_query_status

Query

Check async query status

analytics_pending_mutations

Query

KV→Analytics replication lag

analytics_list_dataverses

Schema

List all dataverses

analytics_list_datasets

Schema

List datasets

analytics_describe_dataset

Schema

Field-level dataset description

analytics_infer_schema

Schema

INFER DATASET → JSON Schema

analytics_list_indexes

Schema

List Analytics secondary indexes

analytics_create_dataverse

Dataverse

CREATE DATAVERSE

analytics_drop_dataverse

Dataverse

DROP DATAVERSE

analytics_create_dataset

Dataverse

CREATE DATASET (shadow collection)

analytics_drop_dataset

Dataverse

DROP DATASET

analytics_alter_dataset

Dataverse

Modify dataset WHERE predicate

analytics_list_links

Links

List data source links

analytics_create_link

Links

Create CB/S3/Azure/GCS link

analytics_alter_link

Links

Update link configuration

analytics_drop_link

Links

Delete a link

analytics_connect_link

Links

Start ingestion (CONNECT LINK)

analytics_disconnect_link

Links

Pause ingestion (DISCONNECT LINK)

analytics_create_index

Indexes

CREATE Analytics secondary index

analytics_drop_index

Indexes

DROP Analytics secondary index

analytics_analyze_dataset

Indexes

Collect optimizer statistics

analytics_node_agg_stats

Cluster

Per-node resource stats

analytics_service_health

Cluster

Composite health summary

analytics_cluster_config

Cluster

Analytics service configuration

analytics_set_config_param

Cluster

Mutate config param (guarded)

analytics_restart_node

Cluster

Restart Analytics node(s) (guarded)


Development

# Install all workspace dependencies
npm install

# Build all packages
npm run build

# Run unit tests with coverage
npm run test:coverage

# Run integration tests (requires Couchbase)
docker-compose up -d couchbase
npm run test:integration -w packages/mcp-server

# Start dev server (hot reload)
npm run dev

# Generate API docs
npm run docs

Support Policy

I truly appreciate your interest in this project! This project is community-maintained. However, I actively monitor and maintain this repo and will try to resolve issues on a best-effort basis.

All inquiries should be through GitHub.

Bug reports: Open a GitHub issue
Feature requests: Open a GitHub issue with the "enhancement" label
Questions: Open a GitHub issue

Your collaboration helps me move forward together - thank you! Pull requests and contributions from the community are welcome and encouraged.


Architecture

See docs/architecture/ARCHITECTURE.md for the full component diagram, data flow description, and design decisions.

A
license - permissive license
-
quality - not tested
-
maintenance - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • MCP server for managing Prisma Postgres.

  • MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.

  • MCP server for InsForge BaaS — database, storage, edge functions, and deployments

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/celticht32/MCP-Couchbase-Analytics'

If you have feedback or need assistance with the MCP directory API, please join our Discord server