
How to add Ramp MCP Server to Cursor
Retrieve and analyze Ramp finance data (transactions, bills, reimbursements) via an in-memory SQLite ETL pipeline. Paste the config into ~/.cursor/mcp.json and restart Cursor.
Last updated June 14, 2026 · 34★ · stdio · apikey
Cursor config for Ramp MCP Server
git clone git@github.com:ramp/ramp-mcp.git{
"mcpServers": {
"ramp-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/<ABSOLUTE-PATH-TO>/ramp-mcp",
"run",
"ramp-mcp",
"-s",
"transactions:read,reimbursements:read"
],
"env": {
"RAMP_CLIENT_ID": "<CLIENT_ID>",
"RAMP_CLIENT_SECRET": "<CLIENT_SECRET>",
"RAMP_ENV": "<demo|qa|prd>"
}
}
}
}Setup steps
- 1Open Cursor → Settings → MCP → Add new MCP server (or edit ~/.cursor/mcp.json directly).
- 2Paste the Ramp MCP Server config below into the "mcpServers" object.
- 3Fill in placeholder secrets, then save.
- 4Cursor reloads MCP servers automatically — check Settings → MCP for a green status dot.
- 5Ask Cursor to use one of Ramp MCP Server's tools to confirm it's connected.
Before you start
- A Ramp account with Developer API access (create a client under Profile > Developer > Create app)
- A Ramp client ID and secret with client credentials enabled and the desired scopes granted
- uv (Astral) installed
- The repository cloned locally (run via uv --directory)
What Ramp MCP Server can do in Cursor
process_dataSet up and process data into the ephemeral in-memory SQLite database for analysis.
execute_queryRun a SQL query against the ephemeral in-memory database.
clear_tableDelete/clear a table from the ephemeral in-memory database.
get_ramp_categoriesFetch Ramp expense categories directly.
get_currenciesFetch supported currencies directly.
load_transactionsLoad transactions into the database (requires transactions:read scope).
load_reimbursementsLoad reimbursements into the database (requires reimbursements:read scope).
load_billsLoad bills into the database (requires bills:read scope).
Security
Uses Ramp Developer API client-credentials auth: set RAMP_CLIENT_ID and RAMP_CLIENT_SECRET in the config env. Grant only the OAuth scopes you need on the Ramp client and pass the matching comma-separated scopes via the -s flag. Defaults to the demo environment (RAMP_ENV=demo); set RAMP_ENV=prd to operate on real production financial data.
Ramp MCP Server + Cursor FAQ
Where is the Cursor config file?
Cursor reads MCP servers from ~/.cursor/mcp.json. Paste the Ramp MCP Server config there under the "mcpServers" key and restart the client.
Is Ramp MCP Server safe to use with Cursor?
Uses Ramp Developer API client-credentials auth: set RAMP_CLIENT_ID and RAMP_CLIENT_SECRET in the config env. Grant only the OAuth scopes you need on the Ramp client and pass the matching comma-separated scopes via the -s flag. Defaults to the demo environment (RAMP_ENV=demo); set RAMP_ENV=prd to operate on real production financial data.
Does it hit my real Ramp data by default?
No. All requests go to the demo environment by default. Set RAMP_ENV=prd to use production data.
How does it handle large datasets?
It uses an ETL pipeline into an ephemeral in-memory SQLite database so the LLM can query with SQL instead of loading everything into context. Very large datasets may still be unprocessable due to API/client limits; prompt the model to avoid the REPL and keep responses concise to avoid timeouts.
Why do some load tools fail?
Each load tool requires a specific Ramp OAuth scope (e.g. transactions:read). Enable the scope on your Ramp client and include it in the comma-separated -s CLI argument when starting the server.