MCP Directory

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

  1. 1Open Cursor → Settings → MCP → Add new MCP server (or edit ~/.cursor/mcp.json directly).
  2. 2Paste the Ramp MCP Server config below into the "mcpServers" object.
  3. 3Fill in placeholder secrets, then save.
  4. 4Cursor reloads MCP servers automatically — check Settings → MCP for a green status dot.
  5. 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_data

Set up and process data into the ephemeral in-memory SQLite database for analysis.

execute_query

Run a SQL query against the ephemeral in-memory database.

clear_table

Delete/clear a table from the ephemeral in-memory database.

get_ramp_categories

Fetch Ramp expense categories directly.

get_currencies

Fetch supported currencies directly.

load_transactions

Load transactions into the database (requires transactions:read scope).

load_reimbursements

Load reimbursements into the database (requires reimbursements:read scope).

load_bills

Load 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.

View repo Full Ramp MCP Server page