Skip to main content
Glama

CAPforge

MCP server that makes your AI agent (Claude Code, Cursor, …) get SAP CAP/CDS right: scaffolding that follows real conventions, plus real validation against cds compile. The agent doesn't stop until the code compiles clean.

Website · npm · Leelo en español

It calls no LLM itself: your agent brings the model (BYOK). Zero inference cost, nothing leaves your machine.

Why

General-purpose models hallucinate CDS — annotation terms that don't exist, OData v2 syntax mixed into v4, invented fields — because there's barely any public CAP code in training data. CAPforge gives your agent the two things it's missing:

  1. Curated, sourced knowledge — modern CAP/UI5 best practices distilled from official SAP docs (capire, OData vocabularies, reference samples), every rule with its source URL.

  2. A real feedback loop — tools that run the actual compiler and linter and feed errors back until everything is green.

Related MCP server: @cap-js/mcp-server

Tools

Tool

What it does

cap_project_context

Codebase-aware: compiles your real project to CSN and returns the existing model (services, entities, fields, associations) so the agent reuses instead of inventing

cap_scaffold_entity

Generates all 5 layers of an entity following conventions: CDS model with aspects (cuid, managed), projection, annotations.cds (HeaderInfo, LineItem, Facets, FieldGroups), mock CSV, i18n

cap_write_files

Writes files into the project

cap_validate

Runs cds compile and returns errors (the loop)

cap_lint

Runs cds lint (best practices / anti-patterns)

cap_deploy_check

Layer 3: deploys to a throwaway sqlite DB and loads the mock CSVs — catches what compile can't (CSV columns that don't exist, bad data, duplicate keys)

cap_analyze_legacy_ui5

Migration mode: inventories a legacy freestyle UI5 app (read-only) — datasources, sections, columns, bound fields, value helps, actions, i18n

ui5_scaffold_section

Generates a freestyle ObjectPage section (SmartTable with p13nData, or SimpleForm) + handler stubs + i18n

ui5_validate_view

The UI5 loop: well-formed XML + every declared event handler exists in the controller

ui5_lint

Layer 3: runs SAP's official ui5lint — deprecated APIs, UI5 2.x readiness, CSP issues

resource conventions://cap

Canonical knowledge core + your team's convention profile + migration map

Normal flow: contextscaffoldwritevalidate → correct → until green. Migration flow: analyze_legacycontext (target) → propose map (REUSED / NEW / DISCARDED) → scaffoldvalidate.

Requirements

  • Node.js 18+

  • @sap/cds-dk available (globally or in the project) for cap_validate to work.

Install & try

npm install
node test-loop.js   # full-loop demo against the bundled sandbox

VS Code / SAP Business Application Studio

Install the "CAPforge" extension from the VS Code Marketplace (also on Open VSX): it registers the MCP server automatically for Copilot agent mode, no mcp.json editing.

Point the capforge.conventionsPath setting to your team's private conventions. BAS note: BAS installs extensions from Open VSX, but its AI assistant does not consume MCP servers natively yet — the extension is ready for the day it does.

Claude Code / Cursor

Register in Claude Code (project .mcp.json or global config):

{
  "mcpServers": {
    "capforge": {
      "command": "npx",
      "args": ["-y", "capforge"]
    }
  }
}

Load your team's private conventions (optional):

"env": { "CAPFORGE_CONVENTIONS": "PATH/to/team-conventions.md" }

Make your agent actually use it

Registering an MCP server does not force the agent to call it: agents only invoke tools when they decide the task needs them, and for CAP they often just write CDS from memory. Two ways to fix that:

  1. Workspace instructions (recommended). Add this to your project's agent instructions file — .github/copilot-instructions.md (Copilot), CLAUDE.md (Claude Code) or .cursorrules (Cursor):

For every SAP CAP or UI5 task: call cap_project_context before generating and reuse existing names; scaffold with cap_scaffold_entity / ui5_scaffold_section; validate with cap_validate, cap_lint and cap_deploy_check (UI5: ui5_validate_view, ui5_lint) and correct until everything is green. Never hand-write CDS without a clean cap_validate run.
  1. The cap_workflow prompt. CAPforge ships an MCP prompt with the same workflow: pick it from your client's prompt list (in VS Code: type / in chat) at the start of a CAP session.

You can also just ask explicitly ("scaffold this with the capforge tools and validate until clean") — but the instructions file is what makes it automatic for the whole team.

Knowledge

  • knowledge/canonical core: modern CAP/UI5 best practices (aspects, compositions, drafts, authorization, Fiori annotations, i18n, tooling, migration map), anchored to official SAP docs with cited sources.

  • conventions/house profile: one team's style, overridable via CAPFORGE_CONVENTIONS. Wins over the core on style conflicts.

The conventions://cap resource serves both, combined, to the agent.

Community

The roadmap is decided by the people who build CAP every day: roadmap discussion. Contributions welcome — see CONTRIBUTING.md.

License

MIT.

Available Tools

10 tools
cap_analyze_legacy_ui5Migration inventory of a legacy UI5 appA

Analyzes a legacy freestyle UI5 app (manifest, XML views, controllers, i18n) in READ-ONLY mode and returns the migration inventory: OData datasources, sections, tables and columns, bound fields per model, value helps, actions and OData calls from the controllers. Use it as the starting point to migrate to modern CAP/Fiori together with cap_project_context and the conventions://cap knowledge.

ParametersJSON Schema
NameRequiredDescriptionDefault
appPathYesLegacy UI5 app root path (the folder containing webapp/)

TDQS

A4/5.0
Behavior3/5

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

The description discloses the READ-ONLY behavior explicitly, which is a useful behavioral trait. However, no annotations are provided, so the description carries the full burden. It doesn't disclose what happens with invalid paths, whether concurrent calls are safe, or performance characteristics of scanning a large codebase. The READ-ONLY disclosure is valuable but the behavioral picture is incomplete.

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 dense run-on sentence that packs a lot of information. It front-loads the primary purpose and lists deliverables. It could be broken into shorter sentences for readability, but every phrase contributes meaningful context and there's minimal wasted text.

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?

Given that the tool takes a single well-documented path parameter and has only one input, the description covers the essential scope well. However, there is no output schema and the tool returns a complex structured inventory (OData datasources, sections, bound fields, value helps, actions, OData calls), so the description could specify more about the return format, data shape, or any assumptions. For a complex output-producing tool with no output schema, the description could do more.

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 100% and there is only one parameter (appPath) with a clear description ('Legacy UI5 app root path'). The description reiterates what the schema says about appPath being the root path containing webapp/. The description adds the scope of analysis (manifest, XML views, controllers, i18n) which gives the parameter context, but since there's only one well-documented parameter, the baseline of 3 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 clearly states the verb ('analyzes'), the resource (legacy freestyle UI5 app), the mode (READ-ONLY), and enumerates the specific inventory items returned (OData datasources, sections, tables, columns, bound fields, value helps, actions, OData calls). It distinguishes itself from siblings by focusing on analysis/inventory for migration, which is unique among the listed tools.

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 states when to use it: 'Use it as the starting point to migrate to modern CAP/Fiori.' It also names complementary tools to use alongside (cap_project_context and conventions://cap knowledge), providing clear guidance on sequencing within the migration workflow and distinguishing its role from related sibling tools.

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

cap_deploy_checkTest deploy (cds deploy to throwaway sqlite)A

Third CAP validation layer: deploys the model to a throwaway sqlite database and loads the db/data CSVs. Catches what cds compile cannot: CSV columns that do not exist on the entity, malformed data and duplicate keys. Requires @cap-js/sqlite installed in the project. The throwaway database is deleted afterwards.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectPathYesCAP project root path with @cap-js/sqlite available

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of disclosure. It does well: it discloses that it loads db/data CSVs, that it requires @cap-js/sqlite, and critically that the throwaway database is deleted afterwards (side effect disclosure). It does not detail error/return behavior, but for a validation tool the key side effects are well covered.

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?

Three sentences, zero waste. Every sentence earns its place: what it does, what it catches vs compile, and the prerequisite plus cleanup behavior. Front-loaded with the verb and purpose, then layers constraints and side effects efficiently.

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 single-parameter validation tool with no output schema, this is quite complete. It explains the tool's role in the validation pipeline (third layer), its inputs, prerequisite, and cleanup behavior. It could mention the success/failure signaling (how the agent learns validation passed), but that may be obvious from deployment semantics.

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 100%, with the single projectPath parameter already documented as 'CAP project root path with @cap-js/sqlite available'. The description reinforces the requirement that @cap-js/sqlite must be present in the project but adds minimal additional meaning beyond the schema. Baseline 3 is appropriate given high schema coverage.

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 (deploys), the resource (model to a throwaway sqlite database), and its specific role as a 'third CAP validation layer'. It explicitly distinguishes from the sibling `cds compile` tool by stating what it catches that compile cannot (CSV column mismatches, malformed data, duplicate keys). The title 'Test deploy' reinforces the primary action.

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 this is a validation tool distinct from `cds compile` and the sibling `cap_validate`/'cap_lint', and it explicitly names a prerequisite (@cap-js/sqlite installed). However, it doesn't explicitly state when NOT to use it or name alternative tools as a fallback path, leaving some ambiguity around the validation layer ordering.

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

cap_lintLint CAP (cds lint)A

Second validation layer: runs cds lint (@sap/cds eslint plugin) on the project and returns anti-patterns and best-practice warnings that cds compile does not catch. Requires @sap/cds installed in the project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectPathYesCAP project root path

TDQS

A3.8/5.0
Behavior3/5

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

The description states it runs `cds lint` via the @sap/cds eslint plugin and returns anti-patterns/best-practice warnings. It also discloses the prerequisite that @sap/cds must be installed. With no annotations provided, this covers the fundamental behavior but doesn't reveal details like execution time, output format, or failure modes when the plugin is missing.

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 compact sentences with no filler. Purpose, mechanism, value, and prerequisite are all packed efficiently. Front-loaded with the core purpose and position among validation layers.

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 single-parameter tool with full schema coverage and no output schema, the description adequately explains the tool's purpose, mechanic, and value. It mentions what results to expect (warnings). Minor gaps: no description of what happens if @sap/cds is missing, and no guidance on severity levels of reported warnings.

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 100% and the single projectPath parameter is described as 'CAP project root path.' The description adds context that the tool operates on 'the project' but doesn't add beyond what the schema states. Given high coverage, baseline 3 is appropriate.

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 gives a specific verb ('runs cds lint'), a clear resource (the project), and positions it as a 'second validation layer' that catches things cds compile does not. It's clear, though it doesn't explicitly contrast with sibling cap_validate or ui5_lint to sharpen differentiation.

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 states when to use (after compile, as a second validation layer) and the prerequisite (@sap/cds installed). While it doesn't explicitly name alternatives or say 'use cap_validate for X instead,' the positional framing provides adequate guidance.

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

cap_project_contextCAP project context (codebase-aware)A

Compiles the real project to CSN and returns a digest of the existing model: services, entities, fields with types and keys, associations and compositions. Call it BEFORE generating code so you reuse what exists instead of inventing fields or entities.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectPathYesCAP project root path

TDQS

A4.2/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 burden of behavioral disclosure. It clearly states the tool compiles the project to CSN (implying it reads/parses the codebase) and returns a 'digest', but does not disclose whether it modifies anything, performance for large projects, or failure behavior for invalid CAP projects. The read-only nature is implied by 'returns a digest' but not stated explicitly.

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 sentences, zero waste. The first sentence lists exactly what the digest contains, the second gives an imperative usage directive. Every word earns its place.

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 tool with one well-documented parameter, an informative output-carrying description, and no output schema, this is adequately complete. It covers what the tool does, what it returns (content of digest), and when to call it. The only minor gap is not describing error/edge cases (e.g., empty project, invalid CSN), but for a context-gathering tool this is a reasonable level of detail.

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 100% for the single parameter (projectPath), and the schema already describes it as 'CAP project root path'. The description doesn't add additional meaning about the parameter beyond what the schema states, landing at the baseline 3 given full schema coverage.

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 ('Compiles the real project to CSN and returns a digest') and clearly states the resource ('existing model: services, entities, fields with types and keys, associations and compositions'). It distinguishes from siblings by framing itself as the pre-generation context-gathering tool, which complements rather than overlaps with generator tools like cap_scaffold_entity.

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 states WHEN to use it ('Call it BEFORE generating code') and WHY ('so you reuse what exists instead of inventing fields or entities'). This creates a clear usage directive that no other sibling tool claims, giving the agent actionable guidance on sequencing.

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

cap_scaffold_entityCAP entity scaffold (all layers)A

Generates the complete scaffolding of a CAP entity following the loaded conventions: CDS model, service projection, annotations.cds (labels + UI.LineItem), mock CSV header and i18n in two languages. Returns the content so you write it with cap_write_files and validate it with cap_validate.

ParametersJSON Schema
NameRequiredDescriptionDefault
draftNoEnable Fiori draft (@odata.draft.enabled) on the service. Defaults to false.
entityYesEntity name in PascalCase
fieldsYesEntity fields (without the technical ID key)
managedNoUse cuid+managed aspects (UUID key + audit fields). Defaults to true.
serviceYesName of the service that will expose it
namespaceYesModel namespace, e.g. ACME

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 the key behavioral trait that the tool only 'Returns the content' (i.e., it does not write files itself), which is critical for agents to avoid wrongly assuming side effects. It also transparently enumerates all generated artifacts, giving a clear expectation of output scope.

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 dense sentence that front-loads the tool's purpose and enumerates the output artifacts without waste. Every clause adds information: what is generated, the conventions applied, and the workflow follow-through. No filler or repetition of schema details.

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 generative tool with no output schema, the description adequately communicates what will be returned (content for four artifact types) and how to proceed. It could explain return format/structure further, but given schema coverage is complete and the description names the follow-up tools, it is reasonably complete for a scaffold generator.

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?

Schema coverage is 100%, so the schema thoroughly documents all 6 parameters. The description adds value by clarifying how fields map to generated output (inList -> UI.LineItem, managed -> cuid+aspects) and noting the fields array excludes the technical ID key, which reduces ambiguity beyond what the bare schema 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 clearly states the verb 'Generates' with a specific resource ('complete scaffolding of a CAP entity') and enumerates precisely what is produced (CDS model, service projection, annotations.cds, mock CSV, i18n). It differentiates from siblings by naming downstream tools (cap_write_files, cap_validate), showing the tool is a generator, not a writer or validator.

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 usage by noting the generated content should be written with cap_write_files and validated with cap_validate, effectively contextualizing the workflow. However, it doesn't explicitly state when NOT to use this tool or name alternatives like cap_analyze_legacy_ui5 or ui5_scaffold_section, leaving the exclusion boundary implicit.

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

cap_validateValidate CAP (cds compile)B

The validation loop. Runs cds compile on the project and returns the errors so the agent can fix them. A clean compile means the scaffolding is valid.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectPathYesCAP project root path with @sap/cds available

TDQS

B3.4/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 burden. It discloses that the tool runs cds compile and returns errors, and frames it as a non-mutating validation operation ('A clean compile means the scaffolding is valid'). It doesn't detail what happens to the project, whether cds compile has side effects, or what the error format looks like, but the read-only validation nature is reasonably clear.

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?

Three sentences, tightly written, no filler. The opening 'The validation loop' sets framing, and the second sentence explains the concrete action. Every sentence serves a purpose, though slightly repetitive between the two opening sentences.

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?

With only one parameter (fully covered by schema), no output schema, and no annotations, the description is fairly complete for a simple validation tool. It explains purpose, outcome interpretation (clean compile = valid), and the fixing loop. Gaps: no mention of sibling cap_lint differentiation and no detail on error format. For a low-complexity tool with 1 well-documented param, this is adequate but not rich.

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 100%, so the parameter projectPath is fully documented in the schema ('CAP project root path with @sap/cds available'). The description adds the behavioral nuance that the compile requires @sap/cds availability, which the schema already notes. The description doesn't add meaning beyond the schema, so baseline 3 is appropriate.

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 what the tool does: 'Runs cds compile on the project and returns the errors so the agent can fix them.' It identifies a specific verb (runs/validate), resource (CAP project/compile), and purpose (validation loop). It distinguishes from siblings like cap_scaffold_entity or cap_lint through the compile/validation purpose, though it doesn't explicitly name difference from cap_lint.

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 description implies usage in a validation loop during scaffolding work ('The validation loop. Runs cds compile... so the agent can fix them'). It says a clean compile means scaffolding is valid, giving context on when it's needed. However, it doesn't explicitly say when NOT to use it or name alternative validation tools like cap_lint, which could overlap.

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

cap_write_filesWrite files into the projectA

Writes one or more files into the given CAP project. Creates folders when missing.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesFiles to write, path relative to projectPath
projectPathYesCAP project root path

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that folders are created when missing and that multiple files can be written at once. However, it does not explain whether existing files get overwritten, whether there are any file-type restrictions, or what happens on partial failure (e.g., if one file write fails, are others rolled back?). The description is adequate but missing behavioral edge cases.

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 short, functional sentences with no filler. The first sentence states the core action and the second adds a meaningful behavioral detail. Every word earns its place.

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 file-writing tool with 100% schema coverage and no output schema, the description covers the basics: what it does, where it writes, and folder creation. However, it lacks information about overwrite behavior and error handling for a write operation, which could be significant for a tool that modifies project state. It is functional but could be more complete.

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 100%, so the schema already fully describes both parameters (files: array of relPath/content objects relative to projectPath; projectPath: CAP project root). The description adds the folder-creation behavior but no additional parameter-level semantics beyond what the schema provides. Baseline 3 is appropriate given full schema coverage.

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 verb+resource ('Writes one or more files into the given CAP project') plus a useful detail about creating missing folders. It clearly distinguishes from siblings like cap_validate and cap_lint (which are analysis tools) and cap_scaffold_entity (which generates entities). However, it doesn't explicitly differentiate from other write-capable tools like ui5_scaffold_section.

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 description implies usage context (writing files into a CAP project) and indicates the projectPath expectation. There is no explicit when/when-not guidance or mention of alternatives. The sibling context makes the intended use reasonably clear, but there are no explicit exclusions or alternative recommendations.

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

ui5_lintLint UI5 (@ui5/linter)A

Third UI5 validation layer: runs SAP's official ui5lint on the app and returns deprecations and anti-patterns on the road to UI5 2.x that view validation does not catch (obsolete APIs, deprecated libs, CSP). Requires @ui5/linter installed in the app and a ui5.yaml at the root.

ParametersJSON Schema
NameRequiredDescriptionDefault
appPathYesUI5 app root path (where ui5.yaml lives)

TDQS

A4.1/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 behavioral burden. It discloses the dependency precondition (@ui5/linter installed, ui5.yaml present) which is genuinely useful. However, it does not describe the output format, whether it writes any files, whether it's a read-only analysis, or how it handles missing dependencies (error vs graceful degradation). For a read-oriented monitoring tool this is acceptable but not rich.

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?

Two sentences, efficiently packed. It front-loads the core purpose, adds the differentiating capabilities, and closes with prerequisites. Every clause earns its place. Could arguably be trimmed slightly, but the 'Third UI5 validation layer' framing is valuable for sibling differentiation. No redundancy or filler.

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 single-parameter lint tool with no output schema, this description is reasonably complete. It names prerequisites (external dependency, yaml file), scopes its scope (UI5 2.x migration issues specifically), and notes what it does NOT cover (view validation). The main gap is describing the return format/results structure, but lint tools commonly return a report, so an agent can reasonably infer behavior. Solid for its complexity level.

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 100% and there's only one parameter (appPath). The description adds a small detail — that it's the 'UI5 app root path (where ui5.yaml lives)' — which slightly enriches the schema description by tying it to the yaml requirement. However, it's basically restating the schema's own wording. With single-param at full coverage, baseline 3 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 clearly states this is a linting tool ('runs SAP's official ui5lint') on the app, specifying exactly what it returns ('deprecations and anti-patterns'). It also distinguishes itself from sibling tools (cap_lint, ui5_validate_view) by framing itself as the 'Third UI5 validation layer' and explicitly noting it catches things 'that view validation does not catch' (obsolete APIs, deprecated libs, CSP). This provides strong differentiation from sibling lint/validation tools.

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 gives explicit usage context: it's the third layer beyond view validation, targeting UI5 2.x migration readiness. It explicitly names prerequisites ('Requires @ui5/linter installed in the app and a ui5.yaml at the root'), which helps the agent decide when this tool is usable. The contrast with 'view validation' alternatives is clear enough to guide selection among libs.

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

ui5_scaffold_sectionUI5 ObjectPage section scaffold (freestyle)A

Generates an ObjectPage section for a freestyle UI5 app following the real pattern: fragment with uxap:ObjectPageSection, SmartTable (table mode, with per-column p13nData) or SimpleForm (form mode), dotted i18n keys, handler stubs and i18n lines. Returns the content so you review it, write it with cap_write_files and validate it with ui5_validate_view.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYestable = SmartTable of an association; form = SimpleForm of fields
fieldsYesFields/columns of the section
handlersNoonXxx handlers the fragment will declare (e.g. onPressDocument)
entitySetNoOData EntitySet for SmartTable (table mode)
bindingPathNotableBindingPath (association, e.g. toDocuments) in table mode
sectionNameYescamelCase section name, e.g. orderItems

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 of behavioral disclosure. It clearly states the tool is non-mutating (it 'returns the content' for review rather than writing files), and actually informs the generated code (SmartTable in table mode, SimpleForm in form mode). It names the write step as a separate tool, making the no-mutation behavior explicit. Some details like output format are implied but not stated.

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 sentences, zero waste. Every clause carries information: the pattern delivered, the mode variants, i18n handling, handler stubs, and the explicit return-then-write-then-validate workflow. Highly compressed without losing specificity.

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 scaffold generator with no output schema and no annotations, the description covers the key behaviors: what it generates, why its safety (non-mutating, returns for review) matters, and the required follow-up tools. It fully compensates for missing annotations on the mutation/safety front. The main shortfall is not explicitly describing the exact return format, though 'Returns the content' gives reasonable clarity.

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 100%, so the schema documents all 6 parameters well. The description adds meaning by explaining the mode semantic ('table = SmartTable of an association; form = SimpleForm of fields' is from schema, described). The description itself adds mode-to-component mapping context beyond basic schema, but most parameter semantics are carried by the schema, so baseline 3 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 ('Generates') with a precise resource ('an ObjectPage section for a freestyle UI5 app') and describes the concrete pattern delivered: fragment with uxap:ObjectPageSection, SmartTable or SimpleForm, dotted i18n keys, handler stubs, i18n lines. It clearly distinguishes from siblings like ui5_validate_view and cap_write_files by naming them explicitly as downstream steps.

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 gives explicit workflow guidance: 'Returns the content so you review it, write it with cap_write_files and validate it with ui5_validate_view.' This clearly tells the agent when to use this tool (scaffold generation) and explicit next steps, implicitly distinguishing it from validation (ui5_validate_view) and writing (cap_write_files) tools in the sibling set.

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

ui5_validate_viewValidate UI5 view/fragmentB

The UI5 validation loop: checks that the XML is well-formed and that ALL declared event handlers (press, change, select...) exist in the controller. Returns the failures so the agent can fix them.

ParametersJSON Schema
NameRequiredDescriptionDefault
xmlPathYesPath of the .view.xml or .fragment.xml to validate
controllerPathNoPath of the controller that must implement the handlers

TDQS

B3.4/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 burden. It discloses what the tool checks (XML well-formedness and event handler existence in controller) and that it returns failures. However, it doesn't describe side effects (read-only nature), what happens on malformed paths, or failure behavior detail. For a validation/read tool this is moderate transparency.

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 that states purpose, scope, and output value. It is efficient with no filler. Could arguably add sibling differentiation but is appropriately compact.

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?

Given the complexity (validation tool, 2 params, no output schema, no annotations), the description covers the core purpose and output but omits: whether controllerPath is truly optional, the exact return structure, and how it relates to ui5_lint. For a tool meant to drive an agent fix loop, slightly more detail on output format would help.

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 100%, so both parameters (xmlPath, controllerPath) are documented. The description clarifies that xmlPath must be a .view.xml or .fragment.xml and that controllerPath must implement the handlers, which adds context beyond raw schema text. But it doesn't mention that controllerPath appears optional (not in required list), leaving ambiguity.

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 verb('validates') plus the resource ('UI5 view/fragment'), and clarifies the scope: checks XML well-formedness and all declared event handlers exist in the controller. It doesn't explicitly differentiate from siblings like ui5_lint, but the 'validation loop' terminology and event-handler focus distinguish it somewhat.

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 description implies 'run this to validate UI5 views and get failures to fix,' and notes it returns failures for the agent to fix. However, it doesn't explicitly state when to use this vs ui5_lint or cap_validate, nor any exclusions. The guidance is implied rather than explicit.

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. Dates show when Glama detected each change.

  1. 10 tool updatesv0.1.3
    • First observedcap_analyze_legacy_ui5
    • First observedcap_deploy_check
    • First observedcap_lint
    • First observedcap_project_context
    • First observedcap_scaffold_entity
    • First observedcap_validate
    • First observedcap_write_files
    • First observedui5_lint
    • First observedui5_scaffold_section
    • First observedui5_validate_view

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have clearly distinct purposes: scaffold vs write vs validate vs analyze vs lint are well-separated by phase. However, there are three validation tools (cap_validate, cap_lint, cap_deploy_check) and two UI5 tools (ui5_validate_view, ui5_lint) with overlapping boundaries that could cause misselection, though their descriptions do explain the distinct layers.

Naming Consistency5/5

Tool names follow an extremely consistent verb_noun pattern with clear prefixes (cap_ for CAP operations, ui5_ for UI5 operations). Verbs are predictable (validate, scaffold, lint, analyze, write, deploy_check, project_context) and 'cap_' aligns with UI5 namespace separation, making the naming highly predictable.

Tool Count5/5

10 tools is well-scoped for a dual-domain server covering both CAP backend and UI5 frontend migration. Each tool earns its place: scaffolding, writing, project context, three CAP validation layers, three UI5 layers, and analysis. The count balances full lifecycle coverage without bloat.

Completeness4/5

The lifecycle is well covered: read context (cap_project_context), analyze legacy (cap_analyze_legacy_ui5), scaffold (cap_scaffold_entity, ui5_scaffold_section), write (cap_write_files), and three-layer validation on both sides (compile, lint, deploy-check; view-validate, ui5lint). Minor gaps include no explicit update/delete/modify operations and no scaffolding for non-entity CAP artifacts like services or annotations beyond entities.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    A CAP plugin that automatically generates MCP servers from your CAP services, transforming OData services into AI-accessible resources, tools, and prompts with minimal configuration.
    397
    61
    Apache 2.0
  • A
    license
    B
    quality
    C
    maintenance
    MCP server for SAP ABAP development that enables AI assistants and code editors to interact with SAP systems via ABAP Developer Toolkit (ADT) APIs, supporting read, create, update, and delete of ABAP objects.
    100
    90
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/automatizatodo/capforge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server