Knowerage
Knowerage — AI 分析覆盖率管理
本地优先的 MCP 服务器,用于跟踪遗留代码的分析覆盖率和新鲜度。
源码: github.com/MTimma/knowerage
快速开始
要求: Node.js 18 或更高版本 — npx 必须在你的 PATH 中(它随 npm 一起提供,而 npm 包含在 Node 中)。
Related MCP server: Atlas
MCP 服务器配置
在你的 MCP 主机期望定义服务器配置的地方注册 Knowerage(例如,某些客户端使用 .cursor/mcp.json 或 .vscode/mcp.json;其他客户端使用环境变量或 UI——请遵循你所使用主机的文档)。使用相同的服务器条目格式:
{
"mcpServers": {
"knowerage": {
"command": "npx",
"args": ["@mtimma/knowerage"],
"env": {
"KNOWERAGE_WORKSPACE_ROOT": "${workspaceFolder}",
"KNOWERAGE_AUTO_FULL_RECONCILE": "true"
}
}
}
}如果你的主机不展开 ${workspaceFolder} 变量,请将其替换为你的项目根目录。
KNOWERAGE_AUTO_FULL_RECONCILE 是可选的:当未设置、为空或不是真值时,文件监视器默认为关闭。设置为 1、true、yes 或 on(修剪空格,不区分大小写)以启用。当开启时,服务器会监视 knowerage/ 目录,并在短暂的防抖动后,在文件系统发生更改时运行 knowerage_reconcile_all。这与在每次 MCP 工具调用后运行完整对账不同——它仅对 knowerage/ 下的文件更改做出反应。监视器会忽略对 registry.json 的注册表写入,因此保存操作不会导致循环。
如何使用 Knowerage
配置好 MCP 服务器后,你可以用正常的句子与你的助手交流。你不需要记住工具名称。
分析或记录代码
指出你关心的文件、类或行为。例如:
使用 Knowerage 分析
main.java中的逻辑算法工作流。分析 ETL 服务中的数据实体对账和版本控制逻辑。
助手会在 knowerage/analysis/ 下创建或更新 markdown 文件,并在 knowerage/registry.json 中记录覆盖率(见下文的工作原理)。
覆盖率和差距(同一项目,后续聊天或其他智能体)
当你树中已经有分析内容时,你可以询问:
以百分比计算,我们的分析覆盖了多少代码?
这个代码库的哪一部分尚未分析?
Knowerage 会根据注册表和覆盖率辅助工具(例如概览、每个文件的状态和陈旧列表)来回答这些问题,而不是对仓库进行模糊的猜测。
其他方法
通过 npm 安装
npx @mtimma/knowerage或从源码构建
cargo build --release
./target/release/knowerage-mcp工作原理
AI 智能体创建带有 YAML 前置元数据的分析
.md文件,声明源文件和覆盖的代码行范围注册表 (
knowerage/registry.json) 通过 SHA-256 哈希跟踪分析记录以确保新鲜度MCP 工具公开创建、对账、查询和导出操作
智能体说“分析 X” → 自动运行完整工作流(创建 → 对账 → 记录)
注册表文件格式 (knowerage/registry.json)
磁盘上的格式是一个 JSON 对象,其键是分析路径(字符串)。每个值都是一条记录(参见 contracts/contracts.md)。包含两条记录的完整示例如 examples/registry.sample.json 所示。
flowchart TB
subgraph file["knowerage/registry.json"]
O["Top-level JSON object"]
O --> K["Each key: analysis markdown path, e.g. knowerage/analysis/.../topic.md"]
K --> V["Value: one RegistryRecord"]
end
subgraph rec["RegistryRecord fields"]
ap["analysis_path · source_path"]
cr["covered_ranges: [[start,end], ...]"]
h["analysis_hash · source_hash (sha256:… )"]
t["record_created_at · record_updated_at (ISO 8601)"]
st["status: fresh | stale_doc | stale_src | missing_src | dangling_doc"]
end
V --> rec分析 .md 文件的元数据在合同文档(元数据模式)中单独指定,而不是在 registry.json 内部。
MCP 工具
工具 | 用途 |
| 创建/更新分析文档 |
| 解析并验证前置元数据 |
| 对账单条分析记录 |
| 全量重新扫描/重建 |
| 已分析 vs 缺失范围 |
| 列出陈旧/有问题的记录 |
| 完整注册表快照(与 |
| 树状/分组覆盖率 |
| 导出快照 (JSON/YAML/TXT/HTML) |
| 选定分析的分块导出 ( |
项目结构
knowerage/ # Created per-project
├── analysis/ # Analysis markdown files
│ └── **/*.md
└── registry.json # Coverage registry
src/ # Rust MCP server
├── main.rs
├── lib.rs
├── types.rs
├── parser.rs
├── registry.rs
├── mcp.rs
├── security.rs
└── export.rs文档
用户入门 — 设置、配置、典型用法
INSTRUCTIONS.md — MCP 智能体指令
合同 — 模式和 API 合同(注册表 + 前置元数据)
注册表 JSON 示例 —
registry.json内容示例
安全性
所有路径均针对工作区根目录进行验证
拒绝路径遍历 (
..)注册表原子写入(防崩溃)
分析文件或报告中不包含任何机密信息
基于 SHA-256 哈希的新鲜度检查(在 git pull 后依然有效)
许可证
MIT — 版权所有 Martins Timma。
本项目的部分内容由生成式 AI 编码助手编写或优化。设计、安全敏感行为和发布均经过人工审核。
Available Tools
11 toolsknowerage_coverage_overviewA
Batch coverage overview for all source files. Returns per-source coverage percentage, analyzed/missing ranges, range attribution, stale records, and project-wide file/line totals. Uses fresh records only for coverage calculation. Optional extensions filter applies to sources, stale list, and project scan.
| Name | Required | Description | Default |
|---|---|---|---|
| extensions | No | File extensions without leading dot (e.g. java, xml). Omit or pass [] to use defaults: java, xml, properties, gradle, kt, groovy, scala, kts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides good behavioral detail: it reads data, uses fresh records, and the extensions filter applies to sources, stale list, and project scan. It doesn't mention side effects, which is fine as it's an overview tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the tool's purpose and outputs, with no redundant phrasing. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description lists key return fields. The single parameter is fully described. Misses potential details like pagination or data range limits, but overall complete for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, but the description adds default values and examples for the extensions parameter, clarifying usage beyond the schema's basic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a batch coverage overview for all source files, listing specific outputs (per-source coverage, ranges, stale records, totals). It distinct from siblings like knowerage_get_file_status or knowerage_list_stale.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it uses fresh records and optional extensions filter, but does not explicitly state when to use this tool versus alternatives like knowerage_get_file_status or knowerage_list_stale. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowerage_create_or_update_docA
PRIMARY tool for persisting legacy/source code analysis: create or update an analysis markdown file under knowerage/analysis/ with YAML frontmatter (source path, covered line ranges, dates). Use this whenever the user asks to analyze, document, or explain a source file and Knowerage is in the tool list—do not use generic file-write tools alone for knowerage analysis paths, or the registry will not stay consistent. Follow with knowerage_reconcile_record on the same analysis_path.
| Name | Required | Description | Default |
|---|---|---|---|
| analysis_path | Yes | Relative path for the analysis markdown file | |
| content | Yes | Markdown body content for the analysis | |
| covered_lines | Yes | Array of [start, end] line ranges | |
| source_path | Yes | Relative path to the source file being analyzed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the file format (markdown with YAML frontmatter including source path, covered line ranges, and dates) and the create-or-update behavior. However, it does not specify potential side effects (e.g., overwriting existing files) or error conditions, slightly reducing transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with three sentences covering purpose, usage guidelines, and follow-up. It is front-loaded with the primary role and avoids unnecessary words, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 required parameters, no output schema, and no annotations, the description covers the main purpose and usage context but omits details about the return value or what happens on errors. The mention of YAML frontmatter with 'dates' is ambiguous (not a parameter), and the follow-up step suggests some output but it's not described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add significant meaning beyond the schema; it restates the path convention and YAML frontmatter details but offers no new insights into parameter usage or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is the PRIMARY tool for persisting legacy/source code analysis, specifically creating or updating an analysis markdown file under knowerage/analysis/ with YAML frontmatter. It distinguishes itself from generic file-write tools, making its purpose and scope very clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('whenever the user asks to analyze, document, or explain a source file and Knowerage is in the tool list') and when not to ('do not use generic file-write tools alone for knowerage analysis paths'). Also provides a follow-up step ('Follow with knowerage_reconcile_record on the same analysis_path'), giving comprehensive guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowerage_generate_bundleA
Export selected analysis markdown files into chunked NotebookLM-style bundles under output_dir: writes toc.md + combined.md for part 1, toc_N.md + combined_N.md for further parts when size limits require splitting, plus manifest.json (files, errors, part metadata). Every analysis_paths entry is validated under the workspace (no traversal). Per-file and per-part size limits apply (see contracts).
| Name | Required | Description | Default |
|---|---|---|---|
| analysis_paths | Yes | Relative paths to analysis .md files (workspace-rooted; order preserved) | |
| output_dir | Yes | Relative directory under workspace where toc*.md, combined*.md, and manifest.json are written |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behaviors: writes multiple files, validates paths against workspace, splits into parts based on size limits, and produces a manifest. It references contracts for limits but omits error handling details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, front-loaded with the main purpose. It is concise but could be restructured for more immediate scanning of key points like output files and validation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only two parameters and no output schema, the description covers output file structure, splitting logic, path validation, and mentions size limits via contracts. It is reasonably complete for a file generation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning: analysis_paths are relative .md files with order preserved, output_dir is relative and determines file names. It explains how parameters influence output structure (e.g., part suffixing).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports analysis markdown files into chunked bundles (like NotebookLM), specifying output files and splitting logic. It distinguishes from sibling tools that handle coverage, registry, or individual document operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for exporting analysis files as bundles and mentions validation and limits, but does not explicitly state when not to use or compare to sibling alternatives like knowerage_create_or_update_doc.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowerage_get_file_statusA
Per-source coverage: total lines, analyzed vs missing ranges, and which analysis paths claim them. Prefer this over guessing from open files when answering 'what is documented for this source?' while Knowerage is enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| source_path | Yes | Relative path to the source file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description fully discloses that it returns coverage metrics and analysis paths. This is adequate for a read-only status query, though it could mention that it performs no mutations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first defines output, second gives usage guidance. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple input and no output schema, description sufficiently explains what the tool returns. Lacks mention of error handling or prerequisites, but sufficient for a status check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the single parameter fully (100% coverage) with a clear description. The tool description adds no extra detail beyond the schema, so baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool returns per-source coverage details (total lines, analyzed vs missing ranges, analysis paths). It also contrasts with guessing, distinguishing it from siblings like knowerage_coverage_overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using this tool over guessing when asked what is documented for a source, providing clear context for its use. Does not list alternatives or when-not-to-use, but strong enough for a straightforward status tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowerage_get_treeC
Get a tree view of analysis records grouped by directory
| Name | Required | Description | Default |
|---|---|---|---|
| group_by | No | directory | |
| root | No | Root directory prefix to filter by |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only states the action ('Get a tree view') without mentioning side effects, read-only nature, or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words, highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool with two parameters but lacks description of the tree structure return value, which is important given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal value beyond the schema; it echoes 'grouped by directory' for group_by but doesn't explain root filtering beyond what the schema already provides. Schema coverage is 50% and description does not compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a tree view grouped by directory, but it does not distinguish from siblings like knowerage_coverage_overview or knowerage_list_registry which also deal with analysis records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus its siblings; no mentions of context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowerage_list_registryA
Return the full analysis coverage registry in one structured JSON response. USE THIS when you need an inventory of which source files are documented, where the analysis markdown lives, which line ranges are claimed, and freshness (fresh/stale_doc/stale_src/missing_src/dangling_doc). The records object is the same shape as the entire knowerage/registry.json file (sorted keys for stable reading). Call early when planning documentation work, finding gaps, or mapping analysis paths to sources—instead of opening registry.json by hand. Optional filters: analysis_path_prefix narrows by analysis key; statuses limits to given status values (same strings as in each record). After reconcile_record/reconcile_all, call again if you need the latest snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| analysis_path_prefix | No | If non-empty, only include records whose analysis path key starts with this prefix (e.g. knowerage/analysis/auth/) | |
| statuses | No | If set, only include records whose status is one of these values; omit for all statuses |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It describes the output shape (same as registry.json, sorted keys, statuses) and clarifies it's a snapshot. However, it lacks an explicit statement that the operation is read-only and side-effect-free, which would be ideal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph but efficiently uses sentences to convey purpose, usage, and filters. It is front-loaded with the core purpose. While slightly long, it remains concise without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must describe the return. It covers the structure and key fields (records object, sorted keys, status). Input parameters are fully described. The description is sufficient for an agent to use the tool correctly, though more details on output fields would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3. The description adds value by explaining that analysis_path_prefix narrows by analysis key and that statuses limits to given values using the same strings as in records, going beyond the schema's enum list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it returns the full analysis coverage registry in a structured JSON response. It details the content (source files, analysis markdown, line ranges, freshness) and distinguishes from siblings by specifying its comprehensive inventory nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly advises when to use: when needing an inventory, planning doc work, finding gaps, or mapping paths. It also suggests not opening registry.json by hand and recommends calling after reconcile for latest snapshot, providing explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowerage_list_staleB
List registry records filtered by staleness status
| Name | Required | Description | Default |
|---|---|---|---|
| statuses | No | Filter by these statuses; omit to list all non-fresh |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the filter behavior and default (list all non-fresh when parameter omitted) but does not disclose whether the tool modifies data, requires permissions, has rate limits, or other behavioral traits. Minimal transparency beyond schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It effectively communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should explain return values and define staleness statuses. It does not cover the output format or the meaning of 'staleness statuses' (e.g., 'stale_doc', 'missing_src'). Incomplete for a filtering tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter with description, providing 100% coverage. The description adds context by summarizing the filter as 'by staleness status', and the parameter description explains default behavior when omitted. This adds value beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and resource 'registry records' with a filter by 'staleness status'. It distinguishes from sibling tool 'knowerage_list_registry' which likely lists all records. However, it does not define what 'staleness status' means, slightly reducing specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when needing records by staleness status, but does not explicitly state when to use this tool versus alternatives like 'knowerage_list_registry'. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowerage_parse_doc_metadataB
Parse YAML frontmatter from an analysis markdown file
| Name | Required | Description | Default |
|---|---|---|---|
| analysis_path | Yes | Relative path to the analysis file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behaviors such as error handling, return values, or side effects. Minimal behavioral info beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise, but could be expanded to include more context without becoming verbose. Front-loads the key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations; the description fails to mention return value, error cases, or file requirements. Given low complexity, still incomplete for an agent to reliably use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage for the single parameter 'analysis_path', with a description that matches the tool's purpose. The description adds no additional semantic meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Parse' and the resource 'YAML frontmatter from an analysis markdown file', distinguishing it from sibling tools that create, update, or list files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'knowerage_create_or_update_doc' or 'knowerage_get_file_status'. Does not specify prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowerage_reconcile_allA
Rescan all analysis markdown files matching the glob and rebuild registry entries. Use after git pull, bulk edits, or when the registry may be empty or out of date; prefer reconcile_record when only one file changed.
| Name | Required | Description | Default |
|---|---|---|---|
| analysis_glob | No | Glob pattern for analysis files (default: knowerage/analysis/**/*.md) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool rescans files and rebuilds registry entries, but does not disclose potential side effects (e.g., overwriting existing entries, performance impact, idempotency). The description is adequate for the core behavior but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero wasted words. The main action is front-loaded, and the alternative is mentioned concisely. Structure is optimal for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers the purpose, usage guidelines, and parameter context. It does not mention a return value or confirmation, but that is acceptable given the lack of output schema. Slight room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, with a detailed schema description. The tool description adds context that the glob is for 'analysis markdown files' and provides the default value, which is useful but not critical. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool rescans analysis markdown files matching a glob and rebuilds registry entries. It uses specific verb-resource combination and distinguishes from the sibling 'knowerage_reconcile_record' by noting when to prefer the alternative. Purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides usage context: 'Use after git pull, bulk edits, or when the registry may be empty or out of date.' Also gives exclusion: 'prefer reconcile_record when only one file changed.' This is exemplary guidance for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowerage_reconcile_recordA
MANDATORY after every create_or_update_doc (or manual edit) to one analysis file: reconciles that analysis into knowerage/registry.json (hashes, covered_ranges, freshness). Call immediately after writing analysis content so coverage is recorded; skipping this leaves the registry wrong or stale.
| Name | Required | Description | Default |
|---|---|---|---|
| analysis_path | Yes | Relative path to the analysis file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool updates the registry (destructive write) and affects hashes, coverage, and freshness. While it could detail side effects like overwriting existing data, it adequately informs the agent about the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states purpose and requirement, the second provides usage guidance and consequences. Key word 'MANDATORY' is front-loaded for immediate attention.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one required parameter, no output schema, and no annotations, the description sufficiently covers when to invoke, what it does, and why it is important. It does not describe return values, which is acceptable without output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with parameter 'analysis_path' described as 'Relative path to the analysis file'. The tool description does not add significant meaning beyond confirming it targets a single analysis file. Baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'reconciles' and the resource 'analysis file into knowerage/registry.json', and specifies the recorded elements (hashes, covered_ranges, freshness). It distinguishes from sibling tools like knowerage_reconcile_all by targeting a single analysis file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states it is 'MANDATORY after every create_or_update_doc (or manual edit)' and advises calling 'immediately after writing analysis content'. It also warns that skipping leaves the registry wrong or stale, providing clear context on when to use and consequences of misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registry_export_reportB
Export the registry as a report file in json, yaml, txt, or html format
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | Output format | |
| output_path | Yes | Relative path for the output file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It only mentions 'export', which implies file creation but does not specify whether the filename will be overwritten, if there are size limits, or if any registry modifications occur. The description is too minimal for a mutation-like operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core purpose without redundancy. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple export tool with two parameters and no output schema, the description is adequate but not comprehensive. It lacks details about the content of the report file and potential side effects, which are important for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already describes the parameters. The description confirms the format enum and mentions output_path as a relative path, but adds no additional meaning beyond the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: export the registry as a report file, and lists the supported formats (json, yaml, txt, html). This distinguishes it from sibling tools like 'knowerage_list_registry' which lists items, and 'knowerage_reconcile_all' which reconciles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, use cases, or scenarios where other tools would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.1- Added
knowerage_coverage_overview - Added
knowerage_list_registry
9 tool updates
v0.1.0- First observed
knowerage_create_or_update_doc - First observed
knowerage_generate_bundle - First observed
knowerage_get_file_status - First observed
knowerage_get_tree - First observed
knowerage_list_stale - First observed
knowerage_parse_doc_metadata - First observed
knowerage_reconcile_all - First observed
knowerage_reconcile_record - First observed
registry_export_report
TDQS
Scored across 11 tools
Each tool targets a distinct operation: coverage overview per batch, per-source status, registry listing with filters, doc creation/update, reconciliation, bundle generation, tree view, metadata parsing, stale listing, and export. Even overlapping tools like list_registry and list_stale are clearly differentiated by filters and purpose.
All tools use the 'knowerage_' prefix except for 'registry_export_report', which breaks the pattern. Within the prefixed group, naming follows a consistent verb_noun style (e.g., get_file_status, create_or_update_doc, reconcile_record). The one outlier lowers the score.
With 11 tools, the server covers the core operations of a documentation coverage system (CRUD-like, reconciliation, reporting, exploration) without being excessive. Each tool serves a clear purpose and none feel redundant.
The tool surface covers creation/update, reconciliation (single and bulk), listing, coverage overview, bundle generation, metadata parsing, and export. Missing a direct delete tool for docs, but the create_or_update tool may handle updates. Overall, agents can perform most tasks without dead ends.
Maintenance
Related MCP Connectors
MCP Server for an Agent Task Marketplace
DocBase MCP server for AI agents
MCP server for querying Forkast documentation
Repository knowledge graph MCP server for codebase understanding and debugging.
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceMCP server for collecting code from files and directories into a single markdown document.28MIT
- AlicenseNot gradedqualityAmaintenanceLocal-first MCP server for querying multi-repo engineering documentation artifacts from a SQLite corpus.7 npmAGPL 3.0
- AlicenseNot gradedqualityCmaintenanceLocal-first MCP server that provides project context, verification gates, and structured tools for coding agents to discover knowledge, run diagnostics, and execute allowlisted commands within a repository.9 npmMIT
- FlicenseNot gradedqualityDmaintenanceLocal MCP server that indexes documentation from URLs/files into a vector database, enabling coding agents to search and use up-to-date library and API documentation.1-