CDS pluginCDS plugintypeInstalls into a CAP project and extends the runtime. CAP loads it through cds.requires or the plugin hook.See every one →What this type is →independently maintainedindependently maintainedoriginPublished by one person or a small company outside SAP. Says nothing about quality; the readings say that.See every one →

@gavdi/cap-mcp

Generates an MCP server from the CDS model — annotated entities become resources and annotated actions become tools, so an agent reaches the service without a second server being written.

Facts

Latestv1.8.0ReleasedLast pushLicenceApache-2.0

Where it sits

Lives in
Provides
Serve your application over MCPCAPServe your application over MCPcapabilityExposing selected application data and business operations to an AI agent through the Model Context Protocol. An application may also integrate remote services through [service integration](capability:service-integration), connecting its exposed contract with [agent access to your systems](capability:agent-systems-access). Development assistance belongs to [agent access to your code](capability:agent-code-access).
Flavors
Requires
@sap/cds≥ 10@sap/cdsartifactThe peer range, as published.

Who is behind it

Gavdi LabsGavdi LabsOrganisationMaintains this
In the atlas: maintains 1
@gavdilabs
maintainerAgustino LimPersonContributes to this
In the atlas: contributes to 1
@agustino-lim
bozaidaPersonContributes to this
In the atlas: contributes to 1
@bozaida
D068023PersonContributes to this
In the atlas: contributes to 1
@D068023
Geert-Jan KlapsPersonContributes to this
In the atlas: maintains 4, contributes to 11, wrote 4
@geert-janklaps
AjeethKumar RPersonContributes to this
In the atlas: maintains 2, contributes to 3
@HatriGt
Marian ZeisPersonContributes to this
In the atlas: maintains 35, contributes to 86, wrote 25
@marianfoo
Mhidayah19PersonContributes to this
In the atlas: contributes to 1
@Mhidayah19
Simon Vestergaard LaursenPersonContributes to this
In the atlas: contributes to 1
@SVLaursen
Willem PardaensPersonContributes to this
In the atlas: contributes to 3, wrote 1
@willempardaens
9 contributors

Before choosing this

Conditions

LicenceSAP Developer License Agreement 3.2 CAP§ 1, 2, 3A cds-plugin is used with SAP CAP materials, or an artifact is explicitly identified as a CAP plugin or application.
  • § 1 License. Productive customer applications are limited to SAP BTP or another SAP-licensed platform, and mass extraction to a non-SAP product is restricted except where solely required for SAP interoperability.
  • § 2 Intellectual Property. The agreement retains SAP's rights in the covered materials and limits making APIs, tools or software available to third parties, while preserving ownership of customer applications subject to SAP's underlying rights.
  • § 3 Artificial Intelligence Training. The agreement prohibits use of the covered materials and customer applications for training artificial-intelligence models or systems.
SAP Developer License Agreement 3.2 CAP →

Also, from Serve your application over MCP§ 1, 3: The CAP developer agreement can apply alongside the API Policy. Ordinary agent inference is not automatically AI training; section 3 becomes relevant when covered materials or applications are used to train, develop or refine a model or system.

PolicySAP API Policy 4.2026a§ 1.1, 1.2, 2.2.2from Serve your application over MCPAn MCP server exposes an SAP API, or uses SAP APIs to supply tools, resources or data to an agent.
  • § 1.1 Published APIs. Published APIs are made available for the documented purposes identified by SAP, including integration, extensions and data exchange.
  • § 1.2 Non-Published APIs. Customer and third-party applications must not access non-published APIs except where documentation permits it or SAP otherwise authorizes it.
  • § 2.2.2 AI call sequences and data extraction. Outside SAP-endorsed architectures, data services or expressly identified pathways, the policy prohibits specified agentic API use and systematic or large-scale extraction.

MCP does not replace the API's documented-use boundary. Check that every endpoint is published for the intended use and whether the policy's AI-call or extraction provisions apply to the design.

SAP API Policy 4.2026a →

What it declares

Every artifact

Type
CDS plugin
Origin
Independently maintained

As a CDS plugin

Declared for
>=10
Distributed through
npm

For serve your application over MCP

Exposure source
CAP service contract
Exposed operations
Entity resource queries, direct functions/actions and configured query/get/create/update wrappers
Context delivery
MCP resourcesMCP promptsSchema hintsModel descriptions via toolsServer instructions
Execution path
CAP service calls
Exposure control
Entity/operation annotationsWrapper configurationOutput filtering

Tasks this contributes to7Beta

Access an external system through an application MCP serviceAn AI agent queries external system data or invokes selected external operations through an application-owned service contract exposed over MCP.Node.js2 scopes
CAP Node.jsCovers, under conditions

Dated assessment history · last accepted 2026-10-12. Excluded from the current connected answer.

What it does

@gavdi/cap-mcp — The inspected source dispatches resource queries and tool calls through the CAP application service; the application can supply remote-service handlers.

Conditions

Current upstream prerequisites are Node.js 18+, CAP 10+ and Express 5+.; Annotate the application entities/actions and configure inherited CAP authentication; the application owns outbound credentials and remote handlers.; Entity write wrappers require deliberate configuration and still depend on application-side authorization.

Remaining work

Implement and test the application and remote handlers, enforce client/backend permissions and confirm target-specific use.

All options on the Serve your application over MCP page →
CAP Node.jsAssessed, not known

Dated assessment history · last accepted 2026-10-12. Excluded from the current connected answer.

What it does

@gavdi/cap-mcp — The documented CAP service dispatch/custom-tool mechanism is relevant, but the captured evidence does not establish this implementation as a supported bridge to the selected SAP Application API.

Conditions

Current upstream prerequisites are Node.js 18+, CAP 10+ and Express 5+.; Annotate the application entities/actions and configure inherited CAP authentication; the application owns outbound credentials and remote handlers.; Entity write wrappers require deliberate configuration and still depend on application-side authorization.; No SAP Application API agent-access endorsement or deployment-specific permission was established by these sources.

Remaining work

Implement and test the application and remote handlers, enforce client/backend permissions and confirm target-specific use.

All options on the Serve your application over MCP page →
Change application records from an agentCreate or update application records through an MCP client.Node.jsCovers, under conditionsentity wrapper adapter
What it does

@gavdi/cap-mcp can expose create/update entity tools when those wrapper modes are enabled.

Conditions

Node.js 18+, SAP CAP 10+ and Express 5+, as stated in the README.; Install @gavdi/cap-mcp, configure cds.mcp and annotate the entities or operations to expose.; Enable the required create/update modes through entity wrapper configuration.

Remaining work

Validate and authorize changes in the application; output omission does not block write inputs.

All options on the Serve your application over MCP page →
Expose an application service to an AI agentLet an MCP client discover and query application data and invoke selected business operations.Node.jsCovers, under conditionsapplication plugin

Dated assessment history · last accepted 2026-10-12. Excluded from the current connected answer.

What it does

@gavdi/cap-mcp exposes annotated entities as resources and functions/actions as tools.

Conditions

Node.js 18+, SAP CAP 10+ and Express 5+, as stated in the README.; Install @gavdi/cap-mcp, configure cds.mcp and annotate the entities or operations to expose.

Remaining work

Choose the service surface and operations, configure client access and deployment governance.

All options on the Serve your application over MCP page →
Invoke a business operation from an agentInvoke a selected application business operation through an MCP tool.Node.jsCovers, under conditionsmodel-derived tool adapter
What it does

@gavdi/cap-mcp turns annotated functions and actions into executable MCP tools.

Conditions

Node.js 18+, SAP CAP 10+ and Express 5+, as stated in the README.; Install @gavdi/cap-mcp, configure cds.mcp and annotate the entities or operations to expose.

Remaining work

Implement business logic and choose the operation parameters and caller permissions.

All options on the Serve your application over MCP page →
Provide application context as MCP resourcesLet an MCP client retrieve application data or schema context through resource URIs.Node.jsCovers, under conditionsentity resource adapter
What it does

@gavdi/cap-mcp exposes annotated entity data through MCP resources.

Conditions

Node.js 18+, SAP CAP 10+ and Express 5+, as stated in the README.; Install @gavdi/cap-mcp, configure cds.mcp and annotate the entities or operations to expose.; Dynamic resource queries require all declared query parameters because of the documented SDK limitation.

Remaining work

Choose resource entities and supported query parameters and enforce caller permissions.

All options on the Serve your application over MCP page →
Publish reusable MCP promptsLet an MCP client discover and retrieve reusable, parameterized interaction templates.Node.jsCovers, under conditionsprompt template adapter
What it does

@gavdi/cap-mcp publishes prompt templates declared on the service.

Conditions

Node.js 18+, SAP CAP 10+ and Express 5+, as stated in the README.; Install @gavdi/cap-mcp, configure cds.mcp and declare prompt templates on the service with @mcp.prompts.

Remaining work

Author templates and arguments and check client support; a prompt does not implement business logic.

All options on the Serve your application over MCP page →
Query application data from an agentRetrieve selected application records through MCP without changing those records.Node.jsCovers, under conditionsmodel-derived resource/tool adapter
What it does

@gavdi/cap-mcp exposes annotated entities as queryable MCP resources and optional query/get tools.

Conditions

Node.js 18+, SAP CAP 10+ and Express 5+, as stated in the README.; Install @gavdi/cap-mcp, configure cds.mcp and annotate the entities or operations to expose.

Remaining work

Select entities and query modes; restrict caller permissions separately from output-field omission.

All options on the Serve your application over MCP page →

Connections3

@gavdi/cap-mcp connections@gavdi/cap-mcpFUNCTIONAL← alternative to2alternative to derivedcap-mcp-bridgealternative to derivedcap-mcp-plugin→ provides1provides stated Generates MCP resources and operation tools from annotated CAP [Node.js](external:nodejs) services, with configured entity wrappers for query/get and optional create/update. The README requires [Node.js](external:nodejs) 18+, CAP 10+ and Express 5+; resource reads and direct tools use service transactions in the pinned implementation. Output omission does not establish a field-access restriction. Annotations and wrapper modes select the exposed entities and operations. Entity resources, reusable prompt templates and @mcp.hint schema descriptions supply context; enable_model_description controls the model-description tool, and instructions configures server instructions. @mcp.omit filters output only: omitted fields remain queryable and can be supplied as write inputs. CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-plugin CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-plugin CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-plugin CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-plugin CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-plugin CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-plugin CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-plugin CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-plugin CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-plugin CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-plugin gavdilabs/cap-mcp-plugin — resources.ts at 1f3a97e1c0733d97c0cabea53d6d31767508daed: https://raw.githubusercontent.com/gavdilabs/cap-mcp-plugin/1f3a97e1c0733d97c0cabea53d6d31767508daed/src/mcp/resources.ts gavdilabs/cap-mcp-plugin — tools.ts at 1f3a97e1c0733d97c0cabea53d6d31767508daed: https://raw.githubusercontent.com/gavdilabs/cap-mcp-plugin/1f3a97e1c0733d97c0cabea53d6d31767508daed/src/mcp/tools.ts CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-plugin CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-plugin CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-plugin CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-plugin CAP MCP Plugin — gavdilabs/cap-mcp-plugin README: https://github.com/gavdilabs/cap-mcp-pluginServe your application over MCP

Install

npm add @gavdi/cap-mcp

Derived from the package name. No recipe recorded; the README has the configuration.

README

quoted from gavdilabs/cap-mcp-plugin under Apache-2.0, read
gavdilabs/cap-mcp-plugin/README.mdOn GitHub

CAP MCP Plugin - AI With Ease

NPM Version NPM License NPM Downloads GitHub commits since latest release

This implementation is based on the Model Context Protocol (MCP) put forward by Anthropic. For more information on MCP, please have a look at their official documentation.

CAP-MCP Plugin

A CAP (Cloud Application Programming) plugin that automatically generates Model Context Protocol (MCP) servers from your CAP services using simple annotations. Transform your CAP OData services into AI-accessible resources, tools, and prompts with minimal configuration.

🚀 The Power of MCP for CAP Applications

The Model Context Protocol bridges the gap between your enterprise data and AI agents. By integrating MCP with your CAP applications, you unlock:

  • AI-Native Data Access: Your CAP services become directly accessible to MCP enabled AI agents like Claude, enabling natural language queries against your business data
  • Enterprise Integration: Seamlessly connect AI tools to your SAP systems, databases, and business logic
  • Intelligent Automation: Enable AI agents to perform complex business operations by combining multiple CAP service calls
  • Developer Productivity: Allow AI assistants to help developers understand, query, and work with your CAP data models
  • Business Intelligence: Transform your structured business data into AI-queryable resources for insights and analysis

🚀 Quick Setup

Want to read the full documentation? Find it here

Prerequisites
  • Node.js: Version 18 or higher
  • SAP CAP: Version 10 or higher
  • Express: Version 5 or higher
  • TypeScript: Optional but recommended
Step 1: Install the Plugin
npm install @gavdi/cap-mcp

The plugin follows CAP's standard plugin architecture and will automatically integrate with your CAP application upon installation.

Step 2: Configure Your CAP Application

Add MCP configuration to your package.json:

{
  "cds": {
    "mcp": {
      "name": "my-bookshop-mcp",
      "auth": "inherit",
      "wrap_entities_to_actions": false,
      "wrap_entity_modes": ["query", "get"],
      "instructions": "MCP server instructions for agents"
    }
  }
}
Step 3: Add MCP Annotations

Annotate your CAP services with @mcp annotations:

// srv/catalog-service.cds
service CatalogService {

  @mcp: {
    name: 'books',
    description: 'Book catalog with search and filtering',
    resource: ['filter', 'orderby', 'select', 'top', 'skip', 'expand']
  }
  entity Books as projection on my.Books;

  // Optionally expose Books as tools for LLMs (query/get enabled by default config)
  annotate CatalogService.Books with @mcp.wrap: {
    tools: true,
    modes: ['query','get'],
    hint: 'Use for read-only lookups of books'
  };

  @mcp: {
    name: 'get-book-recommendations',
    description: 'Get personalized book recommendations',
    tool: true
  }
  function getRecommendations(genre: String, limit: Integer) returns array of String;
}

Note: The @mcp.wrap.hint annotation provides operation-level guidance, while @mcp.hint on individual elements provides field-level descriptions. Both work together to give AI agents comprehensive context.

Step 4: Start Your Application
cds serve

The MCP server will be available at:

  • MCP Endpoint: http://localhost:4004/mcp
  • Health Check: http://localhost:4004/mcp/health
Step 5: Test with MCP Inspector
npx @modelcontextprotocol/inspector

Connect to http://localhost:4004/mcp to explore your generated MCP resources, tools, and prompts.

🎯 Features

This plugin transforms your annotated CAP services into a fully functional MCP server that can be consumed by any MCP-compatible AI client.

  • 📊 Resources: Expose CAP entities as MCP resources with OData v4 query capabilities
  • 🔧 Tools: Convert CAP functions and actions into executable MCP tools
  • 🧩 Entity Wrappers (optional): Expose CAP entities as tools (query, get, and optionally create, update) for LLM tool use while keeping resources intact
  • 🔗 Deep Insert: Create parent and child entities in a single operation with @mcp.deepInsert annotation
  • 💡 Prompts: Define reusable prompt templates for AI interactions
  • ⚡ Elicitation: Request user confirmation or input parameters before tool execution
  • 🔄 Auto-generation: Automatically creates MCP server endpoints based on annotations
  • ⚙️ Flexible Configuration: Support for custom parameter sets and descriptions

🧪 Testing & Inspector

  • Run tests: npm test
  • Start demo app: npm run mock
  • Inspector: npx @modelcontextprotocol/inspector
Bruno collection

The bruno/ folder contains HTTP requests for the MCP endpoint (handy for local manual testing using Bruno or any HTTP client). You may add calls for tools/list and tools/call to exercise the new wrapper tools.

📝 Usage

Resource Annotations

Transform CAP entities into AI-queryable resources:

service CatalogService {

  @readonly
  @mcp: {
    name       : 'books',
    description: 'Book data list',
    resource   : [
      'filter',
      'orderby',
      'select',
      'skip',
      'top',
      'expand'
    ]
  }
  entity Books as projection on my.Books;

  // Enable all OData query options
  @mcp: {
    name       : 'authors',
    description: 'Author data list',
    resource   : true
  }
  entity Authors as projection on my.Authors;

  // Or maybe you just want it as a static top 100 list of data?
  @mcp: {
    name       : 'genres',
    description: 'Book genre list',
    resource   : []
  }
  entity Genres as projection on my.Genres;
}

Generated MCP Resource Capabilities:

  • OData v4 Query Support: $filter, $orderby, $top, $skip, $select, $expand
  • Natural Language Queries: "Find books by Stephen King with stock > 20"
  • Dynamic Filtering: Complex filter expressions using OData syntax
  • Flexible Selection: Choose specific fields and sort orders
Wrapper tools

When wrap_entities_to_actions is enabled (globally or via @mcp.wrap.tools: true), you will see tools named like:

  • CatalogService_Books_query
  • CatalogService_Books_get
  • CatalogService_Books_create (if enabled)
  • CatalogService_Books_update (if enabled)

Each tool includes a description with fields and OData notes to guide the model. You can add @mcp.wrap.hint per entity to enrich descriptions for LLMs.

Example:

  // Wrap Books entity as tools for query/get/create/update (demo)
  annotate CatalogService.Books with @mcp.wrap: {
    tools: true,
    modes: [
      'query',
      'get',
      'create',
      'update'
    ],
    hint : 'Use for read and write demo operations'
  };

For field-level descriptions within these tools, see Element Hints with @mcp.hint.

Omitting Sensitive Fields

Protect sensitive data by excluding specific fields from MCP responses using the @mcp.omit annotation:

namespace my.bookshop;

entity Books {
  key ID            : Integer;
      title         : String;
      stock         : Integer;
      author        : Association to Authors;
      secretMessage : String  @mcp.omit;  // Hidden from all MCP responses
}

entity Users {
  key ID             : Integer;
      username       : String;
      email          : String;
      darkestSecret  : String  @mcp.omit;      // Never exposed to MCP clients
      ssn            : String  @mcp.omit;      // Protected sensitive data
      lastLogin      : DateTime;
}

How It Works:

  • Fields marked with @mcp.omit are automatically filtered from all MCP responses
  • Applies to:
    • Resources: Field will not appear in resource read operations
    • Wrapped Entities: Omission applies to all entity wrapper operations

Common Use Cases:

  • Security: Hide information sensitive to functionality or business operations
  • Privacy: Protect personal identifiers
  • Internal Data: Exclude internal notes, audit logs, or system-only fields
  • Compliance: Ensure GDPR/CCPA compliance by hiding sensitive personal data

Important Notes:

  • Omitted fields are only excluded from outputs - they can still be provided as inputs for create/update operations
  • The annotation works alongside the CAP standard annotation @Core.Computed for comprehensive field control
  • Omitted fields remain queryable in the CAP service - only MCP responses are filtered

Example with Multiple Annotations:

entity Products {
  key ID          : Integer;
      name        : String;
      price       : Decimal;
      costPrice   : Decimal  @mcp.omit;    // Hide internal pricing
      createdAt   : DateTime @Core.Computed; // Auto-generated, not writable
      updatedAt   : DateTime @Core.Computed; // Auto-generated, not writable
      secretNote  : String   @mcp.omit;    // Hide from MCP
}
Tool Annotations

Convert CAP functions and actions into executable AI tools:

// Service-level function
@mcp: {
  name       : 'get-author',
  description: 'Gets the desired author',
  tool       : true
}
function getAuthor(input: String) returns String;

// Entity-level action
extend projection Books with actions {
  @mcp: {
    name       : 'get-stock',
    description: 'Retrieves stock from a given book',
    tool       : true
  }
  function getStock() returns Integer;
}
Required vs Optional Parameters

Parameters follow standard CDS nullability rules. A parameter declared not null is required in the MCP tool schema; a parameter without not null is optional and may be omitted by the AI agent.

@mcp: {
  name       : 'search-items',
  description: 'Search for items by keyword with optional filters',
  tool       : true
}
function searchItems(
  query    : String  not null,  // required — must be provided
  category : String,            // optional — may be omitted
  limit    : Integer,           // optional — may be omitted
  format   : String             // optional — may be omitted
) returns array of String;

The generated JSON Schema will list only not null parameters in the required array:

{
  "properties": {
    "query":    { "type": "string" },
    "category": { "type": "string" },
    "limit":    { "type": "integer" },
    "format":   { "type": "string" }
  },
  "required": ["query"]
}

Note: This behaviour applies to unbound functions and actions. Entity wrapper tools (query, get, create, update) derive nullability from the entity element definitions.

Tool Elicitation

Request user confirmation or input before tool execution using the elicit property:

// Request user confirmation before execution
@mcp: {
  name       : 'book-recommendation',
  description: 'Get a random book recommendation',
  tool       : true,
  elicit     : ['confirm']
}
function getBookRecommendation() returns String;

// Request user input for parameters
@mcp: {
  name       : 'get-author',
  description: 'Gets the desired author',
  tool       : true,
  elicit     : ['input']
}
function getAuthor(id: String) returns String;

// Request both input and confirmation
@mcp: {
  name       : 'books-by-author',
  description: 'Gets a list of books made by the author',
  tool       : true,
  elicit     : ['input', 'confirm']
}
function getBooksByAuthor(authorName: String) returns array of String;

NOTE: Elicitation is only available for direct tools at this moment. Wrapped entities are not covered by this.

Elicit Types:

  • confirm: Requests user confirmation before executing the tool with a yes/no prompt
  • input: Prompts the user to provide values for the tool's parameters
  • Combined: Use both ['input', 'confirm'] to first collect parameters, then ask for confirmation

User Experience:

  • Confirmation: "Please confirm that you want to perform action 'Get a random book recommendation'"
  • Input: "Please fill out the required parameters" with a form for each parameter
  • User Actions: Accept, decline, or cancel the elicitation request
  • Early Exit: Tools return appropriate messages if declined or cancelled
Element Hints with @mcp.hint

Provide contextual descriptions for individual properties and parameters using the @mcp.hint annotation. These hints help AI agents better understand the purpose, constraints, and expected values for specific fields.

Where to Use Hints

Resource Entity Properties

entity Books {
  key ID    : Integer @mcp.hint: 'Must be a unique number not already in the system';
      title : String;
      stock : Integer @mcp.hint: 'The amount of books currently on store shelves';
}

Array Elements

entity Authors {
  key ID          : Integer;
      name        : String @mcp.hint: 'Full name of the author';
      nominations : array of String @mcp.hint: 'Awards that the author has been nominated for';
}

Function/Action Parameters

@mcp: {
  name       : 'books-by-author',
  description: 'Gets a list of books made by the author',
  tool       : true
}
function getBooksByAuthor(
  authorName : String @mcp.hint: 'Full name of the author you want to get the books of'
) returns array of String;

Complex Type Fields

type TValidQuantities {
  positiveOnly : Integer @mcp.hint: 'Only takes in positive numbers, i.e. no negative values such as -1'
};
How Hints Are Used

Hints are automatically incorporated into:

  • Resource Descriptions: Field-level guidance in entity wrapper tools (query/get/create/update/delete)
  • Tool Parameter Schemas: Enhanced parameter descriptions visible to AI agents
  • Input Validation: Context for AI agents when constructing function calls
Example: Enhanced Tool Experience

Without @mcp.hint:

{
  "tool": "CatalogService_Books_create",
  "parameters": {
    "ID": { "type": "integer" },
    "stock": { "type": "integer" }
  }
}

With @mcp.hint:

{
  "tool": "CatalogService_Books_create",
  "parameters": {
    "ID": {
      "type": "integer",
      "description": "Must be a unique number not already in the system"
    },
    "stock": {
      "type": "integer",
      "description": "The amount of books currently on store shelves"
    }
  }
}
Best Practices
  1. Be Specific: Provide concrete examples and constraints

    • ❌ Bad: @mcp.hint: 'Author name'
    • ✅ Good: @mcp.hint: 'Full name of the author (e.g., "Ernest Hemingway")'
  2. Include Constraints: Document validation rules and business logic

    • ✅ @mcp.hint: 'Must be between 0 and 999, representing quantity in stock'
  3. Clarify Foreign Keys: Help AI agents understand associations

    • ✅ @mcp.hint: 'Foreign key reference to Authors.ID'
  4. Explain Business Context: Add domain-specific information

    • ✅ @mcp.hint: 'ISBN-13 format, used for unique book identification'
  5. Avoid Redundancy: Don't repeat what's obvious from the field name and type

    • ❌ Bad: stock: Integer @mcp.hint: 'Stock value'
    • ✅ Good: stock: Integer @mcp.hint: 'Current inventory count across all warehouses'
Technical Notes
  • Hints are parsed at model load time and stored in the propertyHints map
  • Hints work with both simple types and complex nested types
  • Hints are accessible in both resource queries and tool executions
  • Array element hints apply to the array items, not the array itself
Prompt Templates

Define reusable AI prompt templates:

annotate CatalogService with @mcp.prompts: [{
  name       : 'give-me-book-abstract',
  title      : 'Book Abstract',
  description: 'Gives an abstract of a book based on the title',
  template   : 'Search the internet and give me an abstract of the book {{book-id}}',
  role       : 'user',
  inputs     : [{
    key : 'book-id',
    type: 'String'
  }]
}];

🔧 Configuration

Plugin Configuration

Configure the MCP plugin through your CAP application's package.json or .cdsrc file:

{
  "cds": {
    "mcp": {
      "name": "my-mcp-server",
      "version": "1.0.0",
      "auth": "inherit",
      "instructions": "mcp server instructions for agents",
      "capabilities": {
        "resources": {
          "listChanged": true,
          "subscribe": false
        },
        "tools": {
          "listChanged": true
        },
        "prompts": {
          "listChanged": true
        }
      }
    }
  }
}
Configuration Options
OptionTypeDefaultDescription
namestringpackage.json nameMCP server name
versionstringpackage.json versionMCP server version
auth"inherit" | "none""inherit"Authentication mode
instructionsstringnullMCP server instructions for agents
enable_model_descriptionbooleantrueDetermines whether the MCP server should include the model description tool
capabilities.resources.listChangedbooleantrueEnable resource list change notifications
capabilities.resources.subscribebooleanfalseEnable resource subscriptions
capabilities.tools.listChangedbooleantrueEnable tool list change notifications
capabilities.prompts.listChangedbooleantrueEnable prompt list change notifications
Authentication Configuration

The plugin supports two authentication modes:

"inherit" Mode (Default)

Uses your CAP application's existing authentication system:

{
  "cds": {
    "mcp": {
      "auth": "inherit"
    },
    "requires": {
      "auth": {
        "kind": "xsuaa"
      }
    }
  }
}
"none" Mode (Development/Testing)

Disables authentication completely:

{
  "cds": {
    "mcp": {
      "auth": "none"
    }
  }
}

⚠️ Security Warning: Only use "none" mode in development environments. Never deploy to production without proper authentication.

Authentication Flow
  1. MCP client connects to /mcp endpoint
  2. If the authentication style used is OAuth, the OAuth flow will be executed
  3. CAP authentication middleware validates credentials (if auth: "inherit")
  4. MCP session established with authenticated user context
  5. All MCP operations (resources, tools, prompts) inherit the authenticated user's permissions
Automatic Features

The plugin automatically:

  • Scans your CAP service definitions for @mcp annotations
  • Generates appropriate MCP resources, tools, and prompts
  • Creates ResourceTemplates with proper OData v4 query parameter support
  • Sets up HTTP endpoints at /mcp and /mcp/health
  • Manages MCP session lifecycle and cleanup

🌟 Example AI Interactions

Once configured, AI agents can interact with your CAP data naturally; Let's take an example from the standard CAP Bookshop:

  • "Show me the top 5 books with highest stock" → Queries Books resource with $orderby=stock desc&$top=5
  • "Find authors whose names contain 'Smith'" → Uses $filter=contains(name,'Smith') on Authors resource
  • "Get the current stock for book ID 123" → Calls the get-stock tool for the specified book
  • "Give me a book recommendation" → Executes the book-recommendation tool

While this shows how this example CDS annotation works, the possibilities are endless and only you and your data sets the boundaries.

📋 Business Case Example: Workflow Approval Management

The Setup

Your CAP service includes a workflow management system with MCP integration:

service WorkflowService {

  @mcp: {
    name       : 'get-my-pending-approval',
    description: 'Fetches workflows awaiting approval by the specified user',
    tool       : true
  }
  function getPendingApproval(userId: String) returns array of Workflows;
}
The Interaction Flow

1. User Query

User: "Hey <Agent>, do I have any workflows pending approval?"

2. AI Agent Processing

  • Agent recognizes this as a request for pending approval information
  • Identifies the get-my-pending-approval tool as the appropriate method
  • Determines the user's ID from context (session, authentication, etc.)

3. MCP Tool Execution

// Agent calls the MCP tool
{
  "tool": "get-my-pending-approval",
  "arguments": {
    "userId": "john.doe@company.com"
  }
}

4. CAP Service Processing

  • Your CAP service receives the tool call
  • Executes getPendingApproval("john.doe@company.com")
  • Queries your workflow database/system
  • Returns structured workflow data

5. AI Response

Agent: "You have 3 workflows pending your approval:

• **Purchase Order #PO-2024-001**
  Submitted by: Sarah Johnson
  Amount: $12,500
  Submitted: 2 days ago

• **Budget Request - Marketing Q2**
  Submitted by: Mike Chen
  Amount: $45,000
  Submitted: 1 day ago

• **New Employee Onboarding - Jane Smith**
  Submitted by: HR Department
  Start Date: Next Monday
  Submitted: 4 hours ago

Would you like me to help you review any of these in detail?"
Business Value
  • Instant Access: No need to log into workflow systems or navigate complex UIs
  • Contextual Intelligence: AI can prioritize based on urgency, amounts, or business rules
  • Natural Interaction: Users can ask follow-up questions in plain language
  • Integration Ready: Works with existing CAP-based workflow systems
  • Mobile Friendly: Access approvals from any MCP-compatible AI client

🧰 Development & Testing

Testing Your MCP Implementation

If you want to test the MCP implementation you have made on your CAP application locally, you have 2 options available (that does not involve direct integration with AI Agent).

Option #1 - MCP Inspector

You can inspect the MCP implementation by utilizing the official @modelcontextprotocol/inspector.

This inspector can be started up through either the included npm run inspect command, or by running npx @modelcontextprotocol/inspector.

For plugin implementation implementation in your own project it is recommended to add the above command to your own script collection.

For more information on the inspector, please see the official documentation.

Option #2 - Bruno Collection

This repository comes with a Bruno collection available that includes some example queries you can use to verify your MCP implementation. These can be found in the bruno directory.

Option #3 - Automated Testing

Run the comprehensive test suite to validate your implementation:

# Test specific components
npm test -- --testPathPattern=annotations  # Test annotation parsing
npm test -- --testPathPattern=mcp          # Test MCP functionality
npm test -- --testPathPattern=security     # Test security boundaries
npm test -- --testPathPattern=auth         # Test authentication

# Run with detailed output
npm test -- --verbose

# Run in watch mode for development
npm test -- --watch
Further reading
  • Short guide on entity tools and configuration: docs/entity-tools.md

🤝 Contributing

Contributions are welcome! This is an open-source project aimed at bridging CAP applications with the AI ecosystem.

  • Issues: Report bugs and request features
  • Pull Requests: Submit improvements and fixes
  • Documentation: Help improve examples and guides
  • Testing: Share your use cases and edge cases

📄 License

This project is licensed under the Apache-2.0 License - see the LICENSE.md file for details.

🔧 Troubleshooting

Common Issues
MCP Server Not Starting
  • Check Port Availability: Ensure port 4004 is not in use by another process
  • Verify CAP Service: Make sure your CAP application starts successfully with cds serve
  • Authentication Issues: If using auth: "inherit", ensure your CAP authentication is properly configured
MCP Client Connection Failures
# Check if MCP endpoint is accessible
curl http://localhost:4004/mcp/health

# Expected response:
# {"status": "healthy", "timestamp": "2025-01-XX..."}
Annotation Not Working
  • Syntax Check: Verify your @mcp annotation syntax matches the examples
  • Service Deployment: Ensure annotated entities/functions are properly deployed
  • Case Sensitivity: Check that annotation properties use correct casing (resource, tool, prompts)
OData Query Issues
  • SDK Bug Workaround: Due to the known @modelcontextprotocol/sdk bug, provide all query parameters when using dynamic queries
  • Parameter Validation: Ensure query parameters match OData v4 syntax
Performance Issues
  • Resource Filtering: Use specific resource arrays instead of true for large datasets
  • Query Optimization: Implement proper database indexes for frequently queried fields
Debugging
Enable Debug Logging
{
  "cds": {
    "log": {
      "levels": {
        "mcp": "debug"
      }
    }
  }
}
Test MCP Implementation
# Use MCP Inspector for interactive testing
npm run inspect

# Or run integration tests
npm test -- --testPathPattern=integration
Getting Help

🚨 Performance & Limitations

Known Limitations
  • SDK Bug: Dynamic resource queries require all query parameters due to @modelcontextprotocol/sdk RFC template string issue
Performance Considerations
  • Large Datasets: Use resource: ['top'] or similar constraints for entities with many records
  • Complex Queries: OData query parsing adds overhead - consider caching for frequently accessed data
  • Concurrent Sessions: Each MCP client creates a separate session - monitor memory usage with many clients
Scale Recommendations
  • Development: No specific limits
  • Production: Test with expected concurrent MCP client count
  • Enterprise: Consider load balancing for high-availability scenarios

🔗 Resources


(c) Copyright by Gavdi Labs 2025 - All Rights Reserved

Transform your CAP applications into AI-ready systems with the power of the Model Context Protocol.

Apache-2.0, read

History

Latest

v1.8.0

Features 6, Fixes 2

Notes
Features
Bug Fixes
  • add body-parser configuration in bootstrap (#153) (55bb364)
  • upgrade release-it to keep it from breaking during ci (#154) (f3dd193)
Additional Changes
  • ci: change release command to use npx release-it (90ad95d)
  • deps-dev: bump @cap-js/cds-types from 0.10.0 to 0.18.0 (#141) (5e0f299)
  • deps-dev: bump @types/node from 25.3.0 to 26.1.1 (#139) (0e8fe5e)
  • deps: upgrade xssec to latest version as requirement (#152) (bf7ae56)
  1. v1.7.0

    Features 1

    Notes
    Features
    • make action/function parameters optional when notNull is not set (#148) (c755888)
  2. v1.6.0

    Features 4, Fixes 2

    Notes
    Bug Fixes
    • invalid session error not reaching clients (#137) (1ac9790)
    • remove custom authentication logic (#145) (484d04a)
    Additional Changes
    • deps-dev: bump @types/node from 24.0.3 to 25.3.0 (#135) (76ba1c5)
    • deps-dev: bump lint-staged from 16.1.2 to 16.2.7 (#134) (59bf6e8)
    • deps-dev: bump typescript from 5.8.3 to 5.9.3 (#127) (07ac932)
    • upgrade express to v5 (#146) (1e9bc6d)
  3. v1.5.1

    Fixes 1

    Notes
    Bug Fixes
    • Remove resource metadata endpoint RFC 9728 (dd1fec5)
  4. v1.5.0

    Features 7, Fixes 2

    Notes
    Features
    Bug Fixes
    • entity-tools: resolve key type coercion based on CDS metadata (#132) (802355a), closes #126
    • implement OAuth 2.0 protected resource metadata discovery (RFC 9728) (#114) (8781a56)
    Additional Changes
    • deps-dev: bump @cap-js/sqlite from 2.1.0 to 2.1.3 (#120) (de3f7b9)
    • deps-dev: bump @release-it/conventional-changelog (#118) (d38cc68)
    • deps: bump @modelcontextprotocol/sdk from 1.25.3 to 1.26.0 (#121) (549efe3)
    • deps: bump cors from 2.8.5 to 2.8.6 (#122) (962ac89)
    • Set npm as the package ecosystem for Dependabot (73d8d81)
  5. v1.4.1

    Fixes 1

    Notes
    Bug Fixes
    • Remove string coercion from update and create tools (#108) 724ba0c
  6. v1.4.0

    Features 1, Fixes 1

    Notes
    Features
    • annotations: add support for $expand OData query parameter (#100) 4362e0a, closes #98
    Bug Fixes
    • ISO Date Validation in Zod (#106) c0b007d
  7. v1.3.2

  8. v1.3.1

    Fixes 1

    Notes
    Bug Fixes
    • Remove left-over console.log statements (#90) (5d05469)
  9. v1.3.0

    Features 3, Fixes 1

    Notes
    Features
    Bug Fixes
    • Computed elements removed from deep inserts (#87) (376de2a)
    Additional Changes
    • Remove spelling mistake from package.json (c348dd2)
  10. v1.2.2

    Fixes 1

    Notes
    Bug Fixes
    • Multi service conflicts for identical endpoints (#84) (127ffb7)
  11. v1.2.1

    Features 1, Fixes 4

    Notes
    Bug Fixes
    • Core.Computed elements ignored in Update and Create tooling (#79) (3723f23)
    • Correct scoped WRITE restrictions based on CAP specs (#77) (19f287b)
    • Local mock auth without xsuaa service instance creation (#80) (5125315)
    • skip core computed regardless of case (#82) (d01013f)
    Additional Changes
  12. v1.2.0

    Features 1, Fixes 1

    Notes
    Features
    Bug Fixes
    • Grant string, grant role and WRITE supported for access (#75) (769c6fc)
  13. v1.1.5

    Fixes 1

    Notes
    Bug Fixes
    • Fixed CDS version for relaxed major (#72) (d711cba)
  14. v1.1.4

    Features 1, Fixes 1

    Notes
    Bug Fixes
    • namespaces handled in parsing step for custom service namespaces (#68) (48abe62), closes #69
    Additional Changes
    • upgrade cds version from 9.3.1 to 9.4.3 (#69) (a9ea022)
  15. v1.1.3

    Features 3, Fixes 2

    Notes
    Bug Fixes
    • inefficient regular expression vulnerability (#63) (8590c38)
    • permissions for GITHUB_TOKEN in actions (#64) (0057753)
    Additional Changes
  16. v1.1.2

    Fixes 1

    Notes
    Bug Fixes
    • Multi-key associations and related types (#56) (eb57b24)
  17. v1.1.1

    Features 5, Fixes 3

    Notes
    Features
    • add author attribution to changelog entries (#52) (e05eb12)
    Bug Fixes
    • array elements on resources (#50) (b18f9f6)
    • composition zod type (#53) (0a85d7a)
    • filters, limits and orders applied to count and aggregates (#55) (e862e54)
    Additional Changes
    • Add commit check badge (#54) (7dda2a3)
    • eslint config ignores (36de805)
    • Move author info changelog to github.releaseNotes (b886ec9)
    • README badges (a10b61c)
  18. v1.1.0

    Features 2, Fixes 1

    Notes
    Features
    Bug Fixes
  19. v1.0.2

    Fixes 2

    Notes
    Bug Fixes
  20. v1.0.1

    Fixes 1

    Notes
    Bug Fixes
  21. v1.0.0

    Features 2

    Notes
    Features
    Additional Changes
  22. v0.10.1

    Fixes 1

    Notes
    Bug Fixes
    • Stop parsing if no definitions or elements (#33) (17e632a)
  23. v0.10.0

    Features 2

    Notes
    Features
    Additional Changes
  24. v0.9.9

    Features 4, Fixes 1

    Notes
    Bug Fixes
    Additional Changes
  25. v0.9.8

    Features 3, Fixes 1

    Notes
    Features
    • add delete to entity tools (#18) (05f4f1b)
    • add server instructions to MCP server configuration (#21) (26bb9db)
    Bug Fixes
    Additional Changes
  26. v0.9.7

223downloads per week, npm
Weekly downloads for @gavdi/cap-mcp26 complete calendar weeks from 2026-04-27 to 2026-10-25; the latest total is 223.27 Apr – 3 May: 1,0314 May – 10 May: 1,51311 May – 17 May: 1,61718 May – 24 May: 2,35125 May – 31 May: 1,3841 Jun – 7 Jun: 1,1028 Jun – 14 Jun: 65715 Jun – 21 Jun: 94722 Jun – 28 Jun: 65529 Jun – 5 Jul: 1,0026 Jul – 12 Jul: 61713 Jul – 19 Jul: 93620 Jul – 26 Jul: 1,90327 Jul – 2 Aug: 1,5333 Aug – 9 Aug: 1,94510 Aug – 16 Aug: 1,33717 Aug – 23 Aug: 58724 Aug – 30 Aug: 39631 Aug – 6 Sept: 3807 Sept – 13 Sept: 38114 Sept – 20 Sept: 64621 Sept – 27 Sept: 59928 Sept – 4 Oct: 6005 Oct – 11 Oct: 57612 Oct – 18 Oct: 52219 Oct – 25 Oct: 223
Declared alternatives
  1. cap-mcp-bridgeMCP server generating tools from a CAP or OData V4 service's metadata
  2. cap-mcp-pluginMCP server generated from a CDS model, forked from @gavdi/cap-mcp
Serve your application over MCP
  1. abap-ai/mcpMCP server SDK written in ABAPfrom ABAP
  2. abap-ai/mcp2Stateless ABAP MCP server SDK for the 2026-07-28 protocol draftfrom ABAP
  3. abap-agent-runtimeABAP-native MCP endpoint that drives opted-in abap2UI5 appsfrom ABAP
  4. API ManagementAPI proxies with security and traffic policies and Developer Hubfrom BTP/BAIP
  5. com.sap.cds:cds-adapter-mcpMCP adapter turning a CAP Java service into an MCP serverfrom CAP
  6. @cap-js/mcpExposes CAP services as MCP servers for AI agentsfrom CAP
  7. btp-cf-mcpMCP server for SAP BTP and Cloud Foundry acting as the logged-in userfrom BTP/BAIP
  8. MarkWuRY168/SAP_MCPMCP server publishing SAP functions as tools from config tablesfrom ABAP
  9. @neoimpulse/cap-js-mcpMCP server inside a CAP application with model and query toolsfrom CAP
  10. @odatano/core-mcpMCP server exposing the ODATANO Cardano-to-OData bridge as toolsfrom CAP
  11. @odatano/nightgate-mcpMCP server exposing the NIGHTGATE Midnight attestation layerfrom CAP
  12. @shahid.la/cds-db-nlquery-mcpMCP server answering plain-English questions against a CDS schemafrom CAP
  13. Skybuffer AI MCP serverABAP add-on serving business data and transactions as MCP toolsfrom ABAP
  14. cap-mcp-pluginMCP server generated from a CDS model, forked from @gavdi/cap-mcpfrom CAP

Details

Connected knowledge — wider context3

Source connections explain where this sits. Implementation claims remain in their exact task assessment.

Expose an application service to an AI agent · Expose an application service to an AI agent

Editorially accepted assessment · assessed . No Atlas runtime testing.

Evidence changed · needs review · evidence captured 2026-10-12, 2026-10-26

Supporting evidence changed; this accepted claim needs review.

Evidence status not tracked

Evidence observations do not cover this accepted claim; it is retained as dated history.

Related knowledge

Model Context Protocol Adapter | capire

@cap-js/mcp exposes an annotated custom service for model discovery, querying and invocation of unbound actions and functions.

Why included: Dated assessment history; supporting evidence needs review.

Evidence status not tracked

Evidence observations do not cover this accepted claim; it is retained as dated history.

CAP MCP Plugin — gavdilabs/cap-mcp-plugin README

@gavdi/cap-mcp exposes annotated entities as resources and functions/actions as tools.

Why included: Dated assessment history; supporting evidence needs review.

Evidence status not tracked

Evidence observations do not cover this accepted claim; it is retained as dated history.

SanoberRehman/cap-mcp-bridge — README

cap-mcp-bridge queries a custom application OData V4 endpoint and invokes its exposed operations.

Why included: Dated assessment history; supporting evidence needs review.

Evidence status not tracked

Evidence observations do not cover this accepted claim; it is retained as dated history.

Add MCP capabilities to a CAP service

A fifteen-minute walkthrough of turning a plain CAP service into an MCP server: annotate the service with @mcp, install @cap-js/mcp, and it is served alongside OData at /mcp/<path>. The part worth reading it for is what happens next — cds watch writes the endpoint into the local agent's own configuration file, so OpenCode or Claude Code can call the service without anyone editing JSON by hand. It is built on the tiny-sample facet, so there is nothing to prepare, and it shows the protocol traffic rather than only the result. Written while the adapter was in beta, and it says so.

Why included: CAP Node.js setup, @mcp service exposure, local client discovery and querying through the official adapter.

Examine the details of the Model Context Protocol on startup

What the MCP adapter actually does when a CAP server boots, watched rather than described — the companion to the tutorial that switches it on.

Why included: CAP Node.js startup, tool discovery and query flow; the tutorial sample contains no actions or functions.

Model Context Protocol Adapter — CAP guide

Documents @cap-js/mcp and com.sap.cds:cds-adapter-mcp, service annotations, generated describe/query/call tools and local client setup. The guide records Java doc-comment configuration, unbound-action-based data changes, incomplete XSUAA PKCE support and the adapter’s governance boundaries.

Why included: CAP Node.js and Java adapter installation, service exposure, model context, tools and documented limitations.

CAP OData V4 Service Development

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: Native relationship in the retained Developers snapshot; no runtime claim is inferred. · SAP Developers

JSON-RPC Protocol

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: Native relationship in the retained Developers snapshot; no runtime claim is inferred. · SAP Developers

MCP (Model Context Protocol) Adapter for CAP

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: Native relationship in the retained Developers snapshot; no runtime claim is inferred. · SAP Developers

Connecting with AI Coding Agents

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: Native relationship in the retained Developers snapshot; no runtime claim is inferred. · SAP Developers

CAP Annotations

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: Native relationship in the retained Developers snapshot; no runtime claim is inferred. · SAP Developers

CAP Local Development Loop

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: Native relationship in the retained Developers snapshot; no runtime claim is inferred. · SAP Developers

MCP Servers

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: Native relationship in the retained Developers snapshot; no runtime claim is inferred. · SAP Developers

CAP for Node.js

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: Native relationship in the retained Developers snapshot; no runtime claim is inferred. · SAP Developers

MCP Inspector TUI Client

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: Native relationship in the retained Developers snapshot; no runtime claim is inferred. · SAP Developers

MCP Tools and Autonomous Multi-Step Workflows

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: Native relationship in the retained Developers snapshot; no runtime claim is inferred. · SAP Developers

Why this assessment is relevant
  1. Expose an application service to an AI agent → Expose an application service to an AI agent
Relationships and evidence (36)
  • @cap-js/mcp → provides → Serve your application over MCP

    Exposes an @mcp-annotated CAP Node.js application service through generated describe, query and unbound-action/function tools. The query and call tools invoke the exposed service without direct CRUD tools; data changes require application-defined unbound actions. The describe tool returns model descriptions, and the adapter sends generic and custom server instructions to clients. Whole-service opt-in with @mcp can be narrowed through a dedicated service with selected projections and actions.

    Basis: atlas-record

    Model Context Protocol Adapter | capire · checked 2026-10-12Simply add the @mcp annotation to a service definition to expose it via MCP.

    Model Context Protocol Adapter | capire · checked 2026-10-12This tool is used to read data from the service.

    Model Context Protocol Adapter | capire · checked 2026-10-12This tool is used to call unbound actions or functions.

    Model Context Protocol Adapter | capire · checked 2026-10-12while any data changes need to be implemented via unbound actions for now.

    Model Context Protocol Adapter | capire · checked 2026-10-12The CAP MCP adapter must not be used as a gateway or proxy for SAP Application APIs.

    Model Context Protocol Adapter | capire · checked 2026-10-12The adapter is not an SAP-endorsed architecture, data service, or service-specific pathway under section 2.2.2 of the SAP API Policy and is not an endorsed mechanism for exposing, proxying, or providing agentic access to SAP Application APIs.

    Model Context Protocol Adapter | capire · checked 2026-10-12The CAP MCP adapter is intended only for exposing custom CAP application services.

    Model Context Protocol Adapter | capire · checked 2026-10-12This information is included in the output of the describe tool

    Model Context Protocol Adapter | capire · checked 2026-10-12The MCP Adapter automatically sends MCP instructions to MCP clients to help models understand how to interact with your services effectively.

    Model Context Protocol Adapter | capire · checked 2026-10-12Use the @mcp.instructions annotation on service level, entity level, or action level to specify such custom instructions.

    Model Context Protocol Adapter | capire · checked 2026-10-12Instead of annotating an existing service with @mcp and exposing all its entities and actions, simply create a dedicated service specifically for MCP.

    Model Context Protocol Adapter | capire · checked 2026-10-12Within your project root run this to add the @cap-js/mcp plugin for Node.js projects

  • @gavdi/cap-mcp → provides → Serve your application over MCP

    Generates MCP resources and operation tools from annotated CAP Node.js services, with configured entity wrappers for query/get and optional create/update. The README requires Node.js 18+, CAP 10+ and Express 5+; resource reads and direct tools use service transactions in the pinned implementation. Output omission does not establish a field-access restriction. Annotations and wrapper modes select the exposed entities and operations. Entity resources, reusable prompt templates and @mcp.hint schema descriptions supply context; enable_model_description controls the model-description tool, and instructions configures server instructions. @mcp.omit filters output only: omitted fields remain queryable and can be supplied as write inputs.

    Basis: atlas-record

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12- **Node.js**: Version 18 or higher

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12- **SAP CAP**: Version 10 or higher

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12- **Express**: Version 5 or higher

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12Omitted fields remain queryable in the CAP service - only MCP responses are filtered

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12Annotate your CAP services with `@mcp` annotations:

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12Convert CAP functions and actions into executable MCP tools

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12Expose CAP entities as tools (`query`, `get`, and optionally `create`, `update`) for LLM tool use while keeping resources intact

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12Define reusable prompt templates for AI interactions

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12Hints are accessible in both resource queries and tool executions

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12Expose CAP entities as MCP resources with OData v4 query capabilities

    gavdilabs/cap-mcp-plugin — resources.ts at 1f3a97e1c0733d97c0cabea53d6d31767508daed · checked 2026-10-12const response = await service.tx({ user: accessRights }).run(query);

    gavdilabs/cap-mcp-plugin — tools.ts at 1f3a97e1c0733d97c0cabea53d6d31767508daed · checked 2026-10-12const response = await service.tx({ user: accessRights }).send({

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12Scans your CAP service definitions for `@mcp` annotations

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12When `wrap_entities_to_actions` is enabled (globally or via `@mcp.wrap.tools: true`)

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12Omitted fields are **only excluded from outputs** - they can still be provided as inputs for create/update operations

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12Determines whether the MCP server should include the model description tool

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12MCP server instructions for agents

  • cap-mcp-plugin → provides → Serve your application over MCP

    Generates MCP entity resources and bound/unbound operation tools for CAP Node.js, with configured CRUD wrappers, a draft lifecycle and optional Fiori-derived MCP Apps. The README requires Node.js 18+, CAP 9+ and Express 4+. Resource/tool annotations and wrapper modes select the exposed surface; resource reads and direct operation tools call CAP service transactions in the pinned implementation. Entity resources, prompt templates and @mcp.hint schemas supply context, instructions configures server instructions, and MCP Apps require @mcp.wrap.tools with Fiori annotations. @mcp.omit filters output only, and disabling app write buttons leaves tools callable.

    Basis: atlas-record

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12- Node.js 18+

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12- `@sap/cds` 9+

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12- `express` 4+

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12`@mcp.omit` filters MCP output only.

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12no Create/Edit/Delete buttons (the write tools themselves are unaffected)

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12Annotated entities become MCP resources, functions and actions become tools, and services can expose reusable prompt templates.

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12CDS operations annotated with `@mcp.tool: true` become MCP tools.

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12Both **unbound** (service-level) and **bound** (entity-level) operations are supported

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12- `delete` — remove a row by key(s).

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12- `draft-activate` — publish the pending draft to the active row.

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12**Short-circuits active-row `create`, `update`, and `delete`** with a `DRAFT_REQUIRED` error

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12entities annotated with `@odata.draft.bypass` (or the whole service with `cds.env.fiori.bypass_draft: true`) continue to accept direct active-row `create`/`update`/`delete`

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12Declare reusable prompt templates.

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12Enrich schemas for AI agents via `@mcp.hint` on elements and parameters.

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12When an entity has `@mcp.wrap.tools` **and** Fiori UI annotations, the plugin registers two `ui://` HTML resources

    sleibach/cap-mcp-plugin — resources.js at 5359398d0662f452d31529509c67634f8eb5406d · checked 2026-10-12const response = await service.tx({ user: accessRights }).run(query);

    sleibach/cap-mcp-plugin — tools.js at 5359398d0662f452d31529509c67634f8eb5406d · checked 2026-10-12service.tx({ user: accessRights }).send({

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12modes: ['query', 'get', 'create', 'update']

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12Omitted fields can still be supplied as inputs on create / update operations and remain queryable in the underlying CAP service.

    cap-mcp-plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12Server-level instructions surfaced to agents

  • Model Context Protocol Adapter — CAP guide → explains → Serve your application over MCP

    CAP Node.js and Java adapter installation, service exposure, model context, tools and documented limitations.

    Basis: atlas-record

  • Model Context Protocol Adapter — CAP guide → explains → @cap-js/mcp

    Node.js installation, service annotations, querying and unbound action/function invocation.

    Basis: atlas-record

  • Add MCP capabilities to a CAP service → explains → Serve your application over MCP

    CAP Node.js setup, @mcp service exposure, local client discovery and querying through the official adapter.

    Basis: atlas-record

  • Add MCP capabilities to a CAP service → explains → @cap-js/mcp

    Canonical Atlas relevance assertion.

    Basis: atlas-record

  • Examine the details of the Model Context Protocol on startup → explains → Serve your application over MCP

    CAP Node.js startup, tool discovery and query flow; the tutorial sample contains no actions or functions.

    Basis: atlas-record

  • Examine the details of the Model Context Protocol on startup → explains → @cap-js/mcp

    Canonical Atlas relevance assertion.

    Basis: atlas-record

  • Add MCP capabilities to a CAP service → teaches → CAP OData V4 Service Development

    Native relationship in the retained Developers snapshot; no runtime claim is inferred.

    Basis: source-graph

    SAP Developers graph snapshot · checked 2026-10-05T00:55:43.720Z

  • Add MCP capabilities to a CAP service → teaches → JSON-RPC Protocol

    Native relationship in the retained Developers snapshot; no runtime claim is inferred.

    Basis: source-graph

    SAP Developers graph snapshot · checked 2026-10-05T00:55:43.720Z

  • Add MCP capabilities to a CAP service → teaches → MCP (Model Context Protocol) Adapter for CAP

    Native relationship in the retained Developers snapshot; no runtime claim is inferred.

    Basis: source-graph

    SAP Developers graph snapshot · checked 2026-10-05T00:55:43.720Z

  • Add MCP capabilities to a CAP service → teaches → Connecting with AI Coding Agents

    Native relationship in the retained Developers snapshot; no runtime claim is inferred.

    Basis: source-graph

    SAP Developers graph snapshot · checked 2026-10-05T00:55:43.720Z

  • Add MCP capabilities to a CAP service → teaches → CAP Annotations

    Native relationship in the retained Developers snapshot; no runtime claim is inferred.

    Basis: source-graph

    SAP Developers graph snapshot · checked 2026-10-05T00:55:43.720Z

  • Add MCP capabilities to a CAP service → teaches → CAP Local Development Loop

    Native relationship in the retained Developers snapshot; no runtime claim is inferred.

    Basis: source-graph

    SAP Developers graph snapshot · checked 2026-10-05T00:55:43.720Z

  • Add MCP capabilities to a CAP service → teaches → MCP Servers

    Native relationship in the retained Developers snapshot; no runtime claim is inferred.

    Basis: source-graph

    SAP Developers graph snapshot · checked 2026-10-05T00:55:43.720Z

  • Examine the details of the Model Context Protocol on startup → teaches → JSON-RPC Protocol

    Native relationship in the retained Developers snapshot; no runtime claim is inferred.

    Basis: source-graph

    SAP Developers graph snapshot · checked 2026-10-05T00:55:43.720Z

  • Examine the details of the Model Context Protocol on startup → teaches → CAP for Node.js

    Native relationship in the retained Developers snapshot; no runtime claim is inferred.

    Basis: source-graph

    SAP Developers graph snapshot · checked 2026-10-05T00:55:43.720Z

  • Examine the details of the Model Context Protocol on startup → teaches → MCP (Model Context Protocol) Adapter for CAP

    Native relationship in the retained Developers snapshot; no runtime claim is inferred.

    Basis: source-graph

    SAP Developers graph snapshot · checked 2026-10-05T00:55:43.720Z

  • Examine the details of the Model Context Protocol on startup → teaches → MCP Inspector TUI Client

    Native relationship in the retained Developers snapshot; no runtime claim is inferred.

    Basis: source-graph

    SAP Developers graph snapshot · checked 2026-10-05T00:55:43.720Z

  • Examine the details of the Model Context Protocol on startup → teaches → MCP Servers

    Native relationship in the retained Developers snapshot; no runtime claim is inferred.

    Basis: source-graph

    SAP Developers graph snapshot · checked 2026-10-05T00:55:43.720Z

  • Examine the details of the Model Context Protocol on startup → teaches → MCP Tools and Autonomous Multi-Step Workflows

    Native relationship in the retained Developers snapshot; no runtime claim is inferred.

    Basis: source-graph

    SAP Developers graph snapshot · checked 2026-10-05T00:55:43.720Z

  • Expose an application service to an AI agent → associatedWith → Serve your application over MCP

    Primary capability recorded by the accepted task.

    Basis: atlas-assessment

  • MCP (Model Context Protocol) Adapter for CAP → addressesPartOf → Expose an application service to an AI agent

    The retained source graph says the CAP tutorial teaches this adapter subject. The tutorial exposes a CAP Node.js service through @cap-js/mcp, which addresses the official-adapter part of this assessment.

    Basis: atlas-mapping

    Mapping: partial · accepted · Reviewed canonical mapping · checked 2026-10-12

    Evidence matches captured sources · evidence captured 2026-10-12

    Add MCP capabilities to a CAP service · checked 2026-10-12the implementation of MCP capabilities is provided by the MCP adapter plugin @cap-js/mcp

    Add MCP capabilities to a CAP service · checked 2026-10-12You will need a development environment for CAP Node.js.

  • MCP Servers → contextualizes → Serve your application over MCP

    The retained source graph says the CAP tutorial teaches MCP Servers. In CAP Node.js that tutorial supplies service-exposure context for Serve your application over MCP; this does not classify every tutorial under the broad source subject.

    Basis: atlas-mapping

    Mapping: about · accepted · Reviewed canonical mapping · checked 2026-10-12

    Evidence matches captured sources · evidence captured 2026-10-12

    Add MCP capabilities to a CAP service · checked 2026-10-12the implementation of MCP capabilities is provided by the MCP adapter plugin @cap-js/mcp

    Add MCP capabilities to a CAP service · checked 2026-10-12You will need a development environment for CAP Node.js.

  • Expose an application service to an AI agent → assesses → Expose an application service to an AI agent

    One shared outcome, one scoped assessment.

    Basis: atlas-assessment

  • @cap-js/mcp → previouslyContributedTo → Expose an application service to an AI agent

    Last accepted assessment (2026-10-12): @cap-js/mcp exposes an annotated custom service for model discovery, querying and invocation of unbound actions and functions.

    Basis: atlas-assessment · dated relationship; evidence needs review

    Evidence status not tracked

    Evidence observations do not cover this accepted claim; it is retained as dated history.

    Model Context Protocol Adapter | capire · checked 2026-10-12Simply add the @mcp annotation to a service definition to expose it via MCP.

    Model Context Protocol Adapter | capire · checked 2026-10-12This tool is used to read data from the service.

    Model Context Protocol Adapter | capire · checked 2026-10-12This tool is used to call unbound actions or functions.

    Model Context Protocol Adapter | capire · checked 2026-10-12there is no automatic rate limiting, no specific audit logging of agent actions, no approval workflows for sensitive operations, and no policy enforcement layer.

    Model Context Protocol Adapter | capire · checked 2026-10-12out-of-the-box support for authorization with XSUAA, with PKCE, but it is not fully implemented yet.

    Model Context Protocol Adapter | capire · checked 2026-10-12This information is included in the output of the describe tool

    Model Context Protocol Adapter | capire · checked 2026-10-12npm add @cap-js/mcp

    Model Context Protocol Adapter | capire · checked 2026-10-12For any deployment ensure you use infrastructure and practices that mitigate prompt injection risks and connect only to trusted MCP agents (e.g., Joule).

    Model Context Protocol Adapter | capire · checked 2026-10-12Tools are meant to be used by LLMs and AI agents and do not constitute a stable API.

    Model Context Protocol Adapter | capire · checked 2026-10-12The CAP MCP adapter must not be used as a gateway or proxy for SAP Application APIs.

    Model Context Protocol Adapter | capire · checked 2026-10-12Instead of annotating an existing service with @mcp and exposing all its entities and actions, simply create a dedicated service specifically for MCP.

  • @gavdi/cap-mcp → previouslyContributedTo → Expose an application service to an AI agent

    Last accepted assessment (2026-10-12): @gavdi/cap-mcp exposes annotated entities as resources and functions/actions as tools.

    Basis: atlas-assessment · dated relationship; evidence needs review

    Evidence status not tracked

    Evidence observations do not cover this accepted claim; it is retained as dated history.

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12Expose CAP entities as MCP resources with OData v4 query capabilities

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12Convert CAP functions and actions into executable MCP tools

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12**Node.js**: Version 18 or higher

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12**SAP CAP**: Version 10 or higher

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12**Express**: Version 5 or higher

  • cap-mcp-bridge → previouslyContributedTo → Expose an application service to an AI agent

    Last accepted assessment (2026-10-12): cap-mcp-bridge queries a custom application OData V4 endpoint and invokes its exposed operations.

    Basis: atlas-assessment · dated relationship; evidence needs review

    Evidence status not tracked

    Evidence observations do not cover this accepted claim; it is retained as dated history.

    SanoberRehman/cap-mcp-bridge — README · checked 2026-10-12| `query_entity` | The workhorse: filter, select, expand, orderBy, paging, `$count` |

    SanoberRehman/cap-mcp-bridge — README · checked 2026-10-12| `invoke_action` | Call an action. **Write mode only** |

    SanoberRehman/cap-mcp-bridge — README · checked 2026-10-12`cap-mcp-bridge` runs **outside** the service and consumes `$metadata` over HTTP.

    SanoberRehman/cap-mcp-bridge — README · checked 2026-10-12That starts an MCP server on stdio.

  • cap-mcp-plugin → previouslyContributedTo → Expose an application service to an AI agent

    Last accepted assessment (2026-10-12): cap-mcp-plugin derives MCP resources and tools from annotated CDS entities and operations.

    Basis: atlas-assessment · dated relationship; evidence needs review

    Evidence status not tracked

    Evidence observations do not cover this accepted claim; it is retained as dated history.

    CAP MCP Plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12Annotated entities become MCP resources, functions and actions become tools, and services can expose reusable prompt templates.

    CAP MCP Plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12Node.js 18+

    CAP MCP Plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12`@sap/cds` 9+

    CAP MCP Plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12`express` 4+

    CAP MCP Plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12There is **no npm registry package yet**. Install straight from GitHub:

    CAP MCP Plugin — sleibach/cap-mcp-plugin README · checked 2026-10-12- Node.js 18+ - `@sap/cds` 9+ - `express` 4+

  • Expose an application service to an AI agent → reading → Model Context Protocol Adapter | capire

    Curated supporting reading for this assessment.

    Basis: atlas-assessment · dated relationship; evidence needs review

    Evidence status not tracked

    Evidence observations do not cover this accepted claim; it is retained as dated history.

    Model Context Protocol Adapter | capire · checked 2026-10-12Simply add the @mcp annotation to a service definition to expose it via MCP.

    Model Context Protocol Adapter | capire · checked 2026-10-12This tool is used to read data from the service.

    Model Context Protocol Adapter | capire · checked 2026-10-12This tool is used to call unbound actions or functions.

    Model Context Protocol Adapter | capire · checked 2026-10-12there is no automatic rate limiting, no specific audit logging of agent actions, no approval workflows for sensitive operations, and no policy enforcement layer.

    Model Context Protocol Adapter | capire · checked 2026-10-12out-of-the-box support for authorization with XSUAA, with PKCE, but it is not fully implemented yet.

    Model Context Protocol Adapter | capire · checked 2026-10-12This information is included in the output of the describe tool

    Model Context Protocol Adapter | capire · checked 2026-10-12npm add @cap-js/mcp

    Model Context Protocol Adapter | capire · checked 2026-10-12For any deployment ensure you use infrastructure and practices that mitigate prompt injection risks and connect only to trusted MCP agents (e.g., Joule).

    Model Context Protocol Adapter | capire · checked 2026-10-12Tools are meant to be used by LLMs and AI agents and do not constitute a stable API.

    Model Context Protocol Adapter | capire · checked 2026-10-12The CAP MCP adapter must not be used as a gateway or proxy for SAP Application APIs.

    Model Context Protocol Adapter | capire · checked 2026-10-12Instead of annotating an existing service with @mcp and exposing all its entities and actions, simply create a dedicated service specifically for MCP.

  • Expose an application service to an AI agent → reading → CAP MCP Plugin — gavdilabs/cap-mcp-plugin README

    Curated supporting reading for this assessment.

    Basis: atlas-assessment · dated relationship; evidence needs review

    Evidence status not tracked

    Evidence observations do not cover this accepted claim; it is retained as dated history.

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12Expose CAP entities as MCP resources with OData v4 query capabilities

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12Convert CAP functions and actions into executable MCP tools

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12**Node.js**: Version 18 or higher

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12**SAP CAP**: Version 10 or higher

    CAP MCP Plugin — gavdilabs/cap-mcp-plugin README · checked 2026-10-12**Express**: Version 5 or higher

  • Expose an application service to an AI agent → reading → SanoberRehman/cap-mcp-bridge — README

    Curated supporting reading for this assessment.

    Basis: atlas-assessment · dated relationship; evidence needs review

    Evidence status not tracked

    Evidence observations do not cover this accepted claim; it is retained as dated history.

    SanoberRehman/cap-mcp-bridge — README · checked 2026-10-12| `query_entity` | The workhorse: filter, select, expand, orderBy, paging, `$count` |

    SanoberRehman/cap-mcp-bridge — README · checked 2026-10-12| `invoke_action` | Call an action. **Write mode only** |

    SanoberRehman/cap-mcp-bridge — README · checked 2026-10-12`cap-mcp-bridge` runs **outside** the service and consumes `$metadata` over HTTP.

    SanoberRehman/cap-mcp-bridge — README · checked 2026-10-12That starts an MCP server on stdio.

  • Expose an application service to an AI agent → reading → Add MCP capabilities to a CAP service

    Curated supporting reading for this assessment.

    Basis: atlas-assessment

  • Expose an application service to an AI agent → reading → Examine the details of the Model Context Protocol on startup

    Curated supporting reading for this assessment.

    Basis: atlas-assessment

  • Expose an application service to an AI agent → reading → Model Context Protocol Adapter — CAP guide

    Curated supporting reading for this assessment.

    Basis: atlas-assessment

Shared resource identities

sap-developers:t:cap-add-mcp-capabilities → content:sap-tutorial-add-mcp-capabilities-to-a-cap-service

Same resource across graphs; this does not establish implementation compatibility.

Evidence matches captured sources · evidence captured 2026-10-12

sap-developers:t:cap-examine-mcp-startup → content:sap-tutorial-cap-examine-mcp-startup

Same resource across graphs; this does not establish implementation compatibility.

Evidence matches captured sources · evidence captured 2026-10-12

Gaps, source snapshot and retrieval limits
  • The four contributions are separate alternatives; no combined design is asserted or executed by the Atlas.
  • Other providers on this capability page remain unassessed for the complete service-exposure outcome.
  • Transport, authentication, tenancy and production behavior have not been tested by the Atlas.
  • CAP Java and BTP have separate proposed assessments; draft lifecycle, prompts, resources and interactive UI have outcome-specific assessments.
  • Evidence observations do not cover this accepted claim; it is retained as dated history.
  • Supporting evidence changed; this accepted claim needs review.
  • Retrieval uses at most four typed steps within a bounded source index. Source relationships do not establish compatibility.

Developers snapshot checked 2026-10-05 · 33 indexed records from a 9,023-node source snapshot. This is a bounded retrieval view; absence is not evidence that no solution exists. Source relationships and proximity do not establish runtime compatibility.

Mapping version: connected-tasks-2026-10-06-v4+mcp-records-b256b58cfb844590. Task and mapping evidence remain separate from implementation evidence.

Access an external system through an application MCP service · CAP Node.js application bridge for custom external APIs outside SAP Application APIs

Editorially accepted assessment · assessed . No Atlas runtime testing.

Evidence changed · needs review · evidence captured 2026-10-12, 2026-10-15, 2026-10-26

Supporting evidence changed; this accepted claim needs review.

Evidence status not tracked

Evidence observations do not cover this accepted claim; it is retained as dated history.

Related knowledge

CAP Framework (Cloud Application Programming Model)

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: The CAP framework subject is broader than the Node.js runtime. This is a route to context, not package identity or compatibility. · SAP Developers

Why this assessment is relevant
  1. Access an external system through an application MCP service → CAP Node.js application bridge for custom external APIs outside SAP Application APIs
Relationships and evidence (17)
Gaps, source snapshot and retrieval limits
  • The application integration and MCP contributions are assessed separately; no captured source shows these complete generic bridge paths working against a chosen external system.
  • The selected target API, client and backend permissions, tenant mapping and remote error behavior need a project-specific assessment.
  • A compatible component does not establish an endorsed architecture or permission to expose an SAP Application API.
  • Evidence observations do not cover this accepted claim; it is retained as dated history.
  • Supporting evidence changed; this accepted claim needs review.
  • Retrieval uses at most four typed steps within a bounded source index. Source relationships do not establish compatibility.

Developers snapshot checked 2026-10-05 · 33 indexed records from a 9,023-node source snapshot. This is a bounded retrieval view; absence is not evidence that no solution exists. Source relationships and proximity do not establish runtime compatibility.

Mapping version: connected-tasks-2026-10-06-v4+mcp-records-b256b58cfb844590. Task and mapping evidence remain separate from implementation evidence.

Access an external system through an application MCP service · CAP Node.js application bridge for SAP Application APIs

Editorially accepted assessment · assessed . No Atlas runtime testing.

Evidence changed · needs review · evidence captured 2026-10-12, 2026-10-15, 2026-10-26

Supporting evidence changed; this accepted claim needs review.

Evidence status not tracked

Evidence observations do not cover this accepted claim; it is retained as dated history.

Related knowledge

CAP Framework (Cloud Application Programming Model)

Source subject or learning resource; applicability is established separately by the scoped assessment.

Why included: The CAP framework subject is broader than the Node.js runtime. This is a route to context, not package identity or compatibility. · SAP Developers

Why this assessment is relevant
  1. Access an external system through an application MCP service → CAP Node.js application bridge for SAP Application APIs
Relationships and evidence (17)
Gaps, source snapshot and retrieval limits
  • The application integration and MCP contributions are assessed separately; no captured source shows these complete generic bridge paths working against a chosen external system.
  • The selected target API, client and backend permissions, tenant mapping and remote error behavior need a project-specific assessment.
  • A compatible component does not establish an endorsed architecture or permission to expose an SAP Application API.
  • The official CAP MCP adapter is explicitly unsupported for this target scope. The community MCP implementations remain unknown for the complete SAP Application API bridge; their general service exposure does not establish that result.
  • Evidence observations do not cover this accepted claim; it is retained as dated history.
  • Supporting evidence changed; this accepted claim needs review.
  • Retrieval uses at most four typed steps within a bounded source index. Source relationships do not establish compatibility.

Developers snapshot checked 2026-10-05 · 33 indexed records from a 9,023-node source snapshot. This is a bounded retrieval view; absence is not evidence that no solution exists. Source relationships and proximity do not establish runtime compatibility.

Mapping version: connected-tasks-2026-10-06-v4+mcp-records-b256b58cfb844590. Task and mapping evidence remain separate from implementation evidence.

Sources5
npm registrydiscovered herechecked
The discovery passdiscovered herechecked
npm registry, @gavdi/cap-mcpversion, releases, installschecked
github.com/git+https://github.com/gavdilabs/cap-mcp-plugin.gittree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.

Compatibility and provenance
declared for>=10
latestv1.8.0
first release
releases and cadence33, ~15d median
discovered vianpm registry, The discovery pass
first seen in the atlas
ecosystem and domaincap, ai-and-agents
Flavors1
Node.js
“- **Node.js**: Version 18 or higher” — gavdilabs/cap-mcp-plugin — READMEchecked
Contributors9
History in the atlas7
  1. [{"key":"mcp_exposure_source","value":"Annotated CAP service entities and operations"},{"key":"mcp_operations","value":"Entity resource queries, direct functions/actions and configured query/get/create/update wrappers"},{"key":"mcp_context","value":"Entity resources, reusable prompt templates and @mcp.hint schema descriptions"},{"key":"mcp_execution_path","value":"Resource queries and direct operation tools call CAP service transactions (pinned implementation)"},{"key":"mcp_exposure_control","value":"@mcp annotations and wrapper modes select the surface; @mcp.omit filters output only and leaves fields queryable/writable"}]
  2. CAP service contract
  3. MCP resources; MCP prompts; Schema hints; Model descriptions via tools; Server instructions
  4. CAP service calls
  5. Entity/operation annotations; Wrapper configuration; Output filtering
  6. Generates an MCP server from the CDS model — annotated entities become resources and annotated actions become tools, so an agent reaches the service without a second server being written.
  7. First seen.
For your agent
Ref
artifact:gavdi-cap-mcp
JSON
/artifacts/gavdi-cap-mcp.json
MCP
Connecting an agent