Knowerage
Knowerage — AI 분석 커버리지 관리
레거시 코드 분석 커버리지와 최신 상태를 추적하는 로컬 우선 MCP 서버입니다.
소스: github.com/MTimma/knowerage
빠른 시작
요구 사항: Node.js 18 이상 — npx가 PATH에 있어야 합니다 (Node.js에 포함된 npm과 함께 제공됨).
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은 선택 사항입니다: 설정되지 않았거나, 비어 있거나, 참(truthy) 값이 아닌 경우 파일 감시자는 기본적으로 꺼짐 상태입니다. 활성화하려면 1, true, yes 또는 on (공백 제거, 대소문자 구분 없음)으로 설정하십시오. 켜짐 상태일 때 서버는 knowerage/를 감시하며, 짧은 디바운스(debounce) 후 파일 시스템 변경 시 knowerage_reconcile_all을 실행합니다. 이는 모든 MCP 도구 호출 후 전체 조정(reconcile)을 실행하는 것과는 다릅니다. knowerage/ 하위의 파일 변경 사항에만 반응합니다. registry.json에 대한 레지스트리 쓰기는 감시자에 의해 무시되므로 저장 시 루프가 발생하지 않습니다.
Knowerage 사용 방법
MCP 서버가 구성된 후에는 일반 문장으로 어시스턴트와 대화하면 됩니다. 도구 이름을 외울 필요는 없습니다.
코드 분석 또는 문서화
관심 있는 파일, 클래스 또는 동작을 지정하십시오. 예:
Knowerage를 사용하여
main.java의 논리적 알고리즘 워크플로우를 분석해 줘.ETL 서비스의 데이터 엔티티 조정 및 버전 관리 로직을 분석해 줘.
어시스턴트는 knowerage/analysis/ 하위에 마크다운을 생성하거나 업데이트하고 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-