Skip to main content
Glama
marcmendez

Aplomo MCP Server

by marcmendez

Aplomo

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

CI Python 3.12+ MIT

Aplomo keeps your repository's engineering rules independent from the coding agent you use. It installs native project instructions, MCP tools, and lifecycle hooks so Cursor, Codex, and Claude Code work from the same repository context.

Quick start

Install Aplomo once:

uv tool install git+https://github.com/marcmendez/aplomo.git

You can use pipx instead:

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

Initialize it inside a repository:

cd your-repository
aplomo init --agents cursor codex claude

Reopen the project in your coding agent. That is all the setup required.

Related MCP server: mcp-codebase-intelligence

Use it

There is no special prompt syntax and no wrapper command for your requests. Ask the agent normally:

Add rate limiting to the public API and cover it with tests.

When the project opens, the agent loads Aplomo's generated project instructions and MCP configuration. During the task it can inspect the repository, search for existing patterns, review the plan, and review the final diff using the same tools regardless of which supported agent is running.

Your prompt
    │
    ▼
Cursor / Codex / Claude Code
    │ loads native project instructions
    │ uses Aplomo MCP tools when needed
    │ emits lifecycle events through hooks
    ▼
Your repository + .engineering/ rules

Aplomo does not proxy prompts or replace the agent. The agent remains responsible for the implementation; Aplomo supplies shared repository context, a consistent workflow, and portable review tools.

Agent integrations

Agent

Native files installed

What happens when you open the project

Cursor

.cursor/mcp.json, .cursor/hooks.json, .cursor/rules/aplomo.mdc

The always-on project rule is loaded, the Aplomo MCP server becomes available, and edit/shell events are recorded.

Codex

.codex/config.toml, .codex/hooks.json, AGENTS.md, .agents/skills/aplomo-review/SKILL.md

Codex reads the repository instructions and can use the Aplomo review skill and MCP tools throughout the task.

Claude Code

.mcp.json, .claude/settings.json, CLAUDE.md, .claude/skills/aplomo-review/SKILL.md

Claude Code reads the project memory, discovers the skill and MCP server, and records configured lifecycle events.

See the linked guides for exact setup, generated files, and a first prompt for each agent.

What Aplomo asks the agent to do

Before introducing a new abstraction, the generated workflow asks the agent to:

  1. Understand the repository and its module boundaries.

  2. Search for an existing implementation or pattern.

  3. Explain why the existing pattern cannot be extended.

  4. Review the implementation plan.

  5. Review the final diff before declaring completion.

The MCP server exposes the same five tools everywhere:

  • aplomo_understand_repo

  • aplomo_find_existing_patterns

  • aplomo_review_plan

  • aplomo_review_architecture

  • aplomo_review_diff

Repository layout

.
├── .engineering/
│   ├── config.yaml              # source of truth for agent integrations
│   ├── architecture.yaml        # repository boundaries and engineering rules
│   ├── decisions/               # architecture decision records
│   ├── events.jsonl             # local normalized hook events (gitignored)
│   └── generated-manifest.json  # files currently owned by Aplomo
├── .cursor/                     # generated Cursor adapters
├── .codex/                      # generated Codex adapters
├── .claude/                     # generated Claude Code adapters
├── .agents/skills/              # portable generated skills
├── docs/                        # agent-specific setup guides
├── src/engineering_harness/     # dependency-free Python runtime
└── tests/                       # unit and integration tests

.engineering/ is the source of truth. Agent-specific files are generated outputs and should not be edited directly.

Configuration

The generated .engineering/config.yaml selects the agents and integration surfaces:

version: 1
project_name: "your-project"
agents: ["cursor", "codex", "claude"]
technologies: ["Python"]
integrations:
  hooks: true
  mcp: true
  skills: true

After changing it, regenerate the native adapters:

aplomo install

Aplomo preserves an existing agent configuration that it does not own and reports it as skipped, so it will not silently overwrite project setup.

Commands

aplomo init      Detect the stack, create .engineering/, and install adapters
aplomo install   Regenerate managed agent files from .engineering/config.yaml
aplomo doctor    Report missing or stale integrations
aplomo hook      Normalize one agent lifecycle event
aplomo mcp       Run the repository-aware MCP server over stdio

The original eng command remains available as a compatibility alias.

Requirements

  • Python 3.12 or newer

  • Git for diff review and installation from GitHub

  • uv or pipx for isolated installation

Development

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

See CONTRIBUTING.md for the full contributor workflow.

Status

Aplomo 0.1.0 is an early local-first release. It provides lightweight repository analysis, event normalization, native integration generation, and heuristic plan and diff reviews. It does not enforce policy outside the capabilities exposed by each agent.

License

MIT

Available Tools

5 tools
aplomo_find_existing_patternsB

Search source code for existing implementations before adding an abstraction.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full burden of behavioral disclosure. It implies a read-only search operation but does not state whether it is non-destructive, what code scope is searched, whether it has side effects, or what the result format looks like.

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 a single, front-loaded sentence with no filler words. It is appropriately compact, though it omits details that are needed elsewhere; still, for what it does say, the structure is efficient and scannable.

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?

Given the absence of annotations, output schema, and parameter descriptions, this one-liner is not enough for an agent to invoke the tool correctly. The agent knows the general purpose but not how to construct a valid query or interpret results, leaving a significant gap in actionable context.

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 makes no mention of either parameter. The agent cannot infer what 'query' should contain (a term? regex? pattern name?) or what 'limit' controls, despite the schema only providing a type and numeric bounds.

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 clear verb ('Search'), a resource ('source code'), and a specific goal ('existing implementations before adding an abstraction'). It distinguishes itself from the review/understand sibling tools by emphasizing pre-abstraction discovery, though it doesn't explicitly name any sibling it is not.

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 'before adding an abstraction' provides a clear situational context for when this tool is appropriate. However, it does not explicitly state when not to use it or mention alternative sibling tools like aplomo_understand_repo, so it stops short of full exclusion guidance.

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

aplomo_review_architectureA

Summarize architecture configuration and repository structure for an architecture review.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are present, so the description carries the burden of behavioral disclosure. The verb 'Summarize' strongly implies a read-only, non-mutating operation, which is useful. However, the description does not clarify what 'architecture configuration' encompasses, whether it scans the current repository, or whether any side effects or prerequisites exist.

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 a single efficient sentence with the action verb front-loaded. It earns its place without fluff, though it is somewhat generic and leaves out useful context that could make it more informative.

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?

For a parameterless tool, the description is nearly self-contained, and there is no output schema to account for. However, the lack of distinction from aplomo_understand_repo and the absence of any information about what the summary will contain mean an agent could hesitate before selecting this tool confidently.

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 there is no schema detail an agent could miss. The baseline for a parameterless tool is 4, and the description does not need to compensate for any undocumented inputs.

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, 'Summarize', and a clear resource: 'architecture configuration and repository structure'. It also ties the tool to the 'architecture review' context. However, it does not differentiate it from the sibling tool aplomo_understand_repo, which could plausibly perform a similar summarization task.

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 'for an architecture review' implies when this tool is relevant, but the description gives no explicit guidance on when to choose this over sibling tools like aplomo_review_plan or aplomo_review_diff. There are no exclusions or alternative conditions provided.

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

aplomo_review_diffB

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It states what the tool does (reviews the diff) but omits key details: what the output looks like, whether it is read-only, any side effects, or how results are presented. This is a significant gap for a review tool.

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 with no filler, front-loading the action and target. It is appropriately sized for the tool's simplicity.

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?

For a tool with no parameters and no output schema, the description is still incomplete. It does not specify what the agent should expect as a result (e.g., a report, a list of issues, a pass/fail status), nor does it mention prerequisites like a staged or committed diff. This leaves the agent uncertain about how to use the tool's output.

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 schema coverage is trivially 100%. The description adds no parameter information, but none is needed. Per the baseline for 0-parameter tools, a score of 4 is appropriate.

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 'review' and resource 'current git diff' with specific focus areas (risky size, secrets, missing test changes). It clearly distinguishes this tool from siblings like aplomo_review_plan or aplomo_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 Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives, or when not to use it. There is no mention of workflow context, such as 'run before committing' or 'use instead of aplomo_review_plan for diff analysis'. The description implies a use case but does not explicitly address selection.

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

aplomo_review_planB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
planYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral disclosure burden. It states that the tool 'checks' or evaluates, but does not describe whether it is read-only, what the output looks like, or what happens after the check. The listed criteria are useful but do not fully reveal 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.

Conciseness5/5

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

The description is a single concise sentence with no filler. The key action and criteria are front-loaded, making it easy to parse and act on quickly.

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?

Given there is no output schema and no annotations, the description is incomplete: it does not explain what the tool returns, how the plan should be provided, or when to choose this tool over its siblings. This leaves an agent with meaningful ambiguity about invocation and interpretation of results.

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 does add meaning by identifying the 'plan' parameter as an implementation plan and by hinting at what aspects are evaluated. However, it does not specify the expected string format, such as whether it should be a full plan document, a file path, or a summary.

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 verb ('check') and a concrete resource ('implementation plan'), and lists four distinct evaluation criteria: patterns, scope, compatibility, and validation. This clearly distinguishes it from sibling tools like review_architecture or review_diff.

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?

While the description makes it clear the tool is for implementation plans, it provides no explicit guidance on when to use it versus alternatives such as aplomo_review_architecture or aplomo_find_existing_patterns. There are no exclusion criteria or alternative routing hints.

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

aplomo_understand_repoA

Detect technologies and summarize modules and symbols in the repository.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It does not explicitly state that the operation is read-only, mention side effects, describe the scanning scope, or indicate what kind of output is returned. The verbs imply non-destructive behavior, but this is not made explicit.

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 entire description is a single, front-loaded sentence with no filler or repetition. Every word adds meaning, and the primary action is stated clearly at the beginning.

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?

For a zero-parameter tool, the description conveys the broad purpose sufficiently, but it lacks usage context, expected output shape, and any caveats. Without annotations or an output schema, this minimal description leaves the agent to guess practical details about invocation and results.

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 accepts zero parameters, and the schema is fully covered by that fact (100% coverage). There is no parameter meaning to add, so the baseline of 4 applies.

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 specific verbs ('Detect', 'summarize') and concrete resources (technologies, modules, symbols), making the tool's objective clear. It also distinguishes this tool from sibling review/plan/diff tools by focusing on repository-level comprehension rather than evaluation or modification.

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 guidance about when to use this tool versus siblings such as aplomo_review_architecture or aplomo_find_existing_patterns. The agent must infer appropriate usage solely from the tool name and generic description.

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. 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 5 tools

Disambiguation4/5

Each tool targets a distinct artifact such as repo overview, existing patterns, plan, architecture, or diff hole, but understand_repo and review_architecture both summarize repository structure and could be confused by an agent picking a general overview tool. Descriptions are specific enough to separate them in most cases.

Naming Consistency5/5

All tools use the same aplomo_ prefix followed by a clear verb_noun pattern: understand_repo, find_existing_patterns, review_plan, review_architecture, review_diff. The naming convention is uniform and predictable.

Tool Count5/5

Five tools is well-scoped for a repository understanding and review assistant. Each tool covers a necessary step without redundancy or bloat.

Completeness5/5

The tool surface supports a complete workflow: understand the repo, search for existing patterns, review a plan, review architecture, and review the diff. No critical gap is evident for the server's apparent 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.
    9 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.
    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