Concur MCP
An unofficial MCP server for SAP Concur that allows agents to manage expense reports, expenses, receipts, and travel trips. It authenticates via a browser session bridge to read session cookies and interact with Concur's internal GraphQL API, supporting tasks like checking unsubmitted reports, uploading receipts, and querying trip details.
Package and access
Local package with source-attributed installation metadata. Koskamo does not execute packages during review.
What you can do with it
- Check which Concur reports are unsubmitted and what is blocking them
- Show card transactions not yet on a report
- Create a report and move expenses onto it
- Upload a PDF receipt and attach it to an expense
Source and maintenance
- Maintenance checked
Packages and installation
Source-provided package data. Koskamo has not executed or live-probed this package.
@chrischall/concur-mcp 0.3.4
{
"version": "0.3.4",
"transport": "stdio",
"identifier": "@chrischall/concur-mcp",
"registryType": "npm",
"environmentVariables": [
{
"name": "CONCUR_DC",
"format": "string",
"description": "Concur datacenter from your signed-in tab's host (e.g. us2, eu2). Defaults to us2."
},
{
"name": "CONCUR_WS_PORT",
"format": "string",
"description": "fetchproxy bridge concentrator port. Defaults to the fleet-shared 37149."
},
{
"name": "CONCUR_OUTPUT_DIR",
"format": "string",
"description": "Where `concur_get_receipt` saves downloaded receipts (never overwriting an existing file). Defaults to ~/Downloads/concur-mcp."
},
{
"name": "CONCUR_UPLOAD_ROOTS",
"format": "string",
"description": "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 ~/Downloads, ~/Documents and ~/Desktop, plus the working directory when it is a folder inside your home directory (never `/` or home itself)."
},
{
"name": "CONCUR_INLINE_RECEIPTS",
"format": "boolean",
"description": "`true` makes `concur_get_receipt` return the image in the result instead of writing a file. Off locally, on when hosted."
}
]
}Tools
Reported by the attributed source; not independently observed by Koskamo.
Connect from your client
Each snippet configures the same source-provided package; replace placeholders before use.
Cursor
{
"mcpServers": {
"concur-mcp": {
"command": "npx",
"args": [
"-y",
"@chrischall/concur-mcp@0.3.4"
],
"env": {
"CONCUR_DC": "<YOUR_CONCUR_DC>",
"CONCUR_WS_PORT": "<YOUR_CONCUR_WS_PORT>",
"CONCUR_OUTPUT_DIR": "<YOUR_CONCUR_OUTPUT_DIR>",
"CONCUR_UPLOAD_ROOTS": "<YOUR_CONCUR_UPLOAD_ROOTS>",
"CONCUR_INLINE_RECEIPTS": "<YOUR_CONCUR_INLINE_RECEIPTS>"
}
}
}
}Cline
{
"mcpServers": {
"concur-mcp": {
"command": "npx",
"args": [
"-y",
"@chrischall/concur-mcp@0.3.4"
],
"env": {
"CONCUR_DC": "<YOUR_CONCUR_DC>",
"CONCUR_WS_PORT": "<YOUR_CONCUR_WS_PORT>",
"CONCUR_OUTPUT_DIR": "<YOUR_CONCUR_OUTPUT_DIR>",
"CONCUR_UPLOAD_ROOTS": "<YOUR_CONCUR_UPLOAD_ROOTS>",
"CONCUR_INLINE_RECEIPTS": "<YOUR_CONCUR_INLINE_RECEIPTS>"
}
}
}
}VS Code
{
"servers": {
"concur-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@chrischall/concur-mcp@0.3.4"
],
"env": {
"CONCUR_DC": "<YOUR_CONCUR_DC>",
"CONCUR_WS_PORT": "<YOUR_CONCUR_WS_PORT>",
"CONCUR_OUTPUT_DIR": "<YOUR_CONCUR_OUTPUT_DIR>",
"CONCUR_UPLOAD_ROOTS": "<YOUR_CONCUR_UPLOAD_ROOTS>",
"CONCUR_INLINE_RECEIPTS": "<YOUR_CONCUR_INLINE_RECEIPTS>"
}
}
}
}Claude Desktop
{
"mcpServers": {
"concur-mcp": {
"command": "npx",
"args": [
"-y",
"@chrischall/concur-mcp@0.3.4"
],
"env": {
"CONCUR_DC": "<YOUR_CONCUR_DC>",
"CONCUR_WS_PORT": "<YOUR_CONCUR_WS_PORT>",
"CONCUR_OUTPUT_DIR": "<YOUR_CONCUR_OUTPUT_DIR>",
"CONCUR_UPLOAD_ROOTS": "<YOUR_CONCUR_UPLOAD_ROOTS>",
"CONCUR_INLINE_RECEIPTS": "<YOUR_CONCUR_INLINE_RECEIPTS>"
}
}
}
}Let your agent find its tools
Find servers like Concur MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.