Skip to main content
Glama
SAP connector for Claude

SAP connector for Claude

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

SAP S/4HANA, read-only. Production by default; dev only via switch_environment. PREFER TABLE READS: read_sap_table / aggregate_sap_table read any table or view like SE16, fast and exact, under the user's own authorizations. LET SAP DO THE ARITHMETIC: aggregate_sap_table, find_duplicates, trial_balance_by_period, open_items_ageing, grir_differences return results, not rows; never add up rows yourself. SAP GUI REPORTS (find_sap_reports, sap_report_info, run_sap_report): when the user names a report or tcode; ask before any report that may post or change data. OData (query_entity, get_service_metadata) only when a table read is refused, too large, or lacks SAP logic / derived fields. WHERE = ABAP Open SQL: '1000', leading zeros ('0001010000'), dates '20260401'. KEEP IT SMALL: big results go to Excel (you get a summary + path); ask for totals, only needed fields; the per-conversation SAP allowance can only be extended by the user. Key tables: ACDOCA (RLDNR '0L', RBUKRS, GJAHR, POPER, BELNR, RACCT, HSL signed amount in company-code currency, BUDAT, PRCTR, KOSTL, LIFNR, KUNNR); BKPF/BSEG; BSID/BSAD, BSIK/BSAK (open/cleared AR/AP); SKA1/SKAT/SKB1; VBAK/VBAP, LIKP/LIPS, VBRK/VBRP; EKKO/EKPO/EKBE, RBKP/RSEG; MARA/MARC/MBEW, MATDOC; LFA1/KNA1/BUT000; T001, T030, T685/T683S. If old stand-alone SAP tools (mcp__sap__...) still appear: tell the user to restart Claude, then log in to SAP again.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
token_budgetB

SAP data pulled in this conversation, per tool, and the limits. No SAP call. reset=true asks the USER in a window for more allowance.

list_servicesB

Search the Gateway catalog for OData services by name/title substring. Prefer a search term over paging.

get_service_metadataB

OData service structure: entity sets, or one entity's keys and fields (cached 7 days). raw=true returns the full EDMX (very large; avoid). refresh re-downloads.

query_entityC

Generic OData v2 query ($select/$filter/$orderby/$top/$skip/$expand) on a service's entity set.

whoamiC

Active SAP system, host, client and user.

list_environmentsB

SAP systems available, which is active, and login status. No SAP call.

switch_environmentA

Point all SAP tools at prod or dev (also production/development/test/SID) for this session. Non-prod answers carry _sap_env: never report them as live books. Same env = reload login.

read_sap_tableA

Read rows of any SAP table or DB view, like SE16. FIRST CHOICE for SAP data. For totals use aggregate_sap_table; unsure of field names: describe_sap_table. where: ABAP Open SQL, not OData: 'quoted' literals, internal formats (leading zeros, dates '20250401'), e.g. "KAPPL = 'M' AND KSCHL LIKE 'Z%'". fields: comma list (keys always included); name them, wide tables get large. top max 1000; page with skip (answer gives next_skip). drop_empty omits blank fields.

aggregate_sap_tableA

Totals computed in SAP: one call instead of paging rows. measures: comma list of SUM:f, AVG:f, MIN:f, MAX:f, COUNT, COUNTD:f (results named SUM_HSL, ROW_COUNT, COUNTD_BELNR...). group_by: comma fields (empty = one row). where: ABAP Open SQL. order_by: result columns, e.g. "SUM_HSL DESC" with top=20. top max 1000. E.g. TB: table=ACDOCA, measures=SUM:HSL, group_by=RACCT, where="RLDNR = '0L' AND RBUKRS = '1000' AND GJAHR = '2026'".

find_duplicatesA

Groups of rows sharing the same values on fields (comma list), computed in SAP, most frequent first. E.g. duplicate invoices: table=RBKP, fields=LIFNR,XBLNR,RMWWR. where: ABAP Open SQL. min_count default 2; top max 1000.

trial_balance_by_periodA

Trial balance from ACDOCA computed in SAP: per G/L account opening (incl. carry-forward), period debit/credit, closing, with names. periods 1-16 (opening = periods before period_from); optional account range; ledger default 0L. Full-year results are also saved to Excel.

open_items_ageingA

Vendor/customer ageing computed in SAP: open items at key_date (YYYY-MM-DD, default today) per partner in buckets by days past net due (not due, 1-30, 31-60, 61-90, 91-180, >180), with names. account_type: vendor | customer. top max 1000.

grir_differencesA

GR/IR differences computed in SAP from EKBE: per PO item, GR vs IR quantity and value, only mismatches. Optional vendor, po, key_date (YYYY-MM-DD, default today). top max 1000.

describe_sap_tableA

A table's fields (name, type, length, key, description); cached 7 days. search filters by name or description; refresh re-reads from SAP.

condition_typesA

Pricing condition types (T685/T685T/T685A) with texts, access sequence and control data. No condition_type: paged list (limit/offset; prefer search, sales has ~1000); with one: all filled fields. application: V sales, M purchasing, TX tax. usage A = pricing. language: 1-letter key.

pricing_procedureB

Steps of a pricing procedure (T683S, as in V/08 / M/08) with texts; only filled fields, field_legend explains columns. application V/M/TX or empty for all; usage A = pricing.

account_determinationA

MM account determination (OBYC / T030) with G/L names. transaction key e.g. WRX (GR/IR), BSX (inventory), GBB (offsetting), PRD (price diff), KDM (FX diff). chart_of_accounts: empty = the configured chart(s); "*" = all incl. SAP sample charts (only if asked). Optional valuation_class (BKLAS), account_modifier (KOMOK), valuation_modifier (BWMOD).

find_sap_reportsA

Find reports by name pattern (programs and their transaction codes, with titles), e.g. "ZFI*", "AGEING".

sap_report_infoA

A report's selection fields and saved variants (report = tcode or program). Call before run_sap_report.

run_sap_reportA

Run an SAP GUI report (tcode or program) and save its output: ALV to Excel with the report's own headings (Downloads/SAP reports), classic lists to text. Returns path, columns, preview; read the file for the rest. ASK THE USER FIRST before any report that may post, change or send anything. variant: saved variant (easiest). selections override it: {"S_BUKRS": "1000", "P_KEYDT": "20260930", "S_KUNNR": ["1000","1001"], "S_BUDAT": {"low": "20260401", "high": "20260930"}}, internal formats. max_rows max 5000. No popups; must finish in ~55 s.

get_attachmentsA

GOS attachments of an SAP document: lists them and saves the files to Downloads/SAP attachments (content is never returned; open the saved file). kind: invoice (MIRO, needs year), material_doc (needs year), po, fi (needs year + company_code). Or raw object_type + object_key (e.g. BUS2091). download=false only lists.

sap_loginA

Opens a login window on the user's screen for their own SAP user (password never in chat; kept in the OS keychain). Use when a tool reports missing or rejected credentials, or when asked. env: prod (default) | dev. Waits up to 10 min.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.5/5.0

Scored across 22 tools

Disambiguation4/5

Most tools occupy distinct niches: purpose-built analytics (trial_balance_by_period, open_items_ageing, grir_differences, account_determination, pricing_procedure) are clearly separable, and descriptions explicitly steer choices (read_sap_table 'FIRST CHOICE', aggregate for totals, describe for field names). Minor overlap remains between query_entity (OData) and read_sap_table (Open SQL/SE16) and between find_duplicates and aggregate_sap_table with group_by, but the descriptions disambiguate them adequately.

Naming Consistency4/5

All names are lowercase snake_case, giving a predictable surface. However the convention mixes verb_noun (list_services, query_entity, read_sap_table, run_sap_report) with bare noun phrases for report-style tools (grir_differences, trial_balance_by_period, token_budget, condition_types), which is a readable but noticeable deviation rather than a single unified pattern.

Tool Count4/5

22 tools is on the high side of the ideal range, but each maps to a genuinely distinct SAP capability (connectivity/auth, metadata discovery, generic table access, aggregation, and several packaged finance/MM analyses). Nothing looks like filler, though a couple of generic query tools could in principle be folded together.

Completeness4/5

The surface covers the full read/analysis lifecycle: environment and login management, service and table metadata, raw and aggregated reads, duplicate detection, targeted finance/MM reports, report discovery/execution, and attachment retrieval. Gaps are mainly by design (no write/update/post operations, no master-data lookup helpers), which agents can work around via read_sap_table and run_sap_report.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues