Package Search

Package Search

🚀 Chroma 包搜索

Chroma 包搜索项目精心整理了一系列公开代码包,并将其索引到 Chroma 集合中。目前,该仓库已对来自多个软件包注册中心的 3000 多个 包进行了索引。如果您希望某个依赖项被索引,请提交 PR 或创建一个问题!

快速链接:

🚀 快速开始

✨ 主要特性

本仓库是 Chroma 进行代码搜索和检索时所索引包的权威来源。它涵盖了多个软件包注册中心的众多包,为开发者提供了丰富的代码资源。

📦 安装指南

Chroma 的包搜索 MCP 服务器是一个远程 MCP 服务器,您可以从许多客户端使用它。

属性 详情
服务器 URL https://mcp.trychroma.com/package-search/v1
认证头名称* x-chroma-token
认证头值

* 截至 2025 年 9 月 12 日,由于 Anthropic API 尚不支持自定义头,因此我们接受 Authorization 头。

⚠️ 重要提示

您可以在 trychroma.com/package-search 获取 API 密钥。

常见客户端配置方法

Cursor

创建或编辑 ~/.cursor/mcp.json

{
"mcpServers": {
"package-search": {
"transport": "streamable_http",
"url": "https://mcp.trychroma.com/package-search/v1",
"headers": {
"x-chroma-token": ""
}
}
}
}
VS Code (Copilot Chat MCP)

创建或编辑 .vscode/mcp.json

{
"servers": {
"package-search": {
"type": "http",
"url": "https://mcp.trychroma.com/package-search/v1",
"headers": {
"x-chroma-token": ""
}
}
}
}
Windsurf

打开 Windsurf MCP 设置并编辑为包含以下内容:

{
"mcpServers": {
"package-search": {
"serverUrl": "https://mcp.trychroma.com/package-search/v1",
"headers": {
"x-chroma-token": ""
}
}
}
}
Warp

将以下内容添加到您的 Warp MCP 配置中。添加后,请确保在服务器上点击“开始”。

{
"package-search": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.trychroma.com/package-search/v1", "--header", "x-chroma-token: ${X_CHROMA_TOKEN}"],
"env": {
"X_CHROMA_TOKEN": ""
}
}
}
Codex

将以下内容添加到您的 ~/.codex/config.toml 文件中,并替换为您的 Chroma Cloud API 密钥:

[mcp_servers.package-search]
command = "npx"
args = ["mcp-remote", "https://mcp.trychroma.com/package-search/v1", "--header", "x-chroma-token: ${X_CHROMA_TOKEN}"]
env = { X_CHROMA_TOKEN = "" }
Claude Code

在您的终端中运行以下命令:

claude mcp add --transport http package-search https://mcp.trychroma.com/package-search/v1 --header "x-chroma-token: "
OpenAI SDK (Python)
from openai import OpenAI

client = OpenAI(api_key="")

resp = client.responses.create(
model="gpt-5",
input="Explain how colorlog implements testing in python",
tools=[
{
"type": "mcp",
"server_label": "package-search",
"server_url": "https://mcp.trychroma.com/package-search/v1",
"headers": {"x-chroma-token": ""},
"require_approval": "never"
}
],
)
print(resp)
Anthropic SDK (Python)
import anthropic

client = anthropic.Anthropic(api_key="")

response = client.beta.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1000,
messages=[{"role": "user", "content": "Explain how colorlog implements testing in python"}],
mcp_servers=[
{
"type": "url",
"url": "https://mcp.trychroma.com/package-search/v1",
"name": "package-search",
"authorization_token": ""
}
],
betas=["mcp-client-2025-04-04"],
)
print(response)
Google Gemini SDK (Python)
import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
from google import genai

client = genai.Client(api_key="")

async def run():
async with streamablehttp_client(
"https://mcp.trychroma.com/package-search/v1",
headers={"x-chroma-token": ""},
) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
prompt = "what logging levels are available in uber's zap go module?"
response = await client.aio.models.generate_content(
model="gemini-2.5-flash",
contents=prompt,
config=genai.types.GenerateContentConfig(temperature=0, tools=[session]),
)
print(response.text if hasattr(response, "text") else response)
asyncio.run(run())
MCP SDK (Python)
import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async def main():
async with streamablehttp_client(
"https://mcp.trychroma.com/package-search/v1",
headers={"x-chroma-token": ""},
) as (read_stream, write_stream, _):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
tools = await session.list_tools()
result = await session.call_tool(
name="package_search_grep",
arguments={"package_name": "colorlog", "registry_name": "py_pi", "pattern": "\bclass\b"},
)
print(f"Got result: {result}")
print(f"Available tools: {[t.name for t in tools.tools]}")

asyncio.run(main())
Ollama (via ollmcp)

创建 mcp_config.json:

{
"mcpServers": {
"package-search": {
"type": "streamable_http",
"url": "https://mcp.trychroma.com/package-search/v1",
"headers": { "x-chroma-token": "" },
"disabled": false
}
}
}

运行:

ollmcp --servers-json /path/to/mcp_config.json --model qwen2.5
Open Code

添加到 ~/.config/opencode/opencode.json

{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"package-search": {
"type": "remote",
"url": "https://mcp.trychroma.com/package-search/v1",
"enabled": true,
"headers": { "x-chroma-token": "" }
}
}
}

📚 详细文档

仓库结构

仓库的组织方式如下:

package-search/
├── index.json                   # 列举所有已通过或正在通过索引管道运行的包
├── versions.json                # 列举所有当前已索引的包和版本
├── npm/                         # npm 包
│   ├── react/
│   │   └── config.json
│   ├── vue/
│   │   └── config.json
│   └── ...
├── pypi/                        # PyPI 包
│   ├── requests/
│   │   └── config.json
│   └── ...
├── crates_io/                   # Rust 包
│   ├── serde/
│   │   └── config.json
│   └── ...
└── go/                          # Go 包
├── github.com/
│   └── gin-gonic/
│       └── gin/
│           └── config.json
└── ...

每个包都有自己的配置文件,位于 //config.json

添加新包

首选方法:拉取请求(审核速度更快)

如果您拥有所有必需的配置信息,我们强烈建议您提交拉取请求(PR),因为 PR 的审核周转时间 更快。操作步骤如下:

  1. 分叉此仓库

  2. // 创建一个新目录

  3. 在该目录中添加一个 config.json 文件,格式如下:

    {
    "native_identifier": "chromadb",
    "collection_name_prefix": "chromadb",
    "repo": "chroma-core/chroma",
    "registry": "py_pi",
    "tag_formats": [
    "{major}.{minor}.{patch}",
    ],
    "sentinel_timestamp": "2024-01-01T00:00:00Z",
    "include": [
    "**/*.md",
    "**/*.py",
    "**/*.rs",
    ],
    "version_sample_relative_size": 0.1,
    "version_sample_max_size": 10
    }
    

    必填字段说明

    • native_identifier:包所托管的注册中心使用的标识符。对于大多数注册中心,这应该是包的常用名称。对于 GitHub 版本,这应该是所有者用户或组织的用户名,后跟斜杠,再跟仓库名称(例如,chroma-core/code-collections)。对于 Golang 模块,这应该是完整的模块路径(例如,github.com/stretchr/testify/)。
    • collection_name_prefix:为该包创建的 Chroma 集合名称中版本之前的文本。我们将集合命名为 _。集合名称用于在 Chroma 中查询索引记录,因此通常应该是包的常用名称或其某种变体。请注意,集合名称前缀在一个注册中心内必须全局唯一。也就是说,同一注册中心中的任何两个包都不能有相同的集合名称前缀。
    • repo:包的源代码所在的 GitHub 仓库。提供所有者用户或组织的用户名,后跟斜杠,再跟仓库名称。
    • registry:包版本发布到的注册中心。必须是 "npm"、"py_pi"、"crates_io"、"golang_proxy" 或 "github_releases" 之一。
    • tag_formats:枚举包版本的 所有可能标签格式 的 git 标签格式数组。请注意,Chroma 假定包版本可以解析为带标签(注释或轻量级)的 git 提交。我们会为您处理版本到标签的解析,但我们只能解析我们知道存在的标签格式,这些格式从该配置字段中获取。有关更多信息,请参阅 标签格式指南。
    • sentinel_timestamp:最早的索引时间;在此之前发布的版本将被排除。必须是符合 RFC 3339/ISO 8601 的时间戳。
    • include:要索引的文件的 全局模式 数组(例如,["**/*.md", "**/*.ts", "**/*.js"])。
    • version_sample_relative_size:在单次遍历中要索引的包的所有发布版本的比例。目前,Chroma 每天为位于此仓库根目录的 index.json 文件中的每个包运行一次索引作业。每个索引作业对给定包的可用版本的一个子集进行操作。此参数控制每次运行索引作业时该子集的大小。
    • version_sample_max_size:在有许多版本的情况下,此字段限制样本大小。给定包的样本中的版本数量永远不会超过为此字段提供的值。
  4. 更新 index.json 文件,将您的新包包含在 Chroma 下次索引作业期间将扫描的包中

  5. 创建拉取请求,并清晰描述您要添加的包(使用我们的 PR 模板)

  6. 等待审核 - Chroma 团队成员将审核您的 PR

替代方法:提交问题

如果您没有所有必需的配置详细信息(例如版本采样逻辑或标签格式),可以提交一个问题:

  1. 创建一个新问题,使用我们的 包请求问题模板
  2. 提供包名称、注册中心和链接 到其主页或 GitHub 仓库
  3. 包含您知道的任何配置详细信息 - 您提供的信息越多,我们处理请求的速度就越快
  4. 等待 Chroma 团队 收集缺失的配置详细信息并添加包

注意:与 PR 相比,问题的处理时间通常更长,因为我们的团队需要研究和配置缺失的详细信息。

审核流程

  • 所有 PR 均由 Chroma 团队成员审核
  • 我们根据相关性、受欢迎程度和社区价值评估包
  • 被接受的包将被索引,并可通过 Chroma 的 包搜索 MCP 服务器 进行搜索

当前索引

该仓库目前索引来自以下注册中心的包:

  • NPM - JavaScript/TypeScript 包
  • PyPI - Python 包
  • crates.io - Rust 包
  • Golang Proxy - Go 模块
  • GitHub Releases - 通过 GitHub 版本分发的包

贡献指南

  • 确保包是公开可用且维护良好的
  • 验证 native_identifier 与注册中心中的包名称完全匹配
  • 确认 GitHub 仓库存在且可访问
  • 格式化 tag_formats 数组以匹配实际的 GitHub 发布标签
  • sentinel_timestamp 设置为合理的历史索引起始点
  • include 数组中使用全局模式(例如,"**/*.md" 而不是 ".md"
  • 更新 index.json 文件以包含您的新包
  • 在 PR 描述中提供添加该包应被索引的上下文

多仓库注意事项

如果您要添加的仓库是一个多仓库(包含多个包),则必须在 include 数组中格式化全局模式,以仅针对特定包的子目录。例如:

{
"native_identifier": "my-package",
"collection_name_prefix": "my-package",
"repo": "owner/monorepo",
"registry": "npm",
"tag_formats": ["v{major}.{minor}.{patch}"],
"sentinel_timestamp": "2024-01-01T00:00:00Z",
"include": [
"my-package/**/*.md",
"my-package/**/*.ts",
"my-package/**/*.js"
]
}

这确保仅索引 my-package/ 目录中的文件,而不是整个多仓库。


本仓库由 Chroma 团队维护,以支持我们的代码搜索和检索功能。

  • 0 关注
  • 0 收藏,8 浏览
  • system 提出于 2025-09-22 15:45

相似服务问题