Skip to main content
Glama
marcmendez

Aplomo MCP Server

by marcmendez

Aplomo

One repository standard for Cursor, Codex, and Claude Code.

CI Python 3.12+ MIT

Coding agents are good at writing code. They are less reliable at proving that a new service, class, or module belongs in this repository instead of duplicating something that already exists.

Aplomo gives Cursor, Codex, and Claude Code the same repository-aware workflow. You describe the change normally; Aplomo finds the canonical design patterns, searches for reusable implementations, requires a justification before another abstraction is introduced, and reviews the final diff for duplication and missing validation.

"Add invoice retries and tests"
              │
              ▼
     Cursor / Codex / Claude Code
              │
              ├─ one repository preflight
              │  pattern catalog · bounded search · architecture
              ├─ reuse candidate or justify a new abstraction
              ├─ implementation with focused tests
              └─ duplicate · boundary · test · secret review
                         │
                         ▼
              your repository remains in control

Aplomo does not proxy prompts, choose a model, or upload repository contents. Its current MCP tools are read-only and its hook events stay in a local, gitignored file.

Why teams use it

  • One source of truth. Put engineering rules in .engineering/; Aplomo generates the native files each supported agent expects.

  • Normal requests. No prompt prefix, wrapper chat, or new task syntax.

  • Less integration drift. The same preflight and final review follow a request when a developer changes coding assistants.

  • Pattern reuse first. The agent sees relevant implementations before inventing another abstraction.

  • No-copy gate. A new class, service, interface, or module must reuse a candidate or state why its responsibility or lifecycle is materially different.

  • Design patterns are repository-owned. .engineering/patterns.md records canonical implementations and when they should be extended.

  • Bounded reads. Every repository search reports its file and character budget, actual consumption, and whether the result was truncated.

  • Safe adoption. Existing configuration that Aplomo does not own is preserved and reported instead of silently overwritten.

  • Local by default. Repository analysis and lifecycle metadata stay on the machine or cloud agent running the task.

Related MCP server: mcp-codebase-intelligence

Install in a repository

Requirements: Python 3.12 or newer, Git, and either uv or pipx.

uv tool install git+https://github.com/marcmendez/aplomo.git
cd your-repository
aplomo init --agents cursor codex claude

With pipx, replace the first command with:

pipx install git+https://github.com/marcmendez/aplomo.git

Restart or reopen the coding assistant so it loads the new project integration. From then on, make the same requests you already make:

Add pagination to the users endpoint and cover the edge cases with tests.

The generated launcher is pinned to Aplomo's isolated Python environment. It does not rely on the PATH inherited by a desktop app.

Choose only the agents you use

aplomo init --agents cursor
aplomo init --agents codex claude

Agent

Native integration

Guide

Cursor

project rule, MCP server, lifecycle hooks

Cursor setup

Codex

AGENTS.md, skill, MCP server, lifecycle hooks

Codex setup

Claude Code

CLAUDE.md, skill, MCP server, lifecycle hooks

Claude Code setup

Cursor Cloud

Cursor Cloud runs in its own VM. It does not inherit the Aplomo installation or MCP process from your laptop.

  1. Commit .engineering/ and the generated Cursor files.

  2. In the cloud environment setup, install Aplomo and regenerate the machine-local launcher:

    uv tool install git+https://github.com/marcmendez/aplomo.git
    aplomo install
  3. Add an stdio MCP server in the Cursor dashboard or Cloud Agent API with:

    command: ./.engineering/aplomo-runtime
    args:    mcp --root .

The command runs inside the Cloud VM and reads that checkout only. Cursor documents the VM model and supported MCP transports in its Cloud Agent capabilities and Cloud Agent API.

What gets installed

.engineering/config.yaml is the source of truth; everything else is a native adapter or local runtime file.

your-repository/
├── .engineering/
│   ├── config.yaml              # agents and enabled integrations
│   ├── architecture.yaml        # boundaries and repository rules
│   ├── patterns.md              # canonical patterns and extension rules
│   ├── decisions/               # architecture decisions
│   ├── aplomo-runtime           # machine-local launcher, gitignored
│   └── events.jsonl             # local lifecycle events, gitignored
├── .cursor/                     # Cursor adapters
├── .codex/                      # Codex adapters
├── .claude/                     # Claude Code adapters
├── .agents/skills/              # portable agent skill
├── AGENTS.md                    # managed Aplomo section for Codex
└── CLAUDE.md                    # managed Aplomo section for Claude Code

Change .engineering/config.yaml, then regenerate rather than editing generated adapters:

aplomo install

The reuse-before-create contract

Aplomo treats a new abstraction as a decision, not as the default output of a coding agent.

  1. aplomo_prepare_change returns the repository map, relevant architecture, the pattern catalog, and a bounded search for existing implementations.

  2. The agent starts from the canonical implementation listed in .engineering/patterns.md when one applies.

  3. Before adding a class, service, interface, or module, aplomo_validate_abstraction searches for candidates.

  4. If candidates exist, the result is needs_justification. The agent must extend one or explain the materially different responsibility or lifecycle.

  5. aplomo_review_diff checks tracked and untracked files for duplicate class/interface/type declarations, missing tests, possible secrets, and excessive diff size.

This does not pretend that lexical analysis can prove two implementations are semantically identical. It creates an explicit, reviewable gate at the point where duplication usually enters the codebase.

See Patterns, abstraction gates, and read budgets for the status contract, operating guidance, and known limits.

Maintain the pattern catalog

Each entry in .engineering/patterns.md names the responsibility, canonical implementation, extension rule, exception rule, and validation:

## Retry policy

- Responsibility: decide whether a failed operation can be retried
- Canonical implementation: `src/shared/retry.py`
- Extend when: another workflow follows the same attempt and status rules
- Create a new abstraction only when: retry lifecycle or ownership is different
- Validation: `tests/shared/test_retry.py`

Read management

Repository-wide reads are not free: they add latency, consume model context, and become noisy in large monorepos. Aplomo uses a configurable source-read budget instead of blindly loading the tree:

context:
  max_files: 80
  max_chars: 200000
  max_matches: 12

Candidate files are ranked deterministically by path and query relevance. Each result includes files_available, files_read, chars_read, the configured limits, truncated, and a stop_reason such as complete, match_limit, file_budget, or character_budget.

If truncated is true, “no candidate found” means only “none was found inside this budget.” The agent should refine the query first and widen the budget deliberately only when the scoped search is insufficient. This keeps routine requests cheap without turning the budget into a false proof that no pattern exists.

Plugin and CLI

This repository includes a portable Agent Plugin manifest and Aplomo review skill. The skill can fall back to an agent's native search, test, and diff tools. The CLI installation above adds the full local experience: native project configuration, the repository-aware MCP server, hooks, and the PATH-independent runtime launcher.

The split is deliberate. A public hosted MCP server would require sending repository context to a remote service; Aplomo keeps that context where the coding agent is already running.

Evidence, not promises

The release gate currently covers:

  • 37 automated tests on Python 3.12 and 3.13;

  • 6 deterministic acceptance checks for three-agent configuration, safe installation, byte-for-byte regeneration, MCP initialize/list/call, real subprocess startup, and real hook persistence;

  • a clean-wheel installation into a fresh Git repository in CI;

  • manifest/version synchronization and read-only tool annotations.

We also publish the first paired Codex pilot instead of turning it into a marketing claim. Across three small tasks, baseline and Aplomo both passed all 10 hidden checks. Aplomo used two MCP review calls per task, 23% more uncached-plus-output tokens, and 44% more wall time in this single-run sample. It did not establish token savings or a quality uplift. The useful conclusion is narrower: the workflow reached parity while enforcing the same repository checks, and its overhead is now measured. See the benchmark method and pilot result. That pilot measured the 1.0 workflow; the bounded-read and abstraction-gate additions are covered deterministically and still need a repeated agent benchmark.

That benchmark is intentionally reproducible:

uv run python benchmarks/run_codex.py --repetitions 3 --output benchmark-results.json

We will only claim productivity or quality improvements after repeated, representative tasks show them.

Commands

aplomo init      Detect the stack, create .engineering/, and install adapters
aplomo install   Regenerate managed adapters from .engineering/config.yaml
aplomo doctor    Check configuration, generated files, and the real MCP runtime
aplomo eval      Run deterministic acceptance checks
aplomo hook      Normalize one lifecycle event
aplomo mcp       Run the repository-aware MCP server over stdio

Development and support

git clone https://github.com/marcmendez/aplomo.git
cd aplomo
uv sync --python 3.12
uv run pytest -q
uv run aplomo eval
uv build

Read CONTRIBUTING.md before changing generated integrations. Bugs and feature requests belong in GitHub Issues; security reports follow SECURITY.md.

License

MIT

Available Tools

7 tools
aplomo_find_existing_patternsA
Read-onlyIdempotent

Search a bounded set of source files for existing implementations before adding an abstraction.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the 'bounded set' and 'before adding an abstraction' context but does not disclose return format or result behavior, which is acceptable given the annotations.

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 no filler. It front-loads the core action and resource while adding the key workflow context.

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 simple read-only search tool, the annotations cover safety and the description covers scope and timing. There is no output schema, but the tool's role is clear enough that missing return-format details are a minor gap.

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% and the description adds no explicit parameter guidance. The query and limit parameters are inferable from their names and schema constraints, but the description does not explain semantics beyond what the input schema already provides.

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 specific verb and resource: 'Search a bounded set of source files'. It also gives the purpose, 'before adding an abstraction', which distinguishes it from the sibling tools that validate, review, or prepare changes.

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 clearly frames when to use this tool: before adding an abstraction. It does not explicitly name alternatives or exclusions, but the temporal condition is enough to route an agent toward this discovery step.

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

aplomo_prepare_changeC
Read-onlyIdempotent

Prepare one coding request with repository structure, relevant existing patterns, and architecture rules in a single call.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
requestYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by naming the content the tool gathers, but it does not disclose output format, limitations, or side effects beyond what annotations already imply.

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 one efficient sentence with no wasted words. It front-loads the main action and resource, though the phrase 'one coding request' is slightly awkward and the sentence could have been more direct.

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

Completeness2/5

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

There is no output schema, and the description does not explain what the tool returns, how to use the returned context, or how the two parameters relate. The mention of repository structure, patterns, and architecture rules gives some sense of the gathered content, but important operational context is missing.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain the 'query' or 'request' parameters at all. The word 'request' in 'coding request' gives a weak hint, but 'query' remains completely ambiguous. With no parameter explanation in either the schema or the description, the agent cannot confidently know how to fill these fields.

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 states a specific action ('Prepare') and a resource ('one coding request'), and it clarifies what that preparation includes: repository structure, existing patterns, and architecture rules. This helps distinguish the tool from sibling tools that handle those concerns individually, though 'prepare' remains somewhat abstract.

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 phrase 'in a single call' implies this tool should be used to combine multiple context-gathering steps that siblings like aplomo_understand_repo and aplomo_find_existing_patterns perform separately. However, there is no explicit guidance about when to choose this tool over those alternatives or when it should not be used.

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

aplomo_review_architectureA
Read-onlyIdempotent

Summarize architecture configuration and repository structure for an architecture review.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds the context of summarizing both configuration and repository structure, which is useful but not a significant behavioral disclosure beyond what annotations imply. Given the strong annotation coverage, a 3 is appropriate.

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 a single, well-structured sentence that immediately states the action and purpose. It is front-loaded with the core verb and resource, contains no filler words, and every part earns its place. This is an example of efficient, high-quality writing.

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 that there are no parameters, no output schema, and annotations cover the safety profile, the description is largely complete. It clearly indicates the tool produces a summary of architecture configuration and repository structure, which tells the agent what to expect. While it could specify the format of the summary, this is a minor gap for a zero-parameter summarization tool.

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 tool has zero parameters, so the schema is empty. The description does not need to elaborate on parameters, and the baseline for 0-param tools is 4. There is no additional parameter information required, and the description adequately communicates the tool's purpose without referencing parameters.

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 action 'Summarize' and the specific resources 'architecture configuration and repository structure' with a clear purpose 'for an architecture review'. This distinguishes it from siblings like review_plan (which reviews a plan) and review_diff (which reviews a diff), making it easy for an agent to select the correct tool.

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 clear context by stating it is for an architecture review, implying when it should be used. However, it does not explicitly mention when not to use it or point to alternative tools such as understand_repo or find_existing_patterns, which might also be relevant in similar contexts. This falls short of a 5 but is still clear enough for typical usage.

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

aplomo_review_diffA
Read-onlyIdempotent

Review the current git diff for risky size, secrets, and missing test changes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint, covering the safety profile. The description adds that it reviews for specific categories, which is more purpose than behavioral disclosure. No additional side effects or constraints are mentioned, so it adds marginal value beyond annotations.

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 a single, front-loaded sentence that immediately states the action and scope. There is no filler or redundancy; every word earns its place.

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?

For a tool with no parameters, clear annotations, and no output schema, the description adequately covers what the tool does. An agent can correctly call it without further information. Nothing essential is missing.

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?

There are zero parameters, so the schema is trivially complete (coverage 100%). The description does not need to explain parameters, and the baseline for 0-param tools is 4. It does not add extra parameter info, but none is needed.

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 uses a specific verb ('review') and resource ('current git diff'), and specifies the exact concerns (risky size, secrets, missing test changes). It clearly distinguishes from siblings like review_plan and review_architecture, which focus on different artifacts.

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 phrase 'current git diff' gives clear context that this tool is for reviewing the diff, which implies the appropriate use case. However, it does not explicitly state when not to use it or mention alternatives, so it falls 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.

aplomo_review_planB
Read-onlyIdempotent

Check whether an implementation plan covers patterns, scope, compatibility, and validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the read-only safety profile is covered. The description adds the evaluation criteria but does not disclose behavior such as output format, side effects, or how results are presented, which keeps this at a mid-level score.

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 a single sentence, front-loaded with the core action and resource, and contains no filler or redundant wording. Every word contributes to the meaning, making it appropriately concise.

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

Completeness3/5

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

The tool is simple with one parameter and safety is covered by annotations, so the basics are present. However, there is no output schema and no mention of what the tool returns (e.g., a pass/fail verdict or a list of missing items), and no usage context relative to siblings, leaving meaningful gaps.

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 provides no description for the 'plan' parameter (0% coverage), but the tool description clarifies that it represents an implementation plan and enumerates the aspects it should cover. For a single self-named string parameter, this adequately compensates for the missing schema documentation, though input format is not specified.

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 identifies a specific resource, 'implementation plan', and lists the criteria being checked: patterns, scope, compatibility, and validation. This distinguishes it from siblings like review_diff or review_architecture, though the verb 'Check whether' is somewhat generic and it does not explicitly differentiate itself from other review tools.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. It does not reference any sibling tools, prerequisites, or exclusions, leaving the agent to infer the appropriate context from the name alone.

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

aplomo_understand_repoB
Read-onlyIdempotent

Detect technologies and summarize modules and symbols in the repository.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description does not contradict these. However, the description adds no behavioral context beyond the basic action—no mention of scope limits, cost, auth, output shape, or whether it analyzes only local code versus external references.

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 a single 11-word sentence that front-loads the main action and contains no filler. Given the zero-parameter surface, this level of brevity is appropriate.

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

Completeness3/5

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

The tool is simple, with no parameters and full annotation coverage, and the description conveys its purpose. Still, it does not indicate what the output looks like (list of technologies? symbol summaries? structure), and there is no output schema to compensate, so the definition is only minimally complete.

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 parameters and schema description coverage is 100%, so there is no missing documentation for the description to supply; the no-parameter baseline is 4.

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 uses action verbs 'Detect' and 'summarize' and clearly scopes to 'modules and symbols in the repository.' It is immediately clear what the tool does, though it does not explicitly contrast itself with sibling analysis tools such as aplomo_find_existing_patterns or aplomo_review_architecture.

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

Usage Guidelines2/5

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

There is no explicit statement about when to invoke this tool versus alternatives. The wording simply restates the tool's function; an agent would have to infer that repository reconnaissance is a prerequisite to the planning/review siblings, which is not stated.

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

aplomo_validate_abstractionB
Read-onlyIdempotent

Require reuse or an explicit responsibility/lifecycle justification before adding an abstraction.

ParametersJSON Schema
NameRequiredDescriptionDefault
justificationNo
proposed_nameYes
responsibilityYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the core evaluation criterion — reuse or responsibility/lifecycle justification — as behavioral context for what makes an abstraction acceptable. It does not describe the outcome format or rejection behavior, but the annotations reduce the need for mutation/side-effect disclosure.

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 a single front-loaded sentence with no filler or repetition. It delivers the core policy in a compact, scannable form and every word contributes to meaning. The brevity is a strength, even though some of that brevity creates ambiguity elsewhere.

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

Completeness2/5

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

With no output schema, the agent cannot tell whether validation returns a boolean, an explanation, or an error. The phrase 'lifecycle justification' is undefined, and the relationship between the 'reuse' criterion and the required 'responsibility' parameter is left unclear. For a validation tool, the pass/fail behavior is essential missing context.

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 for explaining parameters, but it only loosely maps to them. It mentions 'responsibility/lifecycle justification' without clarifying the required 'responsibility' field or the optional 'justification' field, and it never explains 'proposed_name' or how 'reuse' maps to a parameter. This is insufficient semantic help for an agent invoking the tool.

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 states an explicit policy gate: 'Require reuse or an explicit responsibility/lifecycle justification before adding an abstraction.' This makes clear the tool validates or rejects abstraction proposals and distinguishes it from sibling review tools by focusing specifically on adding abstractions. It stops short of a 5 because the action verb is somewhat implicit and the description reads more like a rule than a behavioral specification.

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 phrase 'before adding an abstraction' gives a clear temporal trigger for when this tool should be used. However, it does not name sibling alternatives or state when not to use it, leaving the agent to infer how this differs from aplomo_review_architecture or aplomo_review_plan. This is implied usage guidance rather than explicit routing.

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. 2 tool updatesv1.1.0
    • Addedaplomo_prepare_change
    • Addedaplomo_validate_abstraction
  2. 5 tool updatesv0.1.0
    • First observedaplomo_find_existing_patterns
    • First observedaplomo_review_architecture
    • First observedaplomo_review_diff
    • First observedaplomo_review_plan
    • First observedaplomo_understand_repo

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation4/5

Tools are mapped to distinct workflow phases (understanding, pattern search, change preparation, abstraction validation, plan/architecture/diff review), so misselection is unlikely. The only mild overlap is between understand_repo and review_architecture, which both involve summarizing repository structure.

Naming Consistency5/5

All tools share the aplomo_ prefix and use a consistent verb_noun snake_case pattern (prepare_change, understand_repo, review_plan, etc.). The pattern makes the action of each tool predictable from its name.

Tool Count5/5

Seven tools is a tight, well-scoped set for a code-review and change-preparation server. Each tool covers a distinct step without redundancy or bloat.

Completeness5/5

The set covers the full intended workflow: understanding the repo, finding existing patterns, preparing a change, validating abstractions, and reviewing the plan, architecture, and diff. No obvious dead ends or critical missing operations for the server's apparent review/preparation purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides a semantic understanding of your codebase by parsing with tree-sitter and building a graph of symbols and dependencies. Enables AI assistants to navigate code, analyze changes, and discover architecture using 18 tools with minimal context overhead.
    18 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides token-efficient code retrieval for coding agents by indexing repositories and enabling ranked snippet search, symbol outlines, and surgical line reads.
    109 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    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.
    3
    MIT