MCP Server
Connect your favorite AI tool to Finpy and manage your fund data through conversation.
Finpy MCP is a Model Context Protocol server that connects AI tools like Claude Desktop, Cursor, and VS Code to your Finpy data. Instead of navigating the UI, you can manage cap tables, deals, holdings, valuations, and financials through natural language conversation. The server exposes 50 tools across 11 categories.
Claude Desktop
Anthropic's desktop app for macOS & Windows.
VS Code / Cursor
IDE extensions with MCP support.
Claude Code / CLI
Terminal-based AI coding assistants.
Install the MCP server
pip install finpy-mcp — or with uv: uv tool install finpy-mcp
Login
Run finpy-cli login in your terminal. It opens your browser for authentication, then saves credentials locally.
Configure your AI client
Add the Finpy MCP server to your client's configuration (see Configuration below).
finpy-cli status (check auth), finpy-cli set-org 4 (switch org), finpy-cli logout (delete credentials).Claude Desktop
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"finpy": {
"command": "finpy-mcp"
}
}
}Restart Claude Desktop after saving.
Cursor
macOS: .cursor/mcp.json · Windows: .cursor\mcp.json
{
"mcpServers": {
"finpy": {
"command": "finpy-mcp"
}
}
}Restart Cursor after saving.
Claude Code
claude mcp add finpy -- finpy-mcpContext (4)
| Tool | Description |
|---|---|
| list_organizations | List orgs the user has access to |
| set_context | Set active organization + entity for all operations |
| list_entities | List entities in current organization |
| get_entity_details | Get details of a specific entity |
Entity (2)
| Tool | Description |
|---|---|
| create_entity | Create new entity (fund/company/individual/syndicate) |
| update_entity | Update name, currency, entity_type, is_discoverable |
Cap Table (13)
| Tool | Description |
|---|---|
| list_stakeholders | List stakeholders on current entity's cap table |
| create_stakeholder | Add stakeholder with type, governance rights, carry, pref return |
| update_stakeholder | Update type, carry %, pref return, voting, pro rata, board seats, tier |
| list_funding_rounds | List funding rounds for current entity |
| create_funding_round | Create round (seed, series_a, etc.) with target/raised amounts |
| list_securities | List all securities across funding rounds |
| create_security | Create security class (common, preferred, convertible, etc.) |
| list_transactions | List all security transactions on current entity |
| create_transaction | Create transaction (issuance, distribution, etc.) with debit/credit |
| get_cap_table | View computed cap table with ownership breakdown |
| list_commitments | List capital commitments (pro-rata subscription lifecycle) |
| list_positions | List stakeholder positions (investor view across cap tables) |
| list_distributions | List distributions received as investor |
Deals (7)
| Tool | Description |
|---|---|
| list_deals | List deals for current entity |
| create_deal | Create deal (fundraising, acquisition, etc.) |
| update_deal | Update name, target_amount, share_price, is_discoverable |
| update_deal_status | Change deal lifecycle: draft → active → closed → cancelled |
| list_deal_commitments | List commitments on a deal |
| express_interest | Express soft/firm interest in a deal |
| execute_deal | Execute deal → creates funding round + security + transactions |
Deal Pipeline (3)
| Tool | Description |
|---|---|
| list_deal_pipeline | List prospective deals being evaluated |
| create_pipeline_entry | Add deal to pipeline (from pitch deck, info memo, etc.) |
| update_pipeline_entry | Advance status, update thesis, add DD notes |
Holdings (7)
| Tool | Description |
|---|---|
| list_holdings | List portfolio holdings |
| create_holding | Create holding (equity, debt, etc.) |
| update_holding | Update status, fair_value, ownership %, investment amount |
| list_holding_cash_flows | List cash flows on holdings (investments, distributions, fees) |
| create_holding_cash_flow | Record cash flow (debit = cash IN, credit = cash OUT from entity) |
| get_entity_performance | View computed entity performance (IRR, TVPI, DPI, RVPI) |
| get_holdings_performance | View per-holding performance breakdown |
Performance (1)
| Tool | Description |
|---|---|
| get_stakeholder_returns | View per-stakeholder return metrics |
Valuations (3)
| Tool | Description |
|---|---|
| list_valuations | List NAV/valuation snapshots over time |
| create_valuation | Create valuation snapshot with optional performance metrics |
| update_valuation | Update valuation value, NAV, IRR, TVPI, etc. |
Fees (2)
| Tool | Description |
|---|---|
| list_fees | List fees (management, performance, setup, etc.) |
| create_fee | Create fee with amount/percentage, frequency, type |
KPIs (4)
| Tool | Description |
|---|---|
| list_kpis | List KPI definitions for current entity |
| create_kpi | Define a KPI (Revenue, MRR, Burn Rate, etc.) |
| list_kpi_values | List data points for a specific KPI |
| create_kpi_value | Add a KPI data point (year, quarter, value) |
Financials (4)
| Tool | Description |
|---|---|
| create_income_statement | Create with revenue, COGS, expenses |
| create_balance_sheet | Create with assets, liabilities, equity |
| create_cash_flow_statement | Create with operating, investing, financing flows |
| create_financial_metrics | Create financial metrics record |
“List my entities”
→ calls list_entities() → shows your entities
“Set context to Acme Capital”
→ calls set_context(org=1, entity=1) → confirms
“Show me the cap table”
→ calls get_cap_table() → shows stakeholders + ownership
“Create a stakeholder John Doe as limited partner with 8% preferred return”
→ calls create_stakeholder(...) → confirms creation
“Activate deal Series A”
→ calls update_deal_status(deal_id=1, status="active") → confirms
“Set fair value of Acme Corp holding to $10M”
→ calls update_holding(holding_id=1, current_fair_value=10000000) → confirms
“Add a 2% annual management fee for 2026”
→ calls create_fee(year=2026, fee_type="management", percentage=2, frequency="annual")
“Create KPI Revenue as decimal, then add $1M for 2026”
→ calls create_kpi(name="Revenue") → then create_kpi_value(kpi_id=1, year=2026, value=1000000)
Password never reaches the LLM — login happens in terminal only
entity_id comes from context — the LLM cannot access entities it shouldn't
No delete tools — prevents accidental data loss through LLM
No update on securities/transactions — immutable financial records
Credentials stored locally — ~/.finpy/credentials.json with chmod 600
Auto token refresh — transparent 401 → refresh flow
pip
pip install --upgrade finpy-mcpuv
uv tool upgrade finpy-mcp• Python 3.12+
• Active Finpy account
• Active login via finpy-cli login