couchbase-mcp

couchbase-mcp

3.2

If you are the rightful owner of couchbase-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

This project demonstrates the implementation of a Model Context Protocol (MCP) server that provides semantic search capabilities for Star Wars planets using Couchbase's vector search functionality.

Couchbase Model Context Protocol Server

This project demonstrates the implementation of a Model Context Protocol (MCP) server that provides semantic search capabilities for Star Wars planets using Couchbase's vector search functionality.

Overview

The Model Context Protocol (MCP) is a standardized way for AI models to interact with external tools and data sources. This implementation creates an MCP server that allows AI models to:

  1. Fetch detailed information about Star Wars planets
  2. Find similar planets based on vector embeddings

How It Works

Model Context Protocol Integration

The server implements two main MCP tools:

{
tools: [
{
name: "fetch_planet_name",
description: "Fetch a Star Wars planet by name",
inputSchema: // ... schema for planet name
},
{
name: "find_planets_which_are_similar",
description: "Find similar planets by name to the given name",
inputSchema: // ... schema for planet name
}
]
}

These tools can be discovered and called by AI models that support the Model Context Protocol.

Couchbase Vector Search

The implementation uses Couchbase's vector search capabilities to find similar planets:

  1. Each planet document in Couchbase includes an embedding field containing a vector representation of the planet's characteristics
  2. When searching for similar planets:
    • Retrieves the source planet's embedding
    • Uses Couchbase's vector search to find planets with similar embeddings
    • Returns the top 5 most similar planets

Key Features

  • Efficient Vector Search: Utilizes Couchbase's vector search index for fast similarity lookups
  • Timeout Protection: Implements timeouts for both search and document fetching operations
  • Connection Management: Properly manages Couchbase connections with cleanup
  • Error Handling: Comprehensive error handling and debugging support
  • Type Safety: Full TypeScript implementation with proper type definitions

Setup

Prerequisites

  • Node.js
  • Couchbase Server with vector search capability
  • Environment variables:
    COUCHBASE_URL=
    COUCHBASE_USERNAME=
    COUCHBASE_PASSWORD=
    COUCHBASE_BUCKET=
    COUCHBASE_SCOPE=
    COUCHBASE_COLLECTION=
    

Data Structure

Each planet document should follow this structure:

interface StarWarsCharacter {
name: string;
rotation_period: string;
orbital_period: string;
diameter: string;
climate: string;
gravity: string;
terrain: string;
surface_water: string;
population: string;
residents: string[];
films: string[];
created: string;
edited: string;
url: string;
embedding?: number[]; // Vector embedding for similarity search
}

Vector Search Index

Create a vector search index in Couchbase named vector-search-index that indexes the embedding field.

Usage

  1. Start the server:

    npm start
    
  2. The server will listen for MCP requests via stdin/stdout.

  3. AI models can interact with the server using these example queries:

    // Fetch planet details
    {
      "name": "fetch_planet_name",
      "arguments": {
        "name": "Tatooine"
      }
    }
    
    // Find similar planets
    {
      "name": "find_planets_which_are_similar",
      "arguments": {
        "name": "Tatooine"
      }
    }