向量数据库服务

Chroma MCP Server是一个提供向量数据库功能的模型上下文协议服务器,支持语义文档搜索、元数据过滤和文档管理,具有持久化存储能力。

  • by privetin
  • Python
  • 本地部署
  • 41 星标
  • 更新于
在 GitHub 查看 privetin/chroma

使用说明

Chroma MCP服务器

一种模型上下文协议(MCP)服务器实现,通过Chroma提供矢量数据库功能。此服务器支持语义文档搜索、元数据过滤和具有持久存储的文档管理。

需求

  • Python 3.8+
  • 色度0.4.0+
  • MCP SDK 0.1.0+

组件

资源

服务器通过Chroma的矢量数据库提供文档存储和检索:

  • 存储包含内容和元数据的文档
  • 将数据持久化 src/chroma/data 目录
  • 支持语义相似度搜索

工具

服务器实现CRUD操作和搜索功能:

文档管理

  • create_document:创建新文档

    • 必修的: document_id, content
    • 可选: metadata (键值对)
    • 返回:成功确认
    • 错误:已存在,输入无效
  • read_document:按ID检索文档

    • 必修的: document_id
    • 返回:文档内容和元数据
    • 错误:未找到
  • update_document:更新现有文档

    • 必修的: document_id, content
    • 可选: metadata
    • 返回:成功确认
    • 错误:未找到,输入无效
  • delete_document:删除文档

    • 必修的: document_id
    • 返回:成功确认
    • 错误:未找到
  • list_documents:列出所有文件

    • 可选: limit, offset
    • 返回:包含内容和元数据的文档列表

搜索操作

  • search_similar:查找语义相似的文档
    • 必修的: query
    • 可选: num_results, metadata_filter, content_filter
    • 返回:具有距离分数的类似文档的排名列表
    • 错误:筛选器无效

特性

  • 语义搜索:使用Chroma的嵌入根据含义查找文档
  • 元数据筛选:按元数据字段筛选搜索结果
  • 内容过滤:基于文档内容的附加过滤
  • 永久存储:在服务器重新启动之间,数据保留在本地目录中
  • 错误处理:全面的错误处理,信息清晰
  • 重试逻辑:暂时性故障的自动重试

安装

  1. 安装依赖项:
uv venv
uv sync --dev --all-extras

配置

克劳德桌面

将服务器配置添加到您的Claude Desktop配置中:

窗户: C:\Users\<username>\AppData\Roaming\Claude\claude_desktop_config.json

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "chroma": {
      "command": "uv",
      "args": [
        "--directory",
        "C:/MCP/server/community/chroma",
        "run",
        "chroma"
      ]
    }
  }
}

数据存储

服务器将数据存储在:

  • 窗户: src/chroma/data
  • MacOS/Linux: src/chroma/data

用法

  1. 启动服务器:
uv run chroma
  1. 使用MCP工具与服务器交互:
# Create a document
create_document({
    "document_id": "ml_paper1",
    "content": "Convolutional neural networks improve image recognition accuracy.",
    "metadata": {
        "year": 2020,
        "field": "computer vision",
        "complexity": "advanced"
    }
})

# Search similar documents
search_similar({
    "query": "machine learning models",
    "num_results": 2,
    "metadata_filter": {
        "year": 2020,
        "field": "computer vision"
    }
})

错误处理

服务器为常见场景提供清晰的错误消息:

  • Document already exists [id=X]
  • Document not found [id=X]
  • Invalid input: Missing document_id or content
  • Invalid filter
  • Operation failed: [details]

发展

测试

  1. 运行MCP检查器进行交互式测试:
npx @modelcontextprotocol/inspector uv --directory C:/MCP/server/community/chroma run chroma
  1. 使用检查员的web界面:
    • 测试CRUD操作
    • 验证搜索功能
    • 检查错误处理
    • 监控服务器日志

建筑

  1. 更新依赖关系:
uv compile pyproject.toml
  1. 构建包:
uv build

贡献

欢迎投稿!请阅读我们的 贡献指南 有关以下内容的详细信息:

  • 代码风格
  • 测试要求
  • 拉取请求流程

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。