sidbhat

SF Demo Builder

Community sidbhat
Updated

MCP server for on-demand SAP SuccessFactors demo provisioning with XSUAA auth

SF Demo Builder

MCP server that provisions isolated SAP SuccessFactors demo orgs on demand, then generates two-surface demo scripts for Joule Chat and Joule Desktop / Claude Code.

What it does

Phase 1 — Design (design_demo_org): Given a company name, industry, country, and business problem, returns a complete org plan: roles, scenario narrative, live vs story capability manifest, and an Agent Hub card.

Phase 2 — Provision (provision_demo_org): Takes the plan and creates everything possible via SF OData in an isolated company code on SFSALES011375 — employees, org hierarchy, compensation history, talent profiles, succession nominations, goals, spot awards, and IAS logins.

Supporting tools:

  • list_scenarios — browse all 9 business problem scenarios
  • generate_agent_card — Joule Agent Hub-style card for a plan
  • generate_demo_script — two-surface demo script: Joule Chat beats + Joule Desktop / Claude Code agentic beats, per scenario

Auth — XSUAA principal propagation

In HTTP mode (--http), the server validates SAP Bearer JWTs against accounts.sap.com (RS256, JWKS). The caller's email is extracted from the token and the +alias suffix maps to an SF username:

[email protected]  →  se.ceo@SFSALES011375

This lets Joule Desktop / Claude Code identify which SF user is running the demo and default personas accordingly.

In stdio mode (default, used by Claude Code's MCP integration), auth is bypassed — the local process boundary is the trust boundary.

Setup

pip install -r requirements.txt
cp .env.example .env
# Edit .env — fill in SF_ADMIN_PASS, IAS_CLIENT_SECRET, EMAIL_PREFIX

Run modes

# stdio mode (Claude Code MCP — default)
python3 server.py

# HTTP mode (remote / Joule Desktop HTTP MCP)
python3 server.py --http --port 8000

# Generate a local dev token (for testing HTTP mode without a real SAP token)
python3 generate_token.py --email [email protected]

Register with Claude Code

~/.claude/settings.json:

{
  "mcpServers": {
    "sf-demo-builder": {
      "command": "python3.11",
      "args": ["/path/to/sf-demo-builder/server.py"]
    }
  }
}

Environment variables

Variable Default Description
XSUAA_JWKS_URI https://accounts.sap.com/oauth2/certs JWKS endpoint for JWT validation
XSUAA_ISSUER https://accounts.sap.com Expected JWT issuer
SERVER_BASE_URL http://localhost:8000 Public URL of this server
PORT 8000 HTTP listen port
SF_ADMIN_USER sfadmin@SFSALES011375 SF admin username
SF_ADMIN_PASS (required) SF admin password
IAS_CLIENT_ID (required) IAS SCIM system admin client ID
IAS_CLIENT_SECRET (required) IAS SCIM system admin client secret
EMAIL_PREFIX siddhartha.bhattacharya Email local-part before +alias

Industries and scenarios

Industries: retail, tech, manufacturing, healthcare, financial_services, energy

Business problems: mass_hiring, compensation_planning, talent_retention, skills_learning, performance_goals, workforce_planning, succession_prep, pay_equity_deep_dive, onboarding_readiness

MCP Server · Populars

MCP Server · New

    Get-Concord-AI

    Concord MCP

    Live messaging for coding agents

    Community Get-Concord-AI
    alijancb

    Subio MCP

    Open-source MCP server for discovering fast-growing internet conversations with Subio

    Community alijancb
    ruezo

    MCP Video Digest (视频内容提取总结)

    MCP Server for transcribing videos via video links and summarizing video content

    Community ruezo
    LastSearch-HQ

    LastSearch

    Reliable research infrastructure for AI agents. Evidence-backed web search with citations, confidence scores, and Clarity anti-hallucination. MCP server, REST API, Python SDK.

    Community LastSearch-HQ
    gtfodevs

    Autonomo MCP

    Tired of 'it works' lies? Autonomo MCP makes your AI prove it—on real hardware, right in your editor.

    Community gtfodevs