首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
首页
学习
活动
专区
圈层
工具
MCP广场
MCP广场 >详情页
chroma2025-05-290分享
github
一个通过Chroma提供向量数据库功能的Model Context Protocol服务器,支持语义文档搜索、元数据过滤和具有持久存储的文档管理。
By privetin
2025-05-290
github
详情内容

Chroma MCP 服务器

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

需求

  • Python 3.8+
  • Chroma 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

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

Windows: 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"
      ]
    }
  }
}

数据存储

服务器将数据存储在:

  • Windows: src/chroma/data
  • MacOS/Linux: src/chroma/data

使用

  1. 启动服务器:
uv run chroma
  1. 使用 MCP 工具与服务器交互:
# 创建文档
create_document({
    "document_id": "ml_paper1",
    "content": "卷积神经网络提高了图像识别的准确性。",
    "metadata": {
        "year": 2020,
        "field": "计算机视觉",
        "complexity": "高级"
    }
})

# 搜索相似文档
search_similar({
    "query": "机器学习模型",
    "num_results": 2,
    "metadata_filter": {
        "year": 2020,
        "field": "计算机视觉"
    }
})

错误处理

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

  • 文档已存在 [id=X]
  • 未找到文档 [id=X]
  • 输入无效:缺少 document_id 或 content
  • 过滤器无效
  • 操作失败:[详情]

开发

测试

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

构建

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

贡献

欢迎贡献!请阅读我们的贡献指南了解详情:

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

许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档