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/mcp.json
:
{
"mcpServers": {
"package-search": {
"transport": "streamable_http",
"url": "https://mcp.trychroma.com/package-search/v1",
"headers": {
"x-chroma-token": ""
}
}
}
}
创建或编辑 .vscode/mcp.json
:
{
"servers": {
"package-search": {
"type": "http",
"url": "https://mcp.trychroma.com/package-search/v1",
"headers": {
"x-chroma-token": ""
}
}
}
}
打开 Windsurf MCP 设置并编辑为包含以下内容:
{
"mcpServers": {
"package-search": {
"serverUrl": "https://mcp.trychroma.com/package-search/v1",
"headers": {
"x-chroma-token": ""
}
}
}
}
将以下内容添加到您的 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/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 mcp add --transport http package-search https://mcp.trychroma.com/package-search/v1 --header "x-chroma-token: "
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)
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)
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())
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())
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
添加到 ~/.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
└── ...
每个包都有自己的配置文件,位于
。
如果您拥有所有必需的配置信息,我们强烈建议您提交拉取请求(PR),因为 PR 的审核周转时间 更快。操作步骤如下:
分叉此仓库
在
创建一个新目录
在该目录中添加一个 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
:在有许多版本的情况下,此字段限制样本大小。给定包的样本中的版本数量永远不会超过为此字段提供的值。更新 index.json 文件,将您的新包包含在 Chroma 下次索引作业期间将扫描的包中
创建拉取请求,并清晰描述您要添加的包(使用我们的 PR 模板)
等待审核 - Chroma 团队成员将审核您的 PR
如果您没有所有必需的配置详细信息(例如版本采样逻辑或标签格式),可以提交一个问题:
注意:与 PR 相比,问题的处理时间通常更长,因为我们的团队需要研究和配置缺失的详细信息。
该仓库目前索引来自以下注册中心的包:
native_identifier
与注册中心中的包名称完全匹配tag_formats
数组以匹配实际的 GitHub 发布标签sentinel_timestamp
设置为合理的历史索引起始点include
数组中使用全局模式(例如,"**/*.md"
而不是 ".md"
)index.json
文件以包含您的新包如果您要添加的仓库是一个多仓库(包含多个包),则必须在 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 团队维护,以支持我们的代码搜索和检索功能。