Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Bewertungen und Benutzerkonten folgen in einem späteren Schritt.
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

Concur MCP

von chrischallVersion 0.4.1i★ –iLäuft auf deinem Computer
Name in der Registryio.github.chrischall/concur-mcp

Installieren

Überblick

Beschreibung vom Entwickler (englisches Original)

Unofficial SAP Concur MCP for Claude — expense reports, expenses, receipts and trips

Die drei Säulen von PopNx MCP

Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.

Was du damit machen kannst

Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.

  • Verbindung: Läuft auf deinem Computer
  • Transport: stdio
  • Kategorie: Buchhaltung, Finanzen & Steuern

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

Bevor du installierst

  • Basischecks: 1 von 1 bestanden
  • Läuft auf deinem Computer mit den Rechten deines Benutzerkontos (Dateien, Netzwerk, Apps).
  • Das trägst du selbst ein: CONCUR_DC, CONCUR_WS_PORT, CONCUR_OUTPUT_DIR, CONCUR_UPLOAD_ROOTS, CONCUR_INLINE_RECEIPTS

Du brauchst

  • npmNode.js installiert (für den Befehl npx)

Welche App nutzt du?

Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.

Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein

{
  "mcpServers": {
    "concur": {
      "command": "npx",
      "args": [
        "-y",
        "@chrischall/concur-mcp"
      ],
      "env": {
        "CONCUR_DC": "your-value",
        "CONCUR_WS_PORT": "your-value",
        "CONCUR_OUTPUT_DIR": "your-value",
        "CONCUR_UPLOAD_ROOTS": "your-value",
        "CONCUR_INLINE_RECEIPTS": "your-value"
      }
    }
  }
}

Führe das in deinem Terminal aus

claude mcp add concur --env CONCUR_DC=your-value --env CONCUR_WS_PORT=your-value --env CONCUR_OUTPUT_DIR=your-value --env CONCUR_UPLOAD_ROOTS=your-value --env CONCUR_INLINE_RECEIPTS=your-value -- npx -y @chrischall/concur-mcp

Trag die leeren Werte ein, bevor du ihn startest.

In Cursor öffnen

Oder kopier die Einstellungen selbst

In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen

{
  "mcpServers": {
    "concur": {
      "command": "npx",
      "args": [
        "-y",
        "@chrischall/concur-mcp"
      ],
      "env": {
        "CONCUR_DC": "your-value",
        "CONCUR_WS_PORT": "your-value",
        "CONCUR_OUTPUT_DIR": "your-value",
        "CONCUR_UPLOAD_ROOTS": "your-value",
        "CONCUR_INLINE_RECEIPTS": "your-value"
      }
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

In VS Code öffnen

Oder kopier die Einstellungen selbst

In .vscode/mcp.json in deinem Projekt einfügen

{
  "servers": {
    "concur": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@chrischall/concur-mcp"
      ],
      "env": {
        "CONCUR_DC": "your-value",
        "CONCUR_WS_PORT": "your-value",
        "CONCUR_OUTPUT_DIR": "your-value",
        "CONCUR_UPLOAD_ROOTS": "your-value",
        "CONCUR_INLINE_RECEIPTS": "your-value"
      }
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.

Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.

Werte, die du selbst einträgst

  • CONCUR_DC env
    Concur datacenter from your signed-in tab's host (e.g. us2, eu2). Defaults to us2.
  • CONCUR_WS_PORT env
    fetchproxy bridge concentrator port. Defaults to the fleet-shared 37149.
  • CONCUR_OUTPUT_DIR env
    Where `concur_get_receipt` saves downloaded receipts (never overwriting an existing file). Defaults to ~/Downloads/concur-mcp.
  • CONCUR_UPLOAD_ROOTS env
    The only folders `concur_upload_receipt` will read from (a path-delimiter-separated list; `~` expanded). Hosted (with `MCP_DATA_DIR` set) the default is `$MCP_DATA_DIR/uploads`. Defaults to ~/Downloa…
  • CONCUR_INLINE_RECEIPTS env
    `true` makes `concur_get_receipt` return the image in the result instead of writing a file. Off locally, on when hosted.

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Was er kann

Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 7. Nov. 2026

  • ✓ Bestanden

    Entwickler passt zum Repo

    Der Registry-Name wurde mit dem GitHub-Konto chrischall bestätigt, dem das Repo gehört

  • … Noch nicht geprüft

    Wird noch gepflegt

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • … Noch nicht geprüft

    Hat eine Lizenz

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • – Nicht zutreffend

    Endpunkt antwortet

    Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet

  • – Nicht zutreffend

    Anmeldung mit OAuth

    Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen

  • … Noch nicht geprüft

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen

Im Vergleich mit anderen in Buchhaltung, Finanzen & Steuerni

  • Mehr Sterne als 0 % der anderen 2897 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 89 % der anderen 2897 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 100 % der anderen 2897 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist Concur MCP sicher?

Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.

Läuft er auf meinem Computer oder in der Cloud?

Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.4.1) kam vor 3 Tagen in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Node.js auf deinem Computer.

Was kann ich stattdessen nutzen?

In derselben Kategorie: Finance Toolkit, SolidInvoice, Korea Tax Calculator

Alternativen

Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.

So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

Finance Toolkit

von JerBouma

500+ transparent financial methods calculated from raw statements, not third-party endpoints.

Computer oder Cloud★ 5.496MITAktualisiert gestern
Installieren

SolidInvoice

von SolidInvoice

Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.

Läuft in der Cloud★ 981MITAktualisiert vor 8 Tagen
Installieren

Korean tax calculation and tax-audit judgment MCP: 96 tools with statutory citations.

Läuft auf deinem Computer★ 97MITAktualisiert gestern
Installieren

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

SAP Concur MCP

A Model Context Protocol server that connects Claude to SAP Concur: your expense reports, the expenses on them, available (unassigned) expenses, receipts, and Concur Travel trips — read and write, with every write confirmation-gated.

[!WARNING]

AI-developed project. This codebase was entirely built and is actively maintained by Claude. No human has audited the implementation. Review all code and tool permissions before use.

[!CAUTION]

Unofficial and unsupported. This server does not use Concur's documented partner API. It calls the internal GraphQL API the Concur web app itself uses, authenticated with your own signed-in browser session. It may break without notice, and automated use may conflict with SAP Concur's or your employer's terms. Use it only for your own account, at your own discretion.

What you can do

Ask Claude things like:

  • *"Which of my Concur reports are still unsubmitted, and what's blocking them?"*
  • *"Show me the card transactions that aren't on a report yet."*
  • *"Create a report called 'Austin offsite' and move last week's Uber and hotel charges onto it."*
  • *"Upload ~/Downloads/dinner.pdf and attach it to the dinner expense."*
  • *"When does my next trip leave, and what hotel am I in?"*

Requirements

Installation

Claude Code plugin
claude plugin marketplace add chrischall/concur-mcp

claude plugin install concur@chrischall

Any MCP host (npx)
{

"mcpServers": { "concur": { "command": "npx", "args": ["-y", "@chrischall/concur-mcp"], "env": { "CONCUR_DC": "us2" } } } }

Claude Desktop (.mcpb)

Install the .mcpb bundle from the latest release. The installer asks for your datacenter (default us2).

How it authenticates

Concur's web app authenticates its API calls with an HttpOnly JWT cookie that the page itself cannot read. This server uses the fetchproxy bridge only to read three session cookies from your signed-in Concur tab: JWT, plus Concur's legacy session cookies OTSESSIONAABQRD and OTSESSIONAABQRN. Every API call is then made from Node with Authorization: Bearer and a Cookie header carrying whichever OTSESSION cookies the tab had — the parts of Concur still served by its legacy services (report keys, currencies, available receipts, permissions) answer an error without them. The cookies are held in memory only and never appear in an error or a log; the only thing written under your home directory is the bridge's pairing identity.

The token lives 60 minutes. The server re-reads the cookies (all together) from your tab when the token is within two minutes of expiry, or once on a 401 (one re-read and one retry per call, never a loop). A read that fails the way a stale OTSESSION cookie fails gets the same single re-read and retry. Concur keeps the cookies fresh while a tab is open, so keep a signed-in Concur tab open while you use the tools. concur_healthcheck reports which source supplied the token, how many minutes it has left and whether the legacy session cookie was found — never a cookie value.

Upgrading from an earlier build? The bridge scope grew from JWT alone to JWT + the two OTSESSION cookies. The pair grant is per-scope, so an already-paired server must be re-approved once: the next call answers with a new pair code (or a scope-changed notice) — approve it in the ContextMint Bridge popup.

Pairing (once)
  1. Install ContextMint Bridge (Chrome: load the release zip unpacked) and sign in to Concur in that browser.
  2. Ask Claude to run concur_healthcheck. The first call answers with a pair code.
  3. Approve that code in the ContextMint Bridge popup. The trust persists across restarts (it lives in ~/.fetchproxy/identity/).

More than one browser? If ContextMint Bridge is installed in several browsers, each one dials the same local port, and the pair code can be approved in any of them. Approve it in the browser that holds your Concur session — the server pins whichever extension approved it, and only that browser's tab can supply the cookie. Lines like refusing an extension whose identity is not the one this MCP paired with on stderr are the *other* browser being turned away; they are harmless.

Paired the wrong browser, or changed browsers? Revoke concur-mcp in the ContextMint Bridge popup, clear the server's pinned extension with fpx trust clear concur-mcp (from @fetchproxy/cli; or delete ~/.fetchproxy/identity/concur-mcp.extension-trust.json), restart the server, and pair again from the right browser.

Configuration

Env varDefaultPurpose
CONCUR_DCus2Your datacenter: the first label of your signed-in tab's host (us2 for us2.concursolutions.com, eu2, …). Must match the session token's issuer, or every call fails with an error that says which value to use.
CONCUR_WS_PORT37149The fetchproxy bridge port. The whole fetchproxy fleet and ContextMint Bridge share 37149; override only for local testing (or when a host injects a per-registration port).
CONCUR_OUTPUT_DIR~/Downloads/concur-mcpWhere concur_get_receipt saves downloaded receipts (never overwriting an existing file).
CONCUR_UPLOAD_ROOTS~/Downloads, ~/Documents, ~/Desktop, plus the cwd when it is a folder inside your home directory (never / or home itself — Claude Desktop starts the server in /)The only folders concur_upload_receipt will read from (a path-delimiter-separated list; ~ expanded). A hosted server refuses every path (use concur_upload_slots or inline).
CONCUR_INLINE_RECEIPTSoff locally, on when hostedtrue makes concur_get_receipt return the image in the result instead of writing a file (over 10 MiB it is saved locally, or a signed link when hosted).
MCP_USER_TZthe server's zoneYour IANA time zone (e.g. America/New_York), used for "today" when concur_create_report defaults reportDate. Set it when hosted — a hosted server runs in UTC, so an evening report would otherwise be dated tomorrow.
CONCUR_DEBUGoffLog the bridge's role and lifecycle to stderr.
MCP_CONFIRM_MODEask-userWhat a write does on a client that cannot show a confirmation prompt — see below.
MCP_CONFIRM_ELICITATIONonoff never shows a confirmation prompt, so every client takes the MCP_CONFIRM_MODE path (for clients that declare prompts but never render them).

Confirming writes

Every tool that changes something in Concur (or emails someone) is confirmation-gated:

  • Clients that support MCP elicitation show a real confirmation prompt describing exactly what will be sent.
  • Elsewhere (claude.ai, Claude Desktop) the first call makes no change: it returns a preview of exactly what would be sent plus a single-use, short-lived confirmToken. Only a repeat call carrying that token writes, and if anything in the request changed in between, the token is refused.

MCP_CONFIRM_MODE decides who may use that token:

ValueBehaviour
ask-user (default)The model must show you the preview and get your approval in chat before reusing the token.
autoThe model may use the token itself after seeing the preview.
refuseWrites are refused on clients without a confirmation prompt. An unrecognised value is treated as refuse.

Text that comes back from Concur — vendor names, comments, trip details, emails — is treated as untrusted data: it can never authorise a write.

Tools

Most read tools take view: compact | full | raw (default compact): compact drops the fields you rarely need, full keeps them all, raw is Concur's response unprojected.

Session and lookups
ToolWhat it does
concur_healthcheckWhich source supplied the token, whether the API accepted it, round-trip time, minutes to expiry
concur_whoamiYour Concur user id, datacenter, token minutes left, and enabled features
concur_list_expense_typesExpense types a report's policy allows (id, name, group)
concur_list_payment_typesPayment types you can put on an expense (cash, company card, …)
concur_list_currenciesCurrencies Concur accepts, optionally filtered
concur_search_locationsExpense locations by city (optionally country / subdivision)
Reports and expenses (read)
ToolWhat it does
concur_list_reportsYour reports by status (ALL, ACTIVE, UNSUBMITTED, SENT_FOR_PAYMENT) and date range
concur_get_reportOne report: header, every expense entry, and its exceptions (blocking ones prevent submission)
concur_get_report_timelineA report's timeline (comments and workflow events) and audit trail
concur_get_expenseOne expense: form fields by label, itemizations, receipt, comments, exceptions
concur_list_available_expensesCard transactions, e-receipts and mobile captures not yet on a report
Reports and expenses (write — all confirmation-gated)
ToolWhat it doesReversible?
concur_create_reportCreate an unsubmitted reportyes (concur_delete_report)
concur_update_reportChange header fields; sends only what changesyes
concur_delete_reportDelete an unsubmitted report and every expense on itno
concur_add_report_commentAdd a comment approvers will seeno (comments cannot be deleted)
concur_submit_reportSend a report to your approverno — it reaches a person; concur_recall_report can pull it back before approval
concur_recall_reportRecall a submitted, unapproved reportyes
concur_create_expenseAdd an expense to an unsubmitted report; any editable form field by label (custom ones, Ticket Number, From/To Location, …); a foreign currency gets Concur's rate for the dateyes
concur_update_expenseChange an expense, including those form fields and the exchange rate; sends only what changesyes
concur_delete_expensesDelete expenses from a report (card transactions return to available expenses)no
concur_copy_expenseDuplicate an expenseyes
concur_move_available_expenses_to_reportMove available expenses onto a reportno (Concur has no move-back)
concur_delete_available_expensesDelete available expensesno
Attendees
ToolWhat it doesReversible?
concur_search_attendeesSearch the attendee directory (colleagues, saved guests) by name or emailread
concur_set_attendeesReplace an expense's attendee list (you first by default), splitting the amount evenly — confirmation-gatedno (no tool reads the previous list back, or clears it)
Receipts
ToolWhat it doesGated?
concur_list_available_receiptsReceipt images in your receipt store that are not attached to an expenseread

| concur_get_receipt | Downl

Nur der Anfang wird gezeigt; den Rest findest du im Repo

PopNx fragen