关于 Agents Md Generator
Agents Md Generator 是用于分析代码库并生成或更新 AGENTS.md 的 MCP 服务,适合需要为编码 Agent 提供项目上下文的开发者。它使用 tree-sitter 提取结构信息,并通过增量扫描减少重复分析。
主要功能
- 01分析 Python、C#、TypeScript、JavaScript 和 Go
- 02生成项目架构与开发说明
- 03增量扫描并缓存文件结果
- 04分块传输大型分析内容
- 05可独立扫描代码库以获取上下文
适用场景
- 01为项目生成或更新 AGENTS.md
- 02在代码审查前了解代码库结构
- 03为规划和问答提取架构上下文
MCP 相关
MCP 服务提供生成文档、扫描代码库和分块读取分析结果的工具,供兼容客户端调用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
3收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| params | any | 是 |
详细介绍
agents-md-generator
使用 tree-sitter 分析代码库并生成 AGENTS.md 文件的 MCP 服务。
Python · C# · TypeScript · JavaScript · Go
兼容任何支持 MCP 的客户端:Claude Code、Gemini CLI、Cursor、Windsurf、Codex CLI 等。
该服务提供了三个职责明确的工具:
generate_agents_md— 主入口。内部运行分析流程,将写入规则嵌入负载,并向客户端返回分块读取说明。scan_codebase— 独立的上下文工具,适用于需要深入了解代码库但不生成任何文件的场景。read_payload_chunk— 无论负载由哪个工具生成,都会以分块形式传回。
不会有大量数据通过 MCP 线路传输。
目录
安装
要求: Python 3.11+、Git,以及任何支持 MCP 的客户端。
有关完整指南(包括先决条件和故障排除),请参阅 INSTALLATION.md。
选项 A — 使用 pip 安装 + 设置向导(推荐)
pip install agents-md-generator
agents-md-generator setup
设置向导会检测已安装的客户端,询问是进行全局配置还是按项目配置,并自动修改配置文件。支持 Claude Code、Gemini CLI、Cursor、Windsurf 和 Codex CLI。
选项 B — uvx(无需安装)
如果已安装 uv,uvx 无需预先安装即可运行此软件包。请在客户端的 MCP 配置中手动添加条目:
{
"mcpServers": {
"agents-md": {
"command": "uvx",
"args": ["agents-md-generator"]
}
}
}
具体针对 Claude Code:
claude mcp add agents-md -- uvx agents-md-generator
claude mcp add默认使用--scope local(仅限当前项目)。添加-s user可将其注册到所有项目。
使用方法
注册后,向 AI 客户端提出请求:
“为此项目生成 AGENTS.md”
客户端会自动调用 generate_agents_md。若要扫描其他目录:
“为位于 /path/to/project 的项目生成 AGENTS.md”
工具
| 工具 | 用途 |
|---|---|
generate_agents_md | 主要入口。在内部运行流水线,将编写规则嵌入负载,并返回分块读取指令。使用此工具创建或更新 AGENTS.md。 |
scan_codebase | 独立的上下文工具。分析代码库并返回纯数据负载,不强制要求生成 AGENTS.md。需要为其他任务获取架构上下文时使用此工具。 |
read_payload_chunk | 分块读取由任一工具写入的负载,直到 has_more 为 false。 |
工具参数
generate_agents_md
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
project_path | string | "." | 项目根目录的路径 |
scan_codebase
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
project_path | string | "." | 项目根目录的路径 |
force_full_scan | boolean | false | 明确设为 true 时,忽略缓存并重新扫描所有内容。 |
read_payload_chunk
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
project_path | string | "." | 必须与前一次工具调用使用的路径一致 |
chunk_index | integer | — | 从零开始的分块索引。递增索引,直到 has_more 为 false |
生成内容
生成的 AGENTS.md 遵循 agents.md 开源标准。它是面向 AI Agent 的 README,而不是面向人类的文档。包含以下章节:
| 章节 | 内容 |
|---|---|
| 项目概览 | 技术栈和顶层架构形态 |
| 架构与数据流 | 检测到的层或领域,以及数据流向 |
| 约定与模式 | 命名规则、导出约定、导入规则,以及如何端到端地添加新实体 |
| 环境变量 | 在源文件和 .env.example 中检测到的变量 |
| 设置命令 | 来自 package.json、Makefile 等文件的准确安装和运行命令 |
| 开发工作流 | 构建、监视和开发服务器命令 |
| 测试说明 | 测试命令和框架信息(如果检测到) |
| 代码风格 | lint/格式化命令(如果检测到配置文件) |
| 构建与部署 | CI 流水线信息(如果检测到) |
完全省略未检测到数据的章节。
增量扫描的工作方式
- 首次运行(冷启动) — 使用 tree-sitter 解析所有由 git 跟踪的源文件并缓存
- 后续运行 — 仅重新解析自上次扫描以来 SHA-256 哈希发生变化的文件
- 语义差异 — 对于已修改的文件,负载中仅包含发生变化的公共符号
- 源文件没有变化? — 工具会停止,并询问你是否仍想改进现有的
AGENTS.md内容 - 私有符号和测试文件内部内容会同时从缓存和负载中排除 — 对
AGENTS.md而言,只有公共 API 表面重要
大型负载如何分块传输
对于大型代码库,分析负载可能过大,无法通过 MCP 线路以内联方式返回。服务会通过 read_payload_chunk 透明地处理这种情况。
扫描会在独立进程中运行,并发送阶段进度通知,超时时间为五分钟。取消操作会停止扫描工作进程。在一个服务实例中,每个项目一次只能运行一个扫描;对于超出时限的仓库,请使用 .agents-config.json 缩小分析范围。
生成操作始终会组装当前快照,并为未更改的源文件复用缓存的符号。即使负载已被读取或运行了其他扫描,中断的生成操作也可以重试。客户端仍需负责写入 AGENTS.md。
序列化负载最多为 300,000 个字符。被丢弃的分析部分会记录在 metadata.degradations 和 metadata.truncated_sections 中。现有的 AGENTS.md 内容和写入说明会得到保留;如果仅这些内容就超出预算,工具会返回错误,而不是截断文档。
generate_agents_md 流程
generate_agents_md在内部运行流水线,将负载写入磁盘(包括AGENTS.md写入规则),并返回total_chunks及读取说明- 客户端调用
read_payload_chunk(project_path, chunk_index=0),然后递增chunk_index,直到has_more为 false - 客户端拼接所有
data字段——负载包含写入AGENTS.md所需的规则和分析数据 - 读取最后一个分块后,负载文件会自动删除
scan_codebase 流程(纯上下文,不强制要求 AGENTS.md)
scan_codebase运行分析,并将纯数据负载写入磁盘- 通过
read_payload_chunk以相同方式分块读取 - 客户端可将负载用于任何用途——代码审查、规划、问答
此流程完全通过 MCP 完成——客户端无需访问文件系统。任何兼容 MCP 的客户端都可以按此流程操作。
缓存和负载位置
所有运行时产物都存储在项目之外的用户缓存目录中:
~/.cache/agents-md-generator/<project-hash>/cache.json ← incremental scan cache
<project-hash> 是项目绝对路径的 SHA-256 哈希值——每个项目各不相同。不会向你的仓库写入任何内容。
**注意:**分析期间,服务也会在此目录中写入临时的
payload.json,但它完全由read_payload_chunk工具管理,并会在读取最后一个分块后自动删除。你无需直接访问它。
项目配置
在项目根目录下创建 .agents-config.json 以自定义行为。此文件为可选项——所有字段均有默认值,你可以将其提交到代码仓库,与团队共享设置。
完整默认配置
{
"project_size": "medium",
"exclude": [
"**/node_modules/**",
"**/bin/**",
"**/obj/**",
"**/.git/**",
"**/dist/**",
"**/build/**",
"**/__pycache__/**",
"**/*.min.js",
"**/*.min.css",
"**/*.bundle.js",
"**/vendor/**",
"**/packages/**",
"**/.venv/**",
"**/venv/**",
"**/bower_components/**",
"**/app/lib/**",
"**/wwwroot/lib/**",
"**/wwwroot/libs/**",
"**/static/vendor/**",
"**/public/vendor/**",
"**/assets/vendor/**",
"**/site-packages/**"
],
"include": [],
"languages": "auto",
"agents_md_path": "./AGENTS.md",
"max_file_size_bytes": 1048576
}
选项
| 键 | 默认值 | 说明 |
|---|---|---|
project_size | "medium" | 项目规模——用于调整所有内部上限和阈值(参见项目规模配置) |
exclude | (见上文) | 从分析中排除的 Glob 模式 |
include | [] | 如果非空,则只分析匹配这些模式的文件 |
languages | "auto" | "auto" 会检测所有受支持的语言,也可以传入列表,例如 ["typescript", "python"] |
agents_md_path | "./AGENTS.md" | 生成文件的输出路径 |
max_file_size_bytes | 1048576 | 跳过大于此大小的文件(默认值:1 MB) |
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
AGENTS_MD_LOG_LEVEL | INFO | 服务日志详细程度。设置为 DEBUG 可查看逐文件分析详情。有效值:DEBUG、INFO、WARNING、ERROR |
项目规模配置文件
project_size 设置用于控制负载压缩的力度。一个参数即可调整所有内部上限——每个类的方法数、每个文件的符号数、目录聚合、路由上限、目录树深度和影响过滤。
| 配置文件 | 行数(参考) | 影响过滤 | 描述 |
|---|---|---|---|
"small" | 0–15k | medium | 上限较宽松——几乎包含所有内容。适用于需要完整可见性的中小型项目。 |
"medium" (默认) | 15k–50k | medium | 上限均衡,适用于大多数项目。 |
"large" | 50k+ | high | 强力压缩——差异中仅包含结构性或破坏性变更,更多地折叠目录,并采用更严格的符号上限。 |
详细配置文件值
| 常量 | 小 | 中 | 大 |
|---|---|---|---|
| 每个类的方法数 | 30 | 12 | 8 |
| 每个文件的符号数 | 40 | 20 | 10 |
| 目录聚合阈值 | 20 | 10 | 5 |
| 每层文件数(溢出前) | 15 | 8 | 5 |
| 聚合样本大小 | 5 | 4 | 3 |
| 路由控制器上限 | 30 | 15 | 10 |
| 每个控制器的路由数 | 15 | 8 | 5 |
| Go 处理程序上限 | 15 | 8 | 5 |
| 目录树深度 | 4 | 3 | 2 |
| 影响过滤 | medium | medium | high |
分析检测内容
环境变量
服务会使用特定于语言的模式扫描所有源文件,查找环境变量引用:
| 语言 | 检测到的模式 |
|---|---|
| JavaScript / TypeScript | process.env.VAR_NAME |
| Python | os.environ['VAR']、os.getenv('VAR') |
| Go | os.Getenv("VAR") |
| Ruby | ENV['VAR'] |
| Rust | env!("VAR")、var("VAR") |
它还会解析项目根目录下的 .env.example、.env.template 和 .env.sample 文件。
入口点
名为 index、main、app、server、program、bootstrap 或 startup 的文件(扩展名不限,只要受支持)会被识别为入口点,并标注推断出的角色(例如,“HTTP 服务引导程序”、“Electron 主进程”)。
公共 API 范围
Tree-sitter 会解析每个源文件并提取公共符号——类、函数、方法和接口——同时过滤掉私有或受保护成员以及以下划线开头的符号。对于类和结构体,也会包含构造函数(当其有参数时)和公共属性,从而揭示依赖注入模式和数据结构。接口方法始终会被纳入,因为它们定义了公共契约。以上信息用于检测各层的命名约定、DI 模式和导出契约。
架构提炼
对于大型代码库,工具会应用多种启发式方法,以确保负载始终包含高价值信息:
- 样板代码抑制 —
Migrations、bin、obj和Properties等常见目录会被自动标记,并在项目结构中折叠,避免它们使目录列表过于庞大。 - 低熵摘要 — 主要包含数据结构(DTO、实体)且没有逻辑方法的文件会被“精简”。工具不会逐一列出所有属性,而是提供高层摘要(例如,“包含 25 个 DTO 类”)。
- 语义聚类 — 聚合器会在目录层级对这些精简摘要进行分组,让使用结果的 AI 能通过单行高价值信息理解整个数据层。
- 指令嵌入 — 通过
generate_agents_md调用时,负载中会直接嵌入编写规则,让 AI agent 在处理代码架构之前先阅读“参与规则”。直接调用scan_codebase会返回纯数据,不附带任何约束。
致谢
AGENTS.md 格式基于开放的 agents.md 标准。
基于 MIT License 授权
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。