返回市场
Couchbase-MCP服务器

Couchbase-MCP服务器

作者:shivay-couchbase2 星标更新:2025-02-26

项目介绍

Couchbase 模型上下文协议服务器

该项目演示了使用Couchbase向量搜索功能实现一个模型上下文协议(MCP)服务器,以提供《星球大战》行星的语义搜索能力。

概述

模型上下文协议(MCP)是一种标准化的方式,使AI模型能够与外部工具和数据源进行交互。此实现创建了一个MCP服务器,允许AI模型:

  1. 获取《星球大战》行星的详细信息。
  2. 根据向量嵌入找到相似的行星。

工作原理

模型上下文协议集成

服务器实现了两个主要的MCP工具:

{
tools: [
{
name: "fetch_planet_name",
description: "通过名称获取《星球大战》行星",
inputSchema: // ... 行星名称的模式
},
{
name: "find_planets_which_are_similar",
description: "根据给定名称找到相似的行星",
inputSchema: // ... 行星名称的模式
}
]
}

这些工具可以被支持模型上下文协议的AI模型发现并调用。

Couchbase 向量搜索

该实现使用Couchbase的向量搜索功能来查找相似的行星:

  1. Couchbase中的每个行星文档都包含一个embedding字段,其中包含行星特征的向量表示。
  2. 在搜索相似行星时:
    • 获取源行星的嵌入。
    • 使用Couchbase的向量搜索来查找具有相似嵌入的行星。
    • 返回最相似的前5个行星。

主要特性

  • 高效的向量搜索:利用Couchbase的向量搜索索引进行快速相似性查找。
  • 超时保护:对搜索和文档获取操作实施超时。
  • 连接管理:正确管理Couchbase连接,并进行清理。
  • 错误处理:全面的错误处理和支持调试。
  • 类型安全:完整的TypeScript实现,带有正确的类型定义。

设置

先决条件

  • Node.js
  • 具有向量搜索功能的Couchbase服务器
  • 环境变量:
    COUCHBASE_URL=
    COUCHBASE_USERNAME=
    COUCHBASE_PASSWORD=
    COUCHBASE_BUCKET=
    COUCHBASE_SCOPE=
    COUCHBASE_COLLECTION=
    

数据结构

每个行星文档应遵循以下结构:

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[]; // 用于相似性搜索的向量嵌入
}

向量搜索索引

在Couchbase中创建名为vector-search-index的向量搜索索引,该索引索引embedding字段。

使用方法

  1. 启动服务器:

    npm start
    
  2. 服务器将通过标准输入/输出监听MCP请求。

  3. AI模型可以通过以下示例查询与服务器交互:

    // 获取行星详情
    {
      "name": "fetch_planet_name",
      "arguments": {
        "name": "塔图因"
      }
    }
    
    // 查找相似行星
    {
      "name": "find_planets_which_are_similar",
      "arguments": {
        "name": "塔图因"
      }
    }