SampleSampletypeA worked example you read or clone. Evidence: it demonstrates, it never provides.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 →Starting point

btp-agent

One LangGraph agent in a CAP service, with a UI5 chat screen in front of it and four odata-mcp-proxy MCP server modules behind it, deployed to Cloud Foundry as a single MTA.

A CAP service holds the agent, a freestyle UI5 app holds the chat screen, and four modules under packages/ hold one JSON config file each, run by odata-mcp-proxy: Cloud Foundry V3, BTP core services, Audit Log and AI Core. srv/agent.ts assembles a LangGraph StateGraph with an agent node for the model call, a tools node and an askHuman interrupt, and the tools are not hand-coded: MultiServerMCPClient from @langchain/mcp-adapters spawns the MCP servers and hands their tools to the graph. The model is AzureOpenAiChatClient from @sap-ai-sdk/langchain against SAP AI Core's Generative AI Hub on the binding the CAP application already owns, and in production the chat service injects the caller's JWT as a bearer token so each downstream server authorises the person who asked, which the post ties to the agent, the MCP servers and the target APIs sharing one XSUAA tenant. One mta.yaml deploys nine modules together: the approuter, the CAP service, the UI5 chat app, a HANA deployer and the four MCP apps. The post behind it counts the agent's tools as the union of five MCP servers, of which this repository ships four.

Facts

Last push

Where it sits

Lives in
Add-on to
@sap/cds@sap/cdsartifactThe CAP Node.js runtime, which compiles the CDS model, serves the services declared in it, answers generic requests before any handler runs, and loads every cds-plugin.
Runs
Cloud Foundrylocal
Requires
@sap/cds@sap/cdsartifactthe CAP runtime the agent, the chat service and the CDS data model run in@sap/cds-dk@sap/cds-dkartifactthe dev kit behind cds watch for a local run and cds build --production in the MTA buildodata-mcp-proxyodata-mcp-proxyartifactthe runtime of all four MCP server modules, each of which is a config file and nothing elseLangGraphLangGraphoutside the atlasthe graph the agent loop is built as: a StateGraph with an agent node, a tools node and an askHuman interrupt@langchain/mcp-adapters@langchain/mcp-adaptersoutside the atlasthe client that spawns each MCP server module and hands the tools it finds to the graphSAP AI CoreSAP AI Coreartifactthe Generative AI Hub the chat model is called against, bound as the aicore resource on the extended planSAP Authorization and Trust Management serviceSAP Authorization and Trust Management serviceartifactthe one XSUAA instance the agent and all four MCP modules share, carrying the MCPViewer, MCPEditor and MCPAdmin role templates and the token that is forwarded downstreamSAP Destination serviceSAP Destination serviceartifactthe deployed MCP server URLs the agent's client is pointed at in production, created as instance destinations by the MTASAP Connectivity serviceSAP Connectivity serviceartifactone of the three BTP services the MCP modules are configured for, bound to the CAP service, the approuter and every MCP module in the MTA@sap/approuter@sap/approuterartifactthe entry point in front of the chat app and the CAP service, one of the nine MTA modules and also usable locallySAP BTP, Cloud Foundry RuntimeSAP BTP, Cloud Foundry Runtimeartifactthe runtime the nine MTA modules are deployed to with cf deploy
Optional
SAP HANA Service (SAP Regions) for SAP BTPSAP HANA Service (SAP Regions) for SAP BTPartifactthe HDI container the chat sessions and messages are stored in when the application is deployed; a local run uses SQLite insteadSAP HTML5 Application Repository service for SAP BTPSAP HTML5 Application Repository service for SAP BTPartifactwhere the built chat app is deployed and served from, on the app-host and app-runtime planscds-plugin-ui5cds-plugin-ui5artifactserving the chat app from the CDS server at dev time, so one cds watch starts the service and the screen together

Who is behind it

Wouter LemaireWouter LemairePersonMaintains this
In the atlas: maintains 25, contributes to 39, wrote 12
@lemaiwo
maintainer

Before choosing this

Signals

LicenceNo licenseNeither the package manifest nor the repository tree declares a licence

Without a licence the default is all rights reserved. Ask the maintainer, or check for terms stated elsewhere, before depending on it.

What it declares

Every artifact

Type
Sample
Origin
Independently maintained
Runtime
Node.js
Runs on
Cloud Foundrylocal

As a sample

Form
does not say

Connections16

btp-agent connectionsbtp-agentNEEDS→ connects to2connects to stated Collecting the tools of the four deployed MCP server modules and running each tool call against them, over streamable HTTP in production with the caller's JWT as a bearer token, and over stdio in a local run. Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, How: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025 Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, the client side: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025 lemaiwo/btp-agent — CLAUDE.md, Key Design Decisions: https://raw.githubusercontent.com/lemaiwo/btp-agent/main/CLAUDE.mdodata-mcp-proxyconnects to stated The message history and bound tools the model node sends on every turn, and the answer it streams back, called through the service binding the CAP application already owns. Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, How: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025 Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, the graph: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025SAP AI Core→ needs11needs stated the client that spawns each MCP server module and hands the tools it finds to the graph lemaiwo/btp-agent — CLAUDE.md, Key Design Decisions: https://raw.githubusercontent.com/lemaiwo/btp-agent/main/CLAUDE.md lemaiwo/btp-agent — CLAUDE.md, Key Dependencies: https://raw.githubusercontent.com/lemaiwo/btp-agent/main/CLAUDE.md@langchain/mcp-adaptersneeds stated the entry point in front of the chat app and the CAP service, one of the nine MTA modules and also usable locally Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, build and deploy: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025 Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, the client side: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025@sap/approuterneeds stated the CAP runtime the agent, the chat service and the CDS data model run in lemaiwo/btp-agent — CLAUDE.md, Key Dependencies: https://raw.githubusercontent.com/lemaiwo/btp-agent/main/CLAUDE.md@sap/cdsneeds stated the dev kit behind `cds watch` for a local run and `cds build --production` in the MTA build lemaiwo/btp-agent — CLAUDE.md, Key Dependencies: https://raw.githubusercontent.com/lemaiwo/btp-agent/main/CLAUDE.md Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, local development: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025@sap/cds-dkneeds stated the graph the agent loop is built as: a `StateGraph` with an `agent` node, a `tools` node and an `askHuman` interrupt lemaiwo/btp-agent — CLAUDE.md, Key Dependencies: https://raw.githubusercontent.com/lemaiwo/btp-agent/main/CLAUDE.md lemaiwo/btp-agent — CLAUDE.md, Agent Pattern: https://raw.githubusercontent.com/lemaiwo/btp-agent/main/CLAUDE.mdLangGraphneeds stated the runtime of all four MCP server modules, each of which is a config file and nothing else lemaiwo/btp-agent — CLAUDE.md, Key Design Decisions: https://raw.githubusercontent.com/lemaiwo/btp-agent/main/CLAUDE.md lemaiwo/btp-agent — CLAUDE.md, Key Dependencies: https://raw.githubusercontent.com/lemaiwo/btp-agent/main/CLAUDE.mdodata-mcp-proxyneeds stated the Generative AI Hub the chat model is called against, bound as the `aicore` resource on the extended plan Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, How: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025 Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, build and deploy: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025SAP AI Coreneeds stated the one XSUAA instance the agent and all four MCP modules share, carrying the MCPViewer, MCPEditor and MCPAdmin role templates and the token that is forwarded downstream Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, the shell: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025 Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, Why: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025SAP Authorization and Trust Managementserviceneeds stated the runtime the nine MTA modules are deployed to with `cf deploy` Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, build and deploy: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025 Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, prerequisites: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025SAP BTP, Cloud Foundry Runtimeneeds stated one of the three BTP services the MCP modules are configured for, bound to the CAP service, the approuter and every MCP module in the MTA lemaiwo/btp-agent — CLAUDE.md, MCP Server Config Pattern: https://raw.githubusercontent.com/lemaiwo/btp-agent/main/CLAUDE.md Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, build and deploy: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025SAP Connectivity serviceneeds stated the deployed MCP server URLs the agent's client is pointed at in production, created as instance destinations by the MTA Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, the client side: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025 Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, build and deploy: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025SAP Destination service→ optionally needs3optionally needs stated If: running locally; the deployed chat app is built as its own MTA module serving the chat app from the CDS server at dev time, so one `cds watch` starts the service and the screen together lemaiwo/btp-agent — CLAUDE.md, Key Design Decisions: https://raw.githubusercontent.com/lemaiwo/btp-agent/main/CLAUDE.md lemaiwo/btp-agent — CLAUDE.md, Key Dependencies: https://raw.githubusercontent.com/lemaiwo/btp-agent/main/CLAUDE.mdcds-plugin-ui5ifoptionally needs stated If: the application is deployed, where the CDS data model runs on HANA rather than the local SQLite database the HDI container the chat sessions and messages are stored in when the application is deployed; a local run uses SQLite instead lemaiwo/btp-agent — CLAUDE.md, Key Design Decisions: https://raw.githubusercontent.com/lemaiwo/btp-agent/main/CLAUDE.md Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, build and deploy: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025SAP HANA Service (SAP Regions) for SAPBTPifoptionally needs stated If: the application is deployed; the chat app is served from the CDS server at dev time where the built chat app is deployed and served from, on the app-host and app-runtime plans Agentic AI on BTP: a Single Agent with LangGraph — SAP Community, build and deploy: https://community.sap.com/t5/technology-blog-posts-by-members/agentic-ai-on-btp-a-single-agent-with-langgraph/ba-p/14388025SAP HTML5 Application Repositoryservice for SAP BTPif

README

quoted from lemaiwo/btp-agent, read
lemaiwo/btp-agent/README.mdOn GitHub

Getting Started

Welcome to your new project.

It contains these folders and files, following our recommended project layout:

File or FolderPurpose
app/content for UI frontends goes here
db/your domain models and data go here
srv/your service models and code go here
package.jsonproject metadata and configuration
readme.mdthis getting started guide
excerpt, no licence read, read the rest, on GitHub

Details

Sources3
GitHub APIdiscovered herechecked
github.com/lemaiwo/btp-agenttree, 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
runtimesnode
deploymentCloud Foundry, local
discovered viaGitHub API
first seen in the atlas
ecosystem and domaincap, ai-and-agents
Flavors1
UI5 / Freestyle
“A CAP TypeScript monorepo hosting an AI agent connected to SAP BTP AI Core, with a UI5 freestyle chat interface, and multiple MCP server modules that give the agent access to BTP APIs.” — lemaiwo/btp-agent — CLAUDE.md, Visionchecked
History in the atlas1
  1. First seen.
For your agent
Ref
artifact:lemaiwo-btp-agent
JSON
/artifacts/lemaiwo-btp-agent.json
MCP
Connecting an agent