内容
# 铬代码搜索MCP
**一个用于搜索铬源代码的令牌保留MCP服务器。**
它为您的AI编码代理提供廉价、确定性的访问整个[铬](https://source.chromium.org)代码库的能力 - 代码搜索、符号/文件查找、范围文件读取、目录列表、git历史记录、Gerrit代码审查、提交搜索和OWNERS - **无需本地检查或任何索引**。每个工具返回紧凑的结果(路径、符号、短代码片段、网址),因此代理在推理上花费令牌,而不是在转储整个文件上。
它通过[模型上下文协议](https://modelcontextprotocol.io)连接到任何启用MCP的客户端(Claude Code、Claude Desktop、Cursor等)。
---
## 为什么
铬工作通常从*定位器*问题开始 - “在哪里实现?”,“谁调用它?”,“在哪里使用这个标志?”,“这个CL更改了什么?”。令牌便宜的答案是**前N个匹配 → 路径 · 符号 · 几行 · 网址**,而不是将二十个文件转储到上下文窗口中。该服务器围绕这个想法构建:
- **始终保持最新,无需检查。** 查询`source.chromium.org`后面的实时索引,因此您可以搜索当前的`chromium/src@main`,即使您在本地没有任何克隆。
- **确定性,非语义。** 准确的代码搜索语法(`class:`,`function:`,`usage:`,`file:`,正则表达式)- 没有嵌入,没有猜测。
- **从设计上节省令牌。** 严格的结果上限,首先提供代码片段,并有一个防护措施,拒绝在没有行范围的情况下转储大文件。
它与[Serena](https://github.com/oraios/serena)(本地导航/重构)等符号级工具自然配对,并在您的代理自己的文件工具 - 该服务器是**广泛的,远程的发现层**。
---
## 工具
三个领域的13种工具。所有工具都返回纯粹、紧凑的文本。
### 代码搜索和导航
| 工具 | 功能 |
| --- | --- |
| `search_chromium_code(query, path?, language?, case_sensitive?, exclude_generated?, limit?, context_lines?)` | `chromium/src@main`上的全文代码搜索。`query`支持代码搜索语法(`class:`,`function:`,`usage:`,`file:`,`-exclude`,“phrase”,正则表达式)。`path`范围限定为目录前缀;`language`添加`lang:`过滤器。返回路径 + 行 + 代码片段 + 网址。 |
| `find_chromium_symbol(symbol, kind?, language?, path?, limit?)` | 查找符号的定义/用法。`kind` = auto | symbol | class | function | usage。`language`(例如`c++`)区分在vendored Python/JS中也存在的常见名称。 |
| `find_chromium_file(name, path_prefix?, limit?)` | 按(部分)名称模糊查找文件。 |
| `get_chromium_file(path, start_line?, end_line?, ref?)` | 读取文件 - 理想情况下是一个行范围。拒绝在没有范围的情况下转储大文件。`ref`可以是分支或标签(例如`refs/tags/144.0.7559.98`)。 |
| `list_chromium_directory(path, ref?)` | 列出目录的直接内容(文件,子目录,子模块)在任何分支/标签。 |
| `get_chromium_file_history(path, ref?, max_entries?)` | 文件或目录的最近提交(SHA,日期,作者,主题)。 |
### Gerrit(代码审查)
| 工具 | 功能 |
| --- | --- |
| `get_gerrit_cl_status(cl)` | CL主题,状态,所有者,标签投票和提交要求,以及链接。`cl`是更改编号。 |
| `get_gerrit_cl_comments(cl, unresolved_only?)` | 审查评论(文件,行,作者,消息)。`unresolved_only`仅显示开放线程。 |
| `get_gerrit_cl_diff(cl, file?)` | 已更改文件的摘要(路径,+/-行),或给定文件的文件差异。 |
| `list_gerrit_cls(query, limit?)` | 用原始Gerrit查询语法搜索Gerrit更改(例如`status:open owner:me`,`project:chromium/src is:wip`)。 |
### 提交,所有权和问题
| 工具 | 功能 |
| --- | --- |
| `search_chromium_commits(query?, author?, since?, limit?)` | 搜索已登陆的提交(已合并的CL)。`query`匹配提交消息,`author`是所有者电子邮件/名称,`since`是`YYYY-MM-DD`日期。 |
| `find_chromium_owners(path, ref?)` | 文件/目录的OWNERS,沿树向上走(并在`set noparent`处停止)。 |
| `get_chromium_issue(issue_id)` | 尽力而为的问题标题/报告者 + 标准网址。铬问题跟踪器没有干净的公共API,因此详细信息有限 - 打开网址以获取完整的问题。 |
> **分支覆盖:**代码/文件/符号*搜索*仅覆盖`chromium/src@main`。文件读取,目录列表和历史记录接受显式的`ref`(任何分支或标签)通过文件服务。
---
## 快速入门
### 1. 先决条件
唯一的要求是 [**uv**](https://docs.astral.sh/uv/) - 它为您管理Python解释器和依赖项(无需手动virtualenv)。
- **macOS / Linux:** `curl -LsSf https://astral.sh/uv/install.sh | sh`
- **Windows(PowerShell):** `irm https://astral.sh/uv/install.ps1 | iex`
服务器的依赖项(`mcp`,以及Windows上的`pywin32`)由`uv`/`uvx`在服务器首次启动时自动安装。
### 2. 启动命令
**无需克隆** - 客户端直接从GitHub启动服务器,使用`uvx`(uv下载,构建并运行它,然后缓存它):
```bash
uvx --from git+https://github.com/daniel-koc/chromium-codesearch-mcp chromium-codesearch-mcp
```
这是用于以下客户端配置的命令。要固定版本,请附加标签,例如`…/chromium-codesearch-mcp@v0.1.0`。
从终端进行健全性检查(点击实时API并打印示例输出):
```bash
uvx --from git+https://github.com/daniel-koc/chromium-codesearch-mcp chromium-codesearch-mcp --selftest
```
> **如果您的客户端找不到`uvx`:**某些客户端不继承您的shell `PATH`。使用绝对路径到可执行文件(`which uvx`在macOS/Linux上,`where.exe uvx`在Windows上 - 通常是`~/.local/bin/uvx`或`C:\Users\<you>\.local\bin\uvx.exe`)。
### 3. 配置您的客户端
<details open>
<summary><b>Claude Code(CLI)</b></summary>
使用`claude mcp add`命令添加服务器。使用用户范围使其在每个项目中可用:
```bash
claude mcp add --scope user chromium-search -- \
uvx --from git+https://github.com/daniel-koc/chromium-codesearch-mcp chromium-codesearch-mcp
```
或者,对于当前项目,仅需省略`--scope user`。您也可以在项目目录中创建一个`.mcp.json`:
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:**在Claude Code内部运行`/mcp` - `chromium-search`应列出(如果需要,请重新连接)。
</details>
<details>
<summary><b>Claude Desktop</b></summary>
打开 **设置 → 开发者 → 编辑配置** (这打开了`claude_desktop_config.json`)并添加:
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 完全退出Claude Desktop(**文件 → 退出**,而不仅仅是关闭)并重新打开。工具出现在锤子/工具图标下。
</details>
<details>
<summary><b>Cursor(IDE)</b></summary>
打开 **Cursor 设置 → MCP 和集成 → 新的MCP服务器**,或直接编辑配置文件:
- 全局(所有项目):`~/.cursor/mcp.json`
- 仅限项目:`.cursor/mcp.json`在项目根目录
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 服务器和其工具在 **设置 → MCP 和集成** 中显示(并且可以切换)。
</details>
<details>
<summary><b>Cursor CLI(<code>cursor-agent</code>)</b></summary>
Cursor CLI读取与IDE相同的**MCP配置** - 全局`~/.cursor/mcp.json`和项目`.cursor/mcp.json`。因此,上面的JSON适用于Cursor IDE:
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 在`cursor-agent`内部运行`/mcp`以确认`chromium-search`已连接。
</details>
<details>
<summary><b>VS Code(GitHub Copilot)</b></summary>
从命令面板运行 **MCP:添加服务器**,并选择 **命令(stdio)**,或创建`.vscode/mcp.json`在您的workspace中。注意,VS Code使用`servers`键和`type`:
```json
{
"servers": {
"chromium-search": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 打开聊天窗口 **代理** 模式并检查工具按钮。
</details>
<details>
<summary><b>Codex(CLI和应用程序)</b></summary>
添加到 `~/.codex/config.toml`(如果不存在则创建):
```toml
[mcp_servers.chromium-search]
command = "uvx"
args = ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
```
**验证:** 在Codex中运行`/mcp`。
</details>
<details>
<summary><b>Gemini CLI</b></summary>
添加到 `~/.gemini/settings.json`:
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 在Gemini CLI中运行`/mcp`。
</details>
<details>
<summary><b>Windsurf</b></summary>
打开 **设置 → 级联 → MCP 服务器** (使用 *查看原始配置**),或编辑 `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 服务器出现在级联MCP面板中。
</details>
<details>
<summary><b>Cline / Roo 代码(VS Code扩展)</b></summary>
打开扩展的 **MCP 服务器 → 配置** 视图(它打开一个 `*_mcp_settings.json`)并添加:
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 服务器在扩展的MCP面板中显示为已连接。
</details>
<details>
<summary><b>JetBrains(Junie / AI Assistant)</b></summary>
- **Junie:** 编辑 `~/.junie/mcp/mcp.json`(全局)或 `<project>/.junie/mcp/mcp.json`。
- **AI Assistant:** **设置 → 工具 → AI Assistant → 模型上下文协议(MCP)**。
两者使用相同的条目:
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
</details>
<details>
<summary><b>任何其他MCP客户端</b></summary>
大多数MCP客户端接受stdio启动命令。使用以下命令添加新服务器:
- **命令:** `uvx`
- **参数:** `--from git+https://github.com/daniel-koc/chromium-codesearch-mcp chromium-codesearch-mcp`
如果客户端使用配置文件,则几乎总是上面的`mcpServers` JSON(Codex使用TOML;VS Code使用`servers`和`"type": "stdio"`)。查看客户端的MCP文档以获取确切的文件位置,并记住`uvx`不在PATH上的注意事项,如果服务器无法启动。
</details>
---
## 示例提示
连接后,询问您的代理类似问题 - 每行都会使用一个工具:
**代码搜索和导航**
- *"查找`WebContents`的创建位置 - 仅限用法。* → `search_chromium_code`
- *"在`content/browser/`目录下搜索C++文件中的`RenderFrameHostImpl`,并提供3行上下文。* → `search_chromium_code`(路径 + 语言 + 上下文)
- *"查找C ++中`Browser::Create`函数的定义。* → `find_chromium_symbol`
- *"定位文件`web_contents_impl.h`。* → `find_chromium_file`
- *"显示`content/public/browser/web_contents.h`第90-140行。* → `get_chromium_file`
- *"读取`base/check.h`标签`refs/tags/144.0.7559.98`。* → `get_chromium_file`(固定引用)
- *"列出`content/public/browser/`目录的内容。* → `list_chromium_directory`
- *"显示`base/check.h`的最后5个提交记录。* → `get_chromium_file_history`
**Gerrit代码审查**
- *"Gerrit CL 6624568的状态是什么?* → `get_gerrit_cl_status`
- *"显示Gerrit CL 6624568的未解决评论。* → `get_gerrit_cl_comments`
- *"CL 6624568更改了哪些文件?然后显示`serialized_script_value.cc`的差异。* → `get_gerrit_cl_diff`
- *"查找打开的Gerrit CLs触摸密码管理器。* → `list_gerrit_cls`
**提交,所有权和问题**
- *"搜索自2025-06-01以来包含密码管理器的已登陆提交。* → `search_chromium_commits`
- *"谁拥有`chrome/browser/ui/browser.cc`?* → `find_chromium_owners`
- *"获取问题422768753的标题。* → `get_chromium_issue`
良好的工作流程是 **广泛发现,然后阅读细微差别**:搜索以定位正确的路径/行,然后仅读取所需的特定范围。将其与[Serena](https://github.com/oraios/serena)一起使用进行本地符号导航和编辑。
---
## 配置
### 1. 先决条件
唯一的要求是 [**uv**](https://docs.astral.sh/uv/) - 它为您管理Python解释器和依赖项(无需手动virtualenv)。
- **macOS / Linux:** `curl -LsSf https://astral.sh/uv/install.sh | sh`
- **Windows(PowerShell):** `irm https://astral.sh/uv/install.ps1 | iex`
服务器的依赖项(`mcp`,以及Windows上的`pywin32`)由`uv`/`uvx`在服务器首次启动时自动安装。
### 2. 启动命令
**无需克隆** - 客户端直接从GitHub启动服务器,使用`uvx`(uv下载,构建并运行它,然后缓存它):
```bash
uvx --from git+https://github.com/daniel-koc/chromium-codesearch-mcp chromium-codesearch-mcp
```
这是用于以下客户端配置的命令。要固定版本,请附加标签,例如`…/chromium-codesearch-mcp@v0.1.0`。
从终端进行健全性检查(点击实时API并打印示例输出):
```bash
uvx --from git+https://github.com/daniel-koc/chromium-codesearch-mcp chromium-codesearch-mcp --selftest
```
> **如果您的客户端找不到`uvx`:**某些客户端不继承您的shell `PATH`。使用绝对路径到可执行文件(`which uvx`在macOS/Linux上,`where.exe uvx`在Windows上 - 通常是`~/.local/bin/uvx`或`C:\Users\<you>\.local\bin\uvx.exe`)。
### 3. 配置您的客户端
<details open>
<summary><b>Claude Code(CLI)</b></summary>
使用`claude mcp add`命令添加服务器。使用用户范围使其在每个项目中可用:
```bash
claude mcp add --scope user chromium-search -- \
uvx --from git+https://github.com/daniel-koc/chromium-codesearch-mcp chromium-codesearch-mcp
```
或者,对于当前项目,仅需省略`--scope user`。您也可以在项目目录中创建一个`.mcp.json`:
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 在Claude Code内部运行`/mcp` - `chromium-search`应列出(如果需要,请重新连接)。
</details>
<details>
<summary><b>Claude Desktop</b></summary>
打开 **设置 → 开发者 → 编辑配置** (这打开了`claude_desktop_config.json`)并添加:
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 完全退出Claude Desktop(**文件 → 退出**,而不仅仅是关闭)并重新打开。工具出现在锤子/工具图标下。
</details>
<details>
<summary><b>Cursor(IDE)</b></summary>
打开 **Cursor 设置 → MCP 和集成 → 新的MCP服务器**,或直接编辑配置文件:
- 全局(所有项目):`~/.cursor/mcp.json`
- 仅限项目:`.cursor/mcp.json`在项目根目录
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 服务器和其工具在 **设置 → MCP 和集成** 中显示(并且可以切换)。
</details>
<details>
<summary><b>Cursor CLI(<code>cursor-agent</code>)</b></summary>
Cursor CLI读取与IDE相同的**MCP配置** - 全局`~/.cursor/mcp.json`和项目`.cursor/mcp.json`。因此,上面的JSON适用于Cursor IDE:
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 在`cursor-agent`内部运行`/mcp`以确认`chromium-search`已连接。
</details>
<details>
<summary><b>VS Code(GitHub Copilot)</b></summary>
从命令面板运行 **MCP:添加服务器** 并选择 **命令(stdio)**,或创建`.vscode/mcp.json`在您的workspace中。注意,VS Code使用`servers`键和`type`:
```json
{
"servers": {
"chromium-search": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 打开聊天窗口 **代理** 模式并检查工具按钮。
</details>
<details>
<summary><b>Codex(CLI和应用程序)</b></summary>
添加到 `~/.codex/config.toml`(如果不存在则创建):
```toml
[mcp_servers.chromium-search]
command = "uvx"
args = ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
```
**验证:** 在Codex中运行`/mcp`。
</details>
<details>
<summary><b>Gemini CLI</b></summary>
添加到 `~/.gemini/settings.json`:
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 在Gemini CLI中运行`/mcp`。
</details>
<details>
<summary><b>Windsurf</b></summary>
打开 **设置 → 级联 → MCP 服务器** (使用 *查看原始配置**),或编辑 `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 服务器出现在级联MCP面板中。
</details>
<details>
<summary><b>Cline / Roo 代码(VS Code扩展)</b></summary>
打开扩展的 **MCP 服务器 → 配置** 视图(它打开一个 `*_mcp_settings.json`)并添加:
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
**验证:** 服务器在扩展的MCP面板中显示为已连接。
</details>
<details>
<summary><b>JetBrains(Junie / AI Assistant)</b></summary>
- **Junie:** 编辑 `~/.junie/mcp/mcp.json`(全局)或 `<project>/.junie/mcp/mcp.json`。
- **AI Assistant:** **设置 → 工具 → AI Assistant → 模型上下文协议(MCP)**。
两者使用相同的条目:
```json
{
"mcpServers": {
"chromium-search": {
"command": "uvx",
"args": ["--from", "git+https://github.com/daniel-koc/chromium-codesearch-mcp", "chromium-codesearch-mcp"]
}
}
}
```
</details>
<details>
<summary><b>任何其他MCP客户端</b></summary>
大多数MCP客户端接受stdio启动命令。使用以下命令添加新服务器:
- **命令:** `uvx`
- **参数:** `--from git+https://github.com/daniel-koc/chromium-codesearch-mcp chromium-codesearch-mcp`
如果客户端使用配置文件,则几乎总是上面的`mcpServers` JSON(Codex使用TOML;VS Code使用`servers`和`"type": "stdio"`)。查看客户端的MCP文档以获取确切的文件位置,如果服务器无法启动,请记住`uvx`不在PATH上的注意事项。
</details>
---
## 示例提示
连接后,询问您的代理类似问题 - 每个问题都会使用一个工具:
**代码搜索和导航**
- *"查找`WebContents`的创建位置 - 仅限用法。* → `search_chromium_code`
- *"在`content/browser/`目录下搜索C++文件中`RenderFrameHostImpl`,并提供3行上下文。* → `search_chromium_code`(路径+语言+上下文)
- *"查找C ++中`Browser::Create`函数的定义。* → `find_chromium_symbol`
- *"定位文件`web_contents_impl.h`。* → `find_chromium_file`
- *"显示`content/public/browser/web_contents.h`第90-140行。* → `get_chromium_file`
- *"读取`base/check.h`文件,标签为`refs/tags/144.0.7559.98`。* → `get_chromium_file`(固定引用)
- *"列出`content/public/browser/`目录的内容。* → `list_chromium_directory`
- *"显示`base/check.h`的最后5个提交记录。* → `get_chromium_file_history`
**Gerrit代码审查**
- *"Gerrit CL 6624568的状态是什么?* → `get_gerrit_cl_status`
- *"显示Gerrit CL 6624568的未解决评论。* → `get_gerrit_cl_comments`
- *"CL 6624568更改了哪些文件?然后显示`serialized_script_value.cc`的差异。* → `get_gerrit_cl_diff`
- *"查找触摸密码管理器的开放Gerrit CL。* → `list_gerrit_cls`
**提交,所有权和问题**
- *"搜索自2025-06-01以来提及密码管理器的已登陆提交。* → `search_chromium_commits`
- *"谁拥有`chrome/browser/ui/browser.cc`?* → `find_chromium_owners`
- *"获取问题422768753的标题。* → `get_chromium_issue`
良好的工作流程是 **广泛发现,然后仔细阅读**:搜索以定位正确的路径/行,然后仅读取所需的特定范围。将它与[Serena](https://github.com/oraios/serena)一起使用进行本地符号导航和编辑。
---
## 配置
环境变量(所有可选):
| 变量 | 用途 | 默认值 |
| --- | --- | --- |
| `CR_SEARCH_API_KEY` | 覆盖公共代码搜索API密钥 | 内置 |
| `CR_HTTP_TIMEOUT` | 每请求超时(秒) | 15 |
在shell中设置它们,或在客户端配置文件中添加`"env": { ... }`块。
默认情况下,`search_chromium_code`和`find_chromium_symbol`排除已编译的构建输出(`out/`);`third_party/`(包括blink,渲染器)被**保留**。
传递`exclude_generated=false`以包括`out/`以及。
---
## 工作原理
服务器与两个公共、无身份验证的后端通信:
- **铬代码搜索(Grimoire)API**,位于`source.chromium.org`后面 - 用于代码搜索,文件/目录内容和git历史记录。
- **Gerrit REST API**,位于`chromium-review.googlesource.com` - 用于CL状态,评论,差异,变更搜索和(通过合并的变更)提交搜索。
它是一个薄的、确定性的桥梁,没有本地状态,没有索引,也没有写入操作(仅限搜索/读取)。结果格式化为紧凑,以便保持代理上下文小。
---
## 开发
从本地克隆:
```bash
git clone https://github.com/daniel-koc/chromium-codesearch-mcp
cd chromium-codesearch-mcp
uv run pytest # 单元测试(离线)
uv run chromium-codesearch-mcp --selftest # 遍历每个工具与实时API交互
uv run tests/mcp_smoke.py # 通过真实MCP stdio驱动服务器
uvx ruff check chromium_codesearch_mcp tests # lint
```
该包(`chromium_codesearch_mcp/`)是一小部分仅限标准库的模块 - `remote.py`用于代码搜索API,`gerrit.py`用于Gerrit,`owners.py`,`issues.py`,`formatting.py`,`model.py`,`config.py`; `main.py`使用[FastMCP](https://github.com/modelcontextprotocol/python-sdk)将它们包装为MCP工具。
---
## 限制
- **代码搜索仅限于 `main` 分支。** 索引涵盖 `chromium/src@main`;如果您的本地检出版本固定为发布标签,则搜索结果可能会有所不同。文件读取和历史记录可以针对特定的 `ref`,而您的代理自己的本地工具则涵盖工作树。
- **问题支持为尽力而为。** 铬问题跟踪器没有干净的公共API,因此 `get_chromium_issue` 返回标题/报告人以及标准URL;问题 *搜索* 和CI/尝试机器人错误提取不包括在内。
- 它是一个 **发现/读取** 层 - 用于本地符号导航和编辑,请将其与Serena和编辑器的工具配对。
---
## 致谢
基于公共的 **铬代码搜索** 和 **Gerrit** API,这些API为 [source.chromium.org](https://source.chromium.org) 和 [chromium-review.googlesource.com](https://chromium-review.googlesource.com) 提供支持。
铬是一个由The Chromium Authors发起的项目。
---
## 许可证
[MIT](./LICENSE) © 2026 Daniel Kocielinski
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器