Indexed FP&A MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Indexed FP&A MCP Servershow me the cash flow forecast for this month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Indexed FP&A — MCP Server
Gives Claude full read/write access to the Indexed FP&A portal's data — everything a person can do manually on the portal, through conversation.
How it works
The server runs the portal itself, headlessly. On every tool call it:
Fetches the live
forecast_datarow from Supabase (same row the portal syncs).Loads the portal's
index.html(from GitHub Pages, cached 5 min) and executes its<script>inside a sandboxed VM with a fake DOM, seeding the fakelocalStoragefrom the cloud row — exactly how a browser session hydrates.Calls the portal's own functions (
getD,buildCFGroups,getFounderPayments,recalcARRow,parseXeroAccountTx, …) to compute answers or apply changes.For writes, PATCHes only the touched columns back to Supabase (
ar_fcst,ap_fcst,ct_map,gl_mappings,cf_tx_overrides,cf_net_overrides,actuals_snap).
Because the portal's own code computes everything, the numbers Claude reports are always identical to what the portal shows — and when the portal's logic changes, the server picks it up automatically on the next HTML refresh. No drift, no re-implementation.
Related MCP server: Portals MCP
Tools (25)
Read — get_dashboard_metrics, get_cf_statement, get_cf_groups, get_cf_transactions, get_bank_breakdown, get_financials, get_ar, get_ap, get_client_history, get_contacts, get_comments
Analysis — forecast_client_cash (collection-rate based cash proposals)
Write — add/update/delete_ar_rows, add/update/delete_ap_rows, set_contact_mapping, set_gl_mapping, manage_dashboard_rows, set_cf_override, import_xero_data, add_comment, resolve_comment
Run locally
npm install
npm start # port 3000
DRY_RUN=1 npm start # writes are logged, not sent — safe testing
node test-client.js # full test suite against localhost:3000No env vars needed — Supabase config is extracted from the portal source. Comment tools additionally need SUPABASE_SERVICE_KEY (see .env.example).
Deploy (Railway — recommended)
Needs a full Node runtime (uses the vm module and fetch), so a container host works; edge platforms (Cloudflare Workers, Vercel Edge) do not.
npm i -g @railway/cli
cd indexed-fpa-mcp
railway login # opens browser
railway init # create a project
railway up # build + deploy this folder (no GitHub needed)
railway domain # generate a public HTTPS URLThen set environment variables (Railway dashboard → Variables, or railway variables set):
Variable | Required | Purpose |
| yes for prod | Comma-separated per-person tokens, each |
| for comment tools | service_role key (Supabase → Settings → API). |
Generate a token per person: node -e "console.log(require('crypto').randomBytes(24).toString('hex'))".
Verify: curl https://<app>.railway.app/health → {"status":"ok",...}.
Access control — restricting to specific people
Two layers, together, mean only people you personally hand a token to can use it:
Server token gate —
/mcprejects any request without a valid token (401). Each person gets their own.Personal connector in Claude.ai — each authorized person adds the connector to their own account with their own token in the URL. It is never published to an org directory, so nobody else can discover or add it.
To revoke someone: remove their label:token entry from MCP_AUTH_TOKEN and redeploy. Everyone else is unaffected.
Connect to Claude.ai
Each person, in their own account: Settings → Connectors → Add custom connector. URL (their own token):
https://<app>.railway.app/mcp?token=<their-token>(The server also accepts the token as an Authorization: Bearer header.)
Notes
GET /healthhydrates a full portal session and reports the actual months — good smoke test.The portal auto-pushes its entire state when a user edits there. If someone keeps a stale portal tab open for hours and then edits, their push can overwrite changes made through Claude in the meantime. Refreshing the portal (or "Pull latest") before editing avoids this — same rule as between two human users.
Xero imports through Claude: attach the Xero .xlsx in chat, Claude converts the sheet to raw rows and calls
import_xero_data; the portal's own parser processes them.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceEnables AI-powered portfolio analysis for Wealthfolio, allowing Claude to query and analyze investment holdings, asset allocation, real estate properties, and execute transactions through natural language.1
- Alicense-quality-maintenanceEnables Claude to design and build interactive 3D games within the Portals virtual platform through direct API integration. It facilitates automated asset placement, interaction logic configuration, and quest management using natural language commands.4
- Apache 2.0
- Alicense-qualityDmaintenanceGives Claude full read/write access to your Notion workspace with token-efficient compression and parallel operations.1Apache 2.0
Related MCP Connectors
Connect your team's living knowledge base — docs, data, issues, CRM — to Claude and ChatGPT.
Trade Robinhood through natural language in Claude Code.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/KM-Karan-11/indexed-fpa-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server