Skip to main content
Glama
Couchbase-Ecosystem

Couchbase Guru MCP Server

Couchbase Guru MCP Server

An MCP server that lets LLMs search the Couchbase documentation from your MCP client. It exposes a single tool, ask_couchbase_docs, which forwards your question to a hosted retrieval-augmented (RAG) documentation agent and returns an answer with source links.

License Python 3.10+ PyPI version

No Couchbase cluster or credentials required. The server talks only to the documentation agent backend, not to your data.

Tool

Tool Name

Description

ask_couchbase_docs

Answer a question about any Couchbase product, feature, SDK, service, tutorial, or example by searching the official documentation. Returns a natural-language answer followed by the documentation source URLs.

Ask complete, self-contained questions — the backend has no conversation history, so include the product, version, and language where relevant (e.g. "How do I create a primary index with the Python SDK in Couchbase Server 7.6?").

Related MCP server: docrag

Prerequisites

Configuration

The server can be run from the prebuilt PyPI package or from source with uv. It works with zero configuration — the public documentation agent is used by default.

Running from PyPI

{
  "mcpServers": {
    "couchbase-guru": {
      "command": "uvx",
      "args": ["couchbase-guru"]
    }
  }
}

If you already have other MCP servers configured, add this entry to the existing mcpServers object.

Running from Source

Clone the repository:

git clone https://github.com/Couchbase-Ecosystem/couchbase-guru.git

Then point your MCP client at it:

{
  "mcpServers": {
    "couchbase-guru": {
      "command": "uv",
      "args": [
        "--directory",
        "path/to/cloned/repo/couchbase-guru/",
        "run",
        "src/mcp_server.py"
      ]
    }
  }
}

path/to/cloned/repo/couchbase-guru/ should be the path to the cloned repository on your machine. Don't forget the trailing slash.

Options

All options are optional and can be set via CLI argument or environment variable:

CLI Argument

Environment Variable

Description

Default

--transport

CB_MCP_TRANSPORT

Transport mode: stdio or http

stdio

--host

CB_MCP_HOST

Host for HTTP transport mode

127.0.0.1

--port

CB_MCP_PORT

Port for HTTP transport mode

8000

--agent-base-url

CB_AGENT_BASE_URL

Base URL of the documentation agent backend. Set this to run against your own self-hosted agent; if unset, the public agent is used.

Public agent

--agent-ip-salt

CB_AGENT_IP_SALT

Secret salt used to pseudonymize client IPs (HTTP transport). Set a shared value for consistent hashing across multiple instances; a local salt is generated when unset.

Auto-generated

Check the installed version with:

uvx couchbase-guru --version

Self-hosting the documentation agent

By default the server uses a shared, public documentation agent, so most users need no setup. If you run your own agent backend, point the server at it:

uvx couchbase-guru --agent-base-url https://your-agent.example.com

Rate limiting & privacy

The public agent applies fair-use rate limits. To support this, the server sends a pseudonymous device identifier to the backend (in the User-Agent header):

  • stdio: a random id generated once and stored in a per-user file on your machine.

  • HTTP: a salted, one-way hash of the connecting IP — the raw address is never sent.

No question content or personal data is persisted by the MCP server itself. If you prefer not to share a rate-limit signal, self-host the agent (see above).

Client-specific configuration

  1. Edit the configuration file (see the MCP quickstart guide):

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

  2. Add the configuration to the mcpServers section.

  3. Restart Claude Desktop.

Logs: ~/Library/Logs/Claude (macOS) or %APPDATA%\Claude\Logs (Windows).

  1. In Cursor, go to Cursor Settings > Tools & Integrations > MCP Tools.

  2. Add the configuration manually, or use the one-click Install in Cursor link.

  3. Save, then refresh to confirm the server is enabled.

Logs: in the bottom panel, click Output and select Cursor MCP from the dropdown.

  1. Open Command Palette > Windsurf MCP Configuration Panel (or Settings > Advanced > Cascade > Model Context Protocol (MCP) Servers).

  2. Click Add Server > Add custom server and add the configuration.

  3. Save, then refresh to confirm the server is enabled.

See the Windsurf MCP documentation for details.

  1. Create .vscode/mcp.json in your workspace (or run MCP: Open User Configuration for a global config).

  2. VS Code uses servers as the top-level key (not mcpServers):

    {
      "servers": {
        "couchbase-guru": {
          "command": "uvx",
          "args": ["couchbase-guru"]
        }
      }
    }
  3. Once saved, use the inline action list to Start/Stop/manage the server.

See the VS Code MCP docs for details.

  1. Install the AI Assistant or Junie plugin.

  2. Navigate to Settings > Tools > AI Assistant or Junie > MCP Server.

  3. Click "+", add the configuration, and click Save, then Apply.

Logs: Help > Show Log in Finder (Explorer) > mcp > couchbase-guru.

Streamable HTTP transport mode

The server can run in Streamable HTTP mode so multiple clients can connect to one instance. Check that your MCP client supports this transport first.

uvx couchbase-guru --transport=http --port=8000

The server will be available at http://localhost:8000/mcp:

{
  "mcpServers": {
    "couchbase-guru-http": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

This mode does not include authorization support.

Docker

Build the image:

docker build -t couchbase-guru .

Run it (stdio by default; no credentials needed):

{
  "mcpServers": {
    "couchbase-guru-docker": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "couchbase-guru"]
    }
  }
}

For HTTP transport, publish the port and set the transport:

docker run --rm -i \
  -e CB_MCP_TRANSPORT=http \
  -e CB_MCP_HOST=0.0.0.0 \
  -e CB_MCP_PORT=8000 \
  -p 8000:8000 \
  couchbase-guru

Risks associated with LLMs

  • The use of large language models and similar technology involves risks, including the potential for inaccurate or harmful outputs.

  • Couchbase does not review or evaluate the quality or accuracy of such outputs, and such outputs may not reflect Couchbase's views.

  • You are solely responsible for determining whether to use large language models and related technology, and for complying with any applicable license terms, terms of use, and your organization's policies.

Troubleshooting

  • Confirm that uv/uvx is installed and on your PATH. You may need to provide an absolute path to uv/uvx in the command field.

  • If a search times out, the documentation backend may be busy — retry in a moment.

  • To rule out the public backend, run against your own agent with --agent-base-url.

  • If running from source after updating the repo, run uv sync to refresh dependencies.

  • Check your MCP client's logs (locations above) for errors.

Testing

Unit tests run offline (the backend is mocked):

uv sync --extra dev
uv run pytest tests/

Integration tests exercise the tool end-to-end against a live agent backend and are opt-in:

CB_MCP_RUN_INTEGRATION=1 uv run pytest tests/test_docs_tools.py

By default they use the public agent; set CB_AGENT_BASE_URL to target a different backend.


👩‍💻 Contributing

Contributions are welcome! To report a bug, request a feature, or contribute improvements, open a GitHub issue.

See CONTRIBUTING.md for developer setup (environment with uv, linting/formatting with Ruff, pre-commit hooks, and project structure).

# Clone and set up
git clone https://github.com/Couchbase-Ecosystem/couchbase-guru.git
cd couchbase-guru

# Install with development dependencies
uv sync --extra dev

# Install pre-commit hooks
uv run pre-commit install

📢 Support Policy

We appreciate your interest in this project! It is Couchbase community-maintained, which means it is not officially supported by our support team. Our engineers monitor and maintain this repo and will try to resolve issues on a best-effort basis. Please keep all inquiries within GitHub.

Available Tools

1 tool
ask_couchbase_docsA
Read-only

Search Couchbase documentation to answer questions about any Couchbase product, feature, SDK, service, tutorials or examples. Use this tool for all Couchbase how-to, conceptual, and reference questions. Not for direct cluster operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesA complete, self-contained question about Couchbase products, SDKs, or services. Must include necessary context like product name, version, or programming language since the agent called by this tool lacks conversation history.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe, read-only operation, so the description does not need to re-prove that. It adds a useful scope boundary ('Not for direct cluster operations') but does not disclose extra behavioral details such as response format or failure modes. With annotations covering safety, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences plus one exclusion clause, with no filler. The primary action and supported scope are front-loaded, and every sentence contributes useful routing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with a detailed schema and an output schema available, the description is complete: it states scope, gives explicit usage guidance, and excludes the one class of out-of-scope requests. Nothing critical is missing for an agent to decide whether and how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the question parameter is already well-described with guidance to make it self-contained and include product/version/language context. The tool description itself adds no parameter-level meaning, but with full schema coverage the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Search Couchbase documentation') and a clear resource, then enumerates the scope of supported topics (products, features, SDKs, services, tutorials, examples). It is immediately obvious what this tool does and where it differs from cluster-operation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this tool for all Couchbase how-to, conceptual, and reference questions. Not for direct cluster operations' provides an explicit when-to-use and an explicit when-not-to-use. An agent can route questions correctly without needing sibling-tool descriptions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev0.1.0
    • First observedask_couchbase_docs

TDQS

A4.4/5.0
Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap. The tool's purpose is singular and clearly described.

Naming Consistency5/5

The single tool name 'ask_couchbase_docs' follows a clear verb_noun pattern, which is internally consistent by default.

Tool Count4/5

One tool is perfectly matched to the narrow docs-Q&A scope, though it is on the thin side relative to typical MCP servers.

Completeness5/5

The tool's description explicitly covers all Couchbase documentation questions, leaving no obvious gaps within the stated scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides semantic search over markdown documentation using RAG, allowing natural language queries and integration with MCP clients.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides RAG (Retrieval Augmented Generation) access to technical documentation through MCP, enabling LLMs to search and retrieve relevant documentation on-demand.
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables answering natural-language questions from FAQ documents using vector search and LLM generation via an MCP tool.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables semantic search and AI-powered Q&A over ingested GitHub documentation repositories via MCP tools.
    -

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/Couchbase-Ecosystem/couchbase-guru'

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