Skip to main content
Glama

registree

test PyPI Python License: MIT

코딩 에이전트를 위한 환각 방지 클래스 레지스트리로, MCP를 통해 제공됩니다.

코딩 에이전트는 기억에서 생성자 시그니처를 추측합니다. 존재하지 않는 키워드, 빠뜨린 필수 인자 — 그리고 그 추측의 대가로 TypeError와 디버깅 왕복을 치르게 됩니다. registree는 추측을 제거합니다. ast로 코드베이스를 탐색하고(절대 import하지 않음), 모든 클래스 정의의 레지스트리를 구축한 뒤, 에이전트가 호출을 작성하기 전에 시그니처를 검증할 수 있도록 MCP 도구로 제공합니다.

두 가지 원칙이 모든 도구에 적용됩니다:

  • 이름은 목록에 매핑됩니다. 중복된 클래스 이름은 모든 정의를 반환합니다. 서버는 조용히 첫 번째 일치 항목을 선택하지 않습니다.

  • 확신보다 정직함. 개방형 생성자(**kwargs, Pydantic extra=/alias=)는 그 계약을 알 수 없음으로 보고하며, 답변인 척하는 빈 목록으로 보고하지 않습니다.

작동 방식

  1. 스캔 — 소스 트리에 대한 AST 순회가 모든 클래스를 추출합니다: 생성자 매개변수(**kwargs 및 위치 전용 포함), 기본값이 있는 타입 필드, 상속, 독스트링. 분류는 전이적입니다: 프로젝트 자체 기본 클래스를 통해 라우팅된 모델도 여전히 Pydantic 모델로 인식됩니다.

  2. 제공 — 레지스트리는 JSON으로 캐시되고 MCP stdio를 통해 노출됩니다. 자체 유지됩니다: 첫 사용 시 생성되고, 스캔된 파일이 캐시보다 새로워질 때마다 재생성됩니다.

  3. 응답 — 에이전트는 추측하는 대신 사용 시점에 이를 쿼리합니다.

Related MCP server: codegraph-mcp

MCP 도구

도구

용도

get_signature

생성자 호출을 작성하기 전에 — 필수 인자, 허용되는 키워드, 중복 이름의 모든 정의

verify_snippet

코드 초안 작성 후 — 레지스트리와 대조하여 생성자 호출 확인

search_classes

정확한 클래스 이름이 확실하지 않을 때

list_duplicates

명시적 import로 모호성을 해소해야 하는 이름

get_usages

이름 변경 전에 — import 별칭(X as XDB)을 통한 모든 사용처

server_info

서버 상태 및 레지스트리 크기

설치

uv를 사용하면 설치가 필요 없습니다 — MCP 클라이언트가 uvx로 실행합니다. 직접 CLI 사용을 위해서는:

uv tool install registree   # or: pip install registree

Python 3.12+가 필요합니다.

에이전트에 연결

모든 MCP 클라이언트, JSON 구성 형식:

{
  "mcpServers": {
    "registree": {
      "command": "uvx",
      "args": ["registree", "serve", "--root", "/path/to/your/project"]
    }
  }
}

--root를 생략하면 클라이언트가 서버를 실행하는 디렉터리를 제공하며, 대부분의 MCP 클라이언트에서 이는 프로젝트 루트입니다.

에이전트 호환성

MCP 도구는 모든 MCP 클라이언트에서 작동합니다 — Claude Code, Claude Desktop, Cursor, Windsurf, Cline, Zed, VS Code Copilot 에이전트 모드, Gemini CLI, 그리고 stdio를 통해 MCP를 사용하는 모든 도구. 구조화된 도구 출력은 텍스트 콘텐츠만 읽는 클라이언트에서도 우아하게 저하됩니다.

훅 어댑터(hook-check, hook-regen)는 Claude Code의 훅 프로토콜을 대상으로 하며, 대기 중인 파일 편집을 가로채고 쓰기가 적용되기 전에 모델에 조언 피드백을 전달할 수 있습니다 — MCP 계층만으로는 제공할 수 없는 결정적 체크포인트입니다. docs/claude-code.md를 참조하세요.

이 프로토콜은 확산되고 있습니다: VS Code Copilot 에이전트 모드(미리 보기)는 동일한 형식을 읽습니다 — 동일한 이벤트, 동일한 stdin JSON, 심지어 .claude/settings.json까지 — 그리고 어댑터는 camelCase 필드 이름을 허용합니다. Codex CLI와 Gemini CLI는 포팅이 간단할 만큼 유사한 훅 계약을 사용합니다. 훅 시스템이 파일 편집을 적용 전에 가로챌 수 없는 에이전트(Cursor, 모델 피드백 없는 Windsurf, 아직 훅이 없는 Zed)도 전체 MCP 도구 세트를 사용할 수 있습니다 — 훅은 플랫폼이 지원하는 곳에 결정적 계층을 추가할 뿐입니다.

CLI

동일한 엔진을 직접 사용할 수 있습니다:

registree gen                 # build the registry
registree conflicts           # duplicate names: accepted layering vs smells
registree usages SomeClass    # every usage, alias-aware — run before renames
registree hook-check          # Claude Code PreToolUse adapter (advisory)
registree hook-regen          # Claude Code PostToolUse adapter (debounced)

registree conflicts는 진짜 문제가 되는 중복 이름에 대해서만 0이 아닌 종료 코드를 반환합니다 — 허용되는 ORM/도메인 계층 쌍은 통과합니다 — 따라서 첫날부터 CI에 연결해도 안전합니다.

레지스트리 캐시

기본적으로 .registree/registry.json에 위치합니다 — .gitignore에 .registree/를 추가하세요. 이를 다루는 모든 명령은 --registry-path를 받아 다른 위치에 둘 수 있습니다. 상대 경로는 프로젝트 루트를 기준으로 합니다.

개발

uv sync            # creates .venv, installs deps + dev tools
uv run pytest      # includes a real stdio JSON-RPC handshake test
uv run mypy src tests
uv run ruff check .
uv run black --check .

서버를 직접 실행합니다 (stdio를 통해 MCP를 사용하며, EOF에서 종료됩니다):

uv run registree

라이선스

MIT

Available Tools

6 tools
get_signatureA

Constructor contract AND callable surface for a class — EVERY definition if the name is duplicated. Call this before writing an instantiation or a method call: it reports the required arguments, the accepted keywords, honest null when a constructor is open-ended or unknowable, and the class's methods (inherited included, each with its kind and defining class) so a method name can be verified rather than guessed. When methods_complete is false an ancestor was unresolvable, so a listed method exists but an unlisted one still might.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
foundYes
ambiguousYes
class_nameYes
definitionsYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it does so thoroughly. It discloses important behavioral details: duplicate definitions are all returned, null is returned only in specific constructor cases, inherited methods are included with kind and defining class, and the methods_complete=false caveat about unresolvable ancestors is explicitly explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but information-rich, front-loading the core purpose and then detailing edge cases and caveats. It is slightly verbose and uses informal phrasing like 'honest null' and 'EVERY definition,' but every sentence adds meaningful behavioral information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's output surface, when to use it, duplicate-name behavior, and the methods_complete caveat, and an output schema is present. It does not address error cases or class_name resolution format, but for a single-parameter introspective tool it is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has only one parameter, class_name, with no parameter description, and the description does not explicitly document the expected format (e.g., fully qualified vs. simple name, case sensitivity). It does add some meaning by noting that duplicate names return every definition, but it leaves format and resolution details implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource ('a class') and a precise result: the constructor contract and callable surface, including required arguments, accepted keywords, methods, and inherited methods. It clearly distinguishes get_signature from siblings like search_classes, list_duplicates, verify_snippet, and get_usages by what it returns and when it is meant to be called.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance: 'Call this before writing an instantiation or a method call.' It conveys the intended use context clearly but does not explicitly name alternative tools or state when not to use this tool, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_usagesA

Every place a class name is used — imports, inheritance, instantiations, annotations, references — including usages through import aliases (from pkg.db.models import X as XDB). Run this BEFORE a rename to enumerate what must change.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
class_nameYes
include_testsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
totalYes
usagesYes
aliasesYes
truncatedYes
class_nameYes
files_affectedYes

TDQS

A4.4/5.0
Behavior4/5

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 that the tool includes usages through import aliases and that it should be run before a rename, which implies it is a read-only operation. However, it does not mention pagination or the limit parameter's behavior, which is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the core purpose, and every sentence adds value. It uses a clear example of import aliases and a practical instruction (run before rename) without unnecessary fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (3 parameters, output schema present), the description covers the main use case and provides actionable guidance. It lacks details on limit and include_tests, but the output schema likely clarifies return values. The description is sufficient for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the class_name parameter implicitly by describing what usages are found, but it does not explain the limit or include_tests parameters. The description adds some context for class_name but leaves the other two parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to find every place a class name is used, listing specific usage types (imports, inheritance, instantiations, annotations, references) and including import aliases. It distinguishes itself from siblings by focusing on usages rather than searching or listing classes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to run this tool BEFORE a rename to enumerate what must change, providing clear when-to-use guidance. It also implies when not to use it (e.g., for searching classes, which is handled by search_classes).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_duplicatesA

Duplicate class names, split into accepted layered pairs (ORM model + domain model sharing a name across layers) and genuine smells. Names listed here always need an explicit import to disambiguate.

ParametersJSON Schema
NameRequiredDescriptionDefault
smells_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
smellsYes
layeredYes
alias_conventionYes
total_duplicate_namesYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the responsibility for behavioral transparency. The description explains the classification outcome (accepted layered pairs vs genuine smells) and the consequence (explicit import needed). It does not disclose details like return format or whether it filters based on the 'smells_only' parameter beyond what the schema implies, but the behavior is reasonably described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, concise and front-loaded with the core purpose. It includes necessary context (accepted layered pairs definition) and consequence (explicit import). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is relatively simple with one optional parameter, and the description covers the purpose and outcome. An output schema exists, so the description does not need to explain return details. The main gap is the lack of explanation for the 'smells_only' parameter, but overall it is adequate for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter, 'smells_only' with a default of false. Schema description coverage is 0%, so the description must compensate. The description does not explain the parameter's effect (e.g., filtering results to only genuine smells). The baseline is 3 given the single parameter with default, but the description adds little about its semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: listing duplicate class names and distinguishing between accepted layered pairs and genuine smells. It also explains the implication (explicit import needed). Distinguished from siblings because it focuses on duplicates, while siblings like search_classes or get_usages serve different functions, but does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: when checking for duplicate class names and needing to know which duplicates are acceptable vs smells. It provides the criterion for accepted layered pairs (ORM model + domain model sharing a name across layers). It doesn't explicitly state when not to use it, but the purpose is clear enough to guide selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_classesA

Find classes by name fragment (case-insensitive), falling back to fuzzy matching when nothing contains the fragment. Use this when unsure of the exact class name.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
hitsYes
queryYes
truncatedYes
total_matchesYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavior burden. It discloses case-insensitivity and the fuzzy-match fallback, which are non-obvious and valuable. It does not mention result ordering or empty-result behavior, but the presence of an output schema likely covers return structure. It adds meaningful behavioral insight beyond the bare schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences. The first front-loads the primary action and key behaviors (case-insensitive, fuzzy fallback), and the second gives usage guidance. No filler or redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward search tool with an output schema present and only two params, the description is nearly sufficient. It explains the search behavior and primary use caseable gaps: it doesn't mention behavior when no results match beyond the fallback, or any limit semantics. These are minor for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It implies 'query' is a name fragment via 'Find classes by name fragment', giving some meaning to that parameteraine, but it never mentions the 'limit' parameter or its semantics. The description covers only one of two parameters, leaving the other undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (Find), the resource (classes), and the search mechanism (name fragment, case-insensitive). It also distinguishes itself from siblings by framing the operation as a fuzzy search fallback, which an agent can immediately differentiate from listing or other operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit when-to-use guidance: 'Use this when unsure of the exact class name.' However, it does not explicitly name alternatives or state when NOT to use it. This leaves exclusion logic to the agent's judgment, preventing a top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

server_infoA

Report server status, the project it serves, and registry size.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
rootYes
statusYes
versionYes
registry_classesYes
registry_generated_atYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must carry the full transparency burden. 'Report' implies a read-only, non-mutating behavior, which is helpful, but it does not specify whether it hits a live endpoint, any error semantics, or output shape. It is not misleading, but it is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with a front-loaded verb and concise object list. There is no filler, and all three reported elements are enumerated efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, the presence of an output schema, and the high-level nature of the report, the description is fully adequate for an agent to select and invoke this tool. It covers the main informational content, and no missing detail would confuse a capable agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero properties, so the description does not need to explain parameters. It profitably defines what the tool reports (status, project, registry size) and thereby gives the agent meaningful context beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Report') with a concrete resource ('server') and specifies the exact output categories: status, project, and registry size. This distinguishes it unambiguously from the code-focused sibling tools such as get_signatures or list_duplicates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied—call this when you need server status, the associated project, or registry size—but no explicit guidance is given about when to prefer it over alternatives or what action it might precede. There are no usage conditions, exclusions, or context cues beyond the obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_snippetA

Check a draft snippet's constructor calls against the registry before writing it to a file. Pass the intended file_path when known — imports in the snippet and the target location both help disambiguate duplicated names.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
file_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
noteYes
errorYes
findingsYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It describes a 'check' but does not explicitly state whether it is read-only (no side effects), what happens on success/failure, or if any state is modified. The note about disambiguation is useful, but the lack of explicit side-effect or return behavior leaves room for assumptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, with only two sentences. The first sentence states the purpose and timing, and the second adds a key parameter hint. No redundant or unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, 0% schema coverage), the description adequately explains the main purpose, the file_path parameter's purpose and when to use it, and the context (before writing). It does not describe the return value, but an output schema exists, so that is presumably covered there. The description is sufficient for an AI agent to understand when and how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description adds meaning to the 'file_path' parameter by explaining its role in disambiguation. However, it does not clarify the 'code' parameter beyond context (it is inferred as the snippet content). The description compensates partially but not fully for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: verifying a draft snippet's constructor calls against a registry before writing to a file. It uses a specific verb ('check') and a specific resource ('draft snippet's constructor calls against the registry'). It distinguishes from sibling tools (e.g., get_signature, list_duplicates) by focusing on validation pre-write, though the term 'check' could be more explicit about the action's outcome.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage context by saying 'before writing it to a file' and instructs to pass the file_path when known, explaining that imports and target location disambiguate duplicates. However, it does not explicitly mention when not to use this tool or compare it to alternatives, so it earns a 4 rather than 5.

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.

  1. 1 tool updatev0.3.0
    • Changedget_signature4 fields changed
      • addedOutput schema / $defs / Definition / properties / methods
        Added value: +{
        +  "items": {
        +    "$ref": "#/$defs/MethodSummary"
        +  },
        +  "title": "Methods",
        +  "type": "array"
        +}
      • addedOutput schema / $defs / Definition / properties / methods_complete
        Added value: +{
        +  "title": "Methods Complete",
        +  "type": "boolean"
        +}
      • changedOutput schema / $defs / Definition / required
        Previous value: -[
        -  "file_path",
        -  "line_number",
        -  "type",
        -  "module",
        -  "file_type",
        -  "parent_classes",
        -  "summary",
        -  "init_signature",
        -  "fields",
        -  "required_arguments",
        -  "accepted_keywords"
        -]New value: +[
        +  "file_path",
        +  "line_number",
        +  "type",
        +  "module",
        +  "file_type",
        +  "parent_classes",
        +  "summary",
        +  "init_signature",
        +  "fields",
        +  "methods",
        +  "methods_complete",
        +  "required_arguments",
        +  "accepted_keywords"
        +]
      • addedOutput schema / $defs / MethodSummary
        Added value: +{
        +  "properties": {
        +    "accepts_kwargs": {
        +      "title": "Accepts Kwargs",
        +      "type": "boolean"
        +    },
        +    "defined_in": {
        +      "title": "Defined In",
        +      "type": "string"
        +    },
        +    "is_async": {
        +      "title": "Is Async",
        +      "type": "boolean"
        +    },
        +    "kind": {
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "name": {
        +      "title": "Name",
        +      "type": "string"
        +    },
        +    "returns": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "title": "Returns"
        +    },
        +    "signature": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "title": "Signature"
        +    }
        +  },
        +  "required": [
        +    "name",
        +    "signature",
        +    "kind",
        +    "is_async",
        +    "accepts_kwargs",
        +    "returns",
        +    "defined_in"
        +  ],
        +  "title": "MethodSummary",
        +  "type": "object"
        +}
  2. 6 tool updatesv0.1.0
    • First observedget_signature
    • First observedget_usages
    • First observedlist_duplicates
    • First observedsearch_classes
    • First observedserver_info
    • First observedverify_snippet

TDQS

A4.2/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a clearly distinct concern: server status, class signature lookup, snippet validation, usage enumeration, name search, and duplicate reporting. Even the two validation-adjacent tools differ in scope (single class vs. full snippet), so an agent can reliably pick the right one.

Naming Consistency4/5

Most tool names follow a clear verb_noun pattern: get_signature, get_usages, search_classes, list_duplicates, verify_snippet. The single outlier is server_info, which lacks a verb and would fit better as get_server_info, but the overall convention is still consistent enough to be predictable.

Tool Count5/5

Six tools is a well-scoped set for a read-only code intelligence registry. Each tool covers a necessary mode of interaction without redundancy or bloat.

Completeness5/5

The tool surface covers the full workflow: discover classes, resolve duplicates, inspect signatures, validate snippets, and enumerate usages before refactoring. There are no obvious dead ends or missing operations for the stated purpose.

Maintenance

ActivitySlowing
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLM agents to efficiently understand and navigate a codebase by providing semantic search over symbols and a reference graph, replacing expensive grep/glob calls with structured tools like definition lookup, caller/callee queries, and change-impact analysis.
    18 PyPI
    3
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables coding agents to query a local-first code intelligence graph of Python repositories—covering functions, classes, modules, and their relationships—via MCP, supporting subgraph retrieval, caller lookup, and impact analysis without re-reading the codebase.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Provides coding agents with a compact map of a TypeScript/TSX codebase, enabling direct answers about symbol locations, imports, dependencies, and references while reducing token usage.
    5
    3 npm
    1
    MIT