@saasflow/mcp
v0.3.1
Published
Model Context Protocol server for the SaaSFlow public API.
Readme
@saasflow/mcp
Model Context Protocol server for the SaaSFlow public API. Lets MCP-aware clients (Claude Desktop, Claude Code, Cursor, etc.) read SaaSFlow data on your behalf.
npm install -g @saasflow/mcpQuick start
Add the server to your MCP client's config. For Claude Desktop, in claude_desktop_config.json:
{
"mcpServers": {
"saasflow": {
"command": "saasflow-mcp",
"env": {
"SAASFLOW_API_KEY": "sf_live_…",
"SAASFLOW_COMPANY_ID": "cmp_…"
}
}
}
}Restart the client and the SaaSFlow tools appear in the tool picker.
Environment
| Variable | Required | Default | Notes |
|---|---|---|---|
| SAASFLOW_API_KEY | yes | — | API key generated in the SaaSFlow web UI. |
| SAASFLOW_COMPANY_ID | no | — | Default company id for tool calls; tools also accept an explicit companyId arg. |
| SAASFLOW_BASE_URL | no | https://api.saasflow.com | Override for staging or self-hosted. |
| SAASFLOW_MCP_WRITES | no | 0 | Set to 1 to enable mutation tools (none ship in v0.1). |
Tools
Read-only by default. Each tool's input schema is derived from the public API's Zod schemas, so MCP clients render typed inputs and LLMs fill them correctly without guessing.
General:
list_companies,get_company,list_company_userslist_transactions,get_transactionlist_customerssearch— full-text search across the companyrun_data_batch— multiple data slices in one round trip
Data slices — one tool per slice, named data_<sliceName>. Examples:
data_mrrAtDate(mrrType, date)data_monthlyData(mrrType, startDate, endDate)data_periodDetails(startDate, endDate, dateDefinition, splitBy, …)data_topExpenseVendors(startDate, endDate, limit)data_revenueExpenses,data_cashFlowTimeSeries,data_balanceTimeSeries,data_cohorts, …
Run tools/list against the server to see the full inventory and each tool's input schema.
Auth
This package authenticates with API keys (SAASFLOW_API_KEY). It's designed for MCP clients that can spawn a local subprocess — Claude Desktop, Claude Code, Cursor, etc. The keys are scoped per-company and per-permission-set (api_keys:manage in the SaaSFlow web UI).
For browser-based clients that can't spawn subprocesses (Claude.ai web, ChatGPT custom connectors), use the hosted MCP server at https://api.saasflow.com/mcp. It implements OAuth 2.1 with Dynamic Client Registration and PKCE — your client adds the URL once, walks through a sign-in + consent screen, and receives a short-lived access token bound to your account. Same tool catalog as this stdio version. No installation, no env vars, no API key issuance.
| | This package (stdio) | Hosted (api.saasflow.com/mcp) |
|---|---|---|
| Transport | stdio (subprocess) | HTTP / Streamable |
| Auth | API key (sf_…) | OAuth 2.1 + PKCE |
| Companies | One (via SAASFLOW_COMPANY_ID) or many (via tool arg) | Many (via tool arg only) |
| Best for | Local-first agent workflows, dev/CI scripts | Web-based AI products, third-party integrations |
License
MIT
