Token导航 LogoToken导航

MCP Server · 数据服务

clast (Daveelton)

Clang AST MCP Server是一个基于Clang的C++代码索引服务,通过提取和存储符号信息(函数、类、方法等)来减少Claude Code的令牌消耗,提供精确的代码片段而非整个文件。

stdio官方级别未说明来源级核验工具 7
PythonClaude数据分析

快速开始

作者 / 组织
daveelton
提供方
daveelton
运行时
Python

工具数量

7

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

5

仓库热度

收录来源

1 个

MCP World

选型结论

clast (Daveelton) 属于数据服务类 MCP Server,公开资料标注 7 个工具,通过stdio 本地进程接入,适配 Claude,有可以直接复制的安装命令;接入前先确认权限范围。

分类

数据服务

传输方式

stdio

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

安装命令

python3 -m clang_ast_mcp serve --db .ast-index.db --format json

客户端配置示例

{
  "mcpServers": {
    "clast": {
      "command": "python3",
      "args": [
        "-m",
        "clang_ast_mcp",
        "serve",
        "--db",
        ".ast-index.db",
        "--format",
        "json"
      ]
    }
  }
}

按公开安装命令拼出来的示例,字段名和参数以仓库 README 为准;带 YOUR_API_KEY 这类占位符的位置记得换成自己的值。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 7 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

Clang AST MCP服务器

Claude code的语义C++代码索引。通过以下方式减少代币消耗 交付精确的代码块——函数体、类大纲、调用站点-- 而不是让克劳德读取整个文件。

运作原理

  1. 索引 --Clang解析你的C++源文件,

类、方法)及其签名、文档注释、源代码正文和 交叉引用。存储在本地SQLite数据库中。

  1. 查询 --Claude Code调用MCP工具(ast_search, ast_get_symbol等等)

只检索它需要的代码。没有文件读取,没有grep,没有glob。

先决条件

  • Python 3.11+
  • 李丁。 (系统包: apt install libclang-dev 或 brew install llvm)
  • python 3叮当响 (匹配版本: apt install python3-clang-18)
  • compile_commands.json 来自CMake(推荐但不是必需的)

快速开始

0.克隆到您的C++项目中

从项目根目录克隆repo并将其添加到 .gitignore 所以两者都不 该工具及其索引数据库都不会提交给您的项目:

git clone git@github.com:daveelton/clast.git
echo "clast/" >> .gitignore
./clast/bootstrap.sh

1.生成compile_commands.json(如果使用CMake)

cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON

对于CLion:设置>构建、执行、部署>CMake--append -DCMAKE_EXPORT_COMPILE_COMMANDS=ON 转到“CMake选项”字段,然后重新生成。

2.为你的项目建立索引

有两种方法可以运行索引器:独立运行或通过CMake运行。

选项A:独立(最简单)

直接从命令行运行索引器:

cd clast
./index.sh                              # auto-finds compile_commands.json
./index.sh /path/to/cmake-build-debug   # or specify the build dir
./index.sh --force                       # re-index everything

当所有标头在索引之前都存在时,这很有效。如果你的项目 在构建过程中生成标头(例如JUCE的 JuceHeader.h),先建, 然后运行 index.sh.

选项B:CMake集成

对于已生成标头的项目,将索引器集成为CMake构建 目标。这保证了索引在构建后运行,因此所有标头都存在。

添加到您的 CMakeLists.txt:

include(clast/cmake/ClastIndex.cmake)
add_clast_index(YourMainTarget)

然后显式构建索引:

cmake --build cmake-build-debug --target ast-index

这 ast-index 目标取决于你的主要目标,所以它会建立你的 如果需要,请先进行项目。这不是默认设置的一部分 all 目标--它 只有当你要求的时候才会跑。

3.配置克劳德代码

添加到您的项目 .mcp.json:

{
  "mcpServers": {
    "clang-ast": {
      "command": "bash",
      "args": ["-c", "./clast/.venv/bin/python3 -m clang_ast_mcp serve --db ./clast/.ast-index.db 2>>./clast/mcp.log"],
      "env": {
        "LIBCLANG_PATH": "/opt/homebrew/opt/llvm/lib/libclang.dylib"
      }
    }
  }
}

日志附加到 ./clast/mcp.log --使用 tail -f ./clast/mcp.log 到 实时观察工具调用、响应大小和时间。

bootstrap.sh 将提供在您的项目中附加clast说明 CLAUDE.md。如果您更喜欢手动操作,请复制以下内容 CLAUDE级添加剂.md 进入你的项目 CLAUDE.md.

MCP工具

工具目的何时使用
ast_search关键字/自然语言搜索“参数平滑是如何工作的?”
ast_get_symbol按名称获取完整定义“显示MyPlugin::processBlock”
ast_get_outline类/文件大纲(无正文)“MyPlugin的接口是什么?”
ast_get_references查找呼叫站点“什么呼叫parameterChanged?”
ast_get_hierarchy继承树“什么源于AudioProcessor?”
ast_index重新索引项目更改文件后
ast_status索引统计检查索引是否已加载

输出格式

默认情况下,工具响应使用 紧凑的 呈现的纯文本格式 本机C++语法而不是JSON字段名,每节省约3000-5000个令牌 会议。看 docs/compact-response-format.md 了解完整的规格和原理。

要切换到JSON输出,请使用CLI标志:

python3 -m clang_ast_mcp serve --db .ast-index.db --format json

或者环境变量:

AST_OUTPUT_FORMAT=json python3 -m clang_ast_mcp serve --db .ast-index.db

在 .mcp.json:

{
  "mcpServers": {
    "clang-ast": {
      "command": "bash",
      "args": ["-c", "./clast/.venv/bin/python3 -m clang_ast_mcp serve --db ./clast/.ast-index.db 2>>./clast/mcp.log"],
      "env": {
        "AST_OUTPUT_FORMAT": "json",
        "LIBCLANG_PATH": "/opt/homebrew/opt/llvm/lib/libclang.dylib"
      }
    }
  }
}

格式是服务器范围的——用不同的设置重新启动以进行切换。这 使A/B比较变得简单:在每种模式下运行一个完整的会话并进行比较 Claude Code报告中的令牌使用情况。

建筑

compile_commands.json
        │
        ▼
  ┌──────────┐     ┌───────────┐     ┌──────────┐
  │ libclang │────▶│  SQLite   │────▶│   BM25   │
  │ indexer  │     │   index   │     │  search  │
  └──────────┘     └───────────┘     └──────────┘
                         │
                         ▼
                   ┌───────────┐
                   │ MCP tools │◀──── Claude Code
                   │  (stdio)  │
                   └───────────┘
  • 索引器 用途 libclang 解析每个翻译单元,提取符号

使用USR(统一符号分辨率ID)进行精确的交叉引用

  • 存储 是SQLite,对符号名称、USR和文件路径有索引
  • 搜索 在符号名称、签名和文档注释上使用BM25关键字排名
  • MCP服务器 使用FastMCP和stdio传输(克劳德代码本地)

增量重新索引

索引器跟踪文件内容哈希。跑步 ast_index 再次仅重新解析 已更改的文件。使用 --force 重新索引所有内容。

索引第三方标头

对于JUCE或类似的大型框架,只索引公共标头:

clang-ast-mcp index /path/to/JUCE/modules \
  --db /path/to/your/project/.ast-index.db

这使Claude可以访问JUCE类大纲和API签名,而无需 索引实现文件。

Xcode项目

Xcode不生成 compile_commands.json 本地。您或许可以使用 熊 通过拦截生成一个 实际构建期间的编译器调用:

brew install bear
bear -- xcodebuild -project Foo.xcodeproj -scheme Foo build

然后运行 ./clast/index.sh 像往常一样,它将找到生成的 compile_commands.json 在项目根中。

LLM生成的代码警告Emptor

这个项目的内容主要包含LLM生成的代码,以及由此带来的所有好处和限制。

工具与能力

工具数量

7

资源数量

0

提示词数量

0

能力标签

C++代码索引Python本地部署符号提取代码查询Clang工具链SQLite存储

支持客户端

Claude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

用自然语言查库

不用手写 SQL,直接问数据,让模型组织查询语句。

数据巡检

定期拉指标、做对比,把异常项整理成一段说明。

打通业务数据

把数据库、数仓和接口接进同一个上下文,减少导出再上传。

选择建议

值得选的地方

  • 只提供 7 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在数据服务场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
clast (Daveelton)

MCP World · 本页

7stdio有1 个2026-05-17
Memory 9d25f64e

MCP World

9未说明未标注1 个2026-05-17
Prisma MCP Server

MCP World

0stdio有3 个2026-05-17
Astr Bot

MCP World

0stdio有1 个2026-05-17
Getzep MCP

MCP World

9stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

clast (Daveelton) 怎么安装?

公开资料给出的安装命令是 python3 -m clang_ast_mcp serve --db .ast-index.db --format json,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

clast (Daveelton) 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

clast (Daveelton) 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

clast (Daveelton) 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

clast (Daveelton) 支持哪些客户端?

公开资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP