finpy-mcp
Finpy MCP Server — Manage cap tables, deals, holdings, and financials through AI conversation.
Connect your favorite AI tool (Claude Desktop, Cursor, VS Code, Claude Code) to the Finpy platform and work with your financial data through natural language.
Features
- 76 asset management tools plus 14 Factor Markets tools (90 total)
- Cap table management — stakeholders, funding rounds, securities, transactions
- Deal flow — create deals, express interest, execute fundraising rounds
- Portfolio tracking — holdings, valuations, performance metrics (IRR, MOIC, TVPI)
- Financial reporting — income statements, balance sheets, cash flow statements
- Secure — OAuth device flow login, credentials stored locally, no passwords sent to AI
Quick Start
1. Install
pip install finpy-mcp
Or with uv:
# Install uv (if not already installed)
brew install uv
# Add uv tools to PATH (one-time setup)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# Install finpy-mcp
uv tool install finpy-mcp
Already installed? Update:
pip install --upgrade finpy-mcp
# or
uv tool upgrade finpy-mcp
2. Login
finpy-cli login
Opens your browser automatically. Sign in on the Finpy web app, then return to your terminal.
3. Configure your AI client
Claude Desktop — Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"finpy": {
"command": "finpy-mcp"
}
}
}
Cursor — Edit .cursor/mcp.json:
{
"mcpServers": {
"finpy": {
"command": "finpy-mcp"
}
}
}
Claude Code:
claude mcp add finpy -- finpy-mcp
Restart your AI client after configuring.
4. Start talking
Open a new conversation and say:
- "List my entities"
- "Show me the cap table for Nexotype"
- "Create a stakeholder John Doe as limited partner with 8% preferred return"
- "Create an income statement for 2026 with $1M revenue"
Available Tools (89)
Asset Manager tools are stateless: discover IDs with list_organizations() / list_entities(),
then pass entity_id (and organization_id for create_entity) explicitly to each tool. There
is no set_context — scope is an argument on every call. Every write tool also accepts an
optional organization_id, the organization you are acting as: pass it when you belong to more
than one, since a shared entity can grant you a different role per organization. For the full
per model capability map (which operations are exposed, and why some are web only), see
documentation/capability-matrix.md.
| Category | Tools |
|---|---|
| Context | list_organizations, list_entities, get_entity_details |
| Entity | create_entity, update_entity |
| Cap Table | list_stakeholders, create_stakeholder, update_stakeholder, list_funding_rounds, create_funding_round, list_securities, create_security, list_transactions, create_transaction, reverse_transaction, get_cap_table, list_commitments, list_positions, list_distributions |
| Deals | list_deals, create_deal, update_deal, update_deal_status, list_deal_commitments, express_interest, execute_deal |
| Holdings | list_holdings, create_holding, update_holding, list_valuations, create_valuation, update_valuation, delete_valuation, list_holding_cash_flows, create_holding_cash_flow, reverse_holding_cash_flow, list_deal_pipeline, create_pipeline_entry, update_pipeline_entry, delete_pipeline_entry, get_entity_performance, get_holdings_performance, get_stakeholder_returns |
| Financials | create_income_statement, update_income_statement, delete_income_statement, create_balance_sheet, update_balance_sheet, delete_balance_sheet, create_cash_flow_statement, update_cash_flow_statement, delete_cash_flow_statement, create_financial_metrics, update_financial_metrics, delete_financial_metrics, list_kpis, create_kpi, update_kpi, list_kpi_values, create_kpi_value, update_kpi_value, delete_kpi_value |
| Fees | list_fees, create_fee, update_fee, delete_fee |
| Audit | list_audit_trail, list_entity_audit_trail |
| Factor Markets | list_factormarkets_valuations, get_factormarkets_valuation, list_factormarkets_income_statements, list_factormarkets_balance_sheets, list_factormarkets_cash_flow_statements, list_backtest_results, list_backtest_vintages, and 7 more backtest tools |
CLI Commands
finpy-cli login # Login via browser (OAuth device flow)
finpy-cli login --basic # Login with email/password (headless fallback)
finpy-cli logout # Delete stored credentials
finpy-cli status # Show auth status
Security
- Passwords never reach the AI — login happens in your browser
- Credentials stored locally in
~/.finpy/credentials.json(chmod 600) - Automatic token refresh on expiry
- Delete is a soft delete only: the row is kept and can be restored from the web Trash page. MCP exposes delete on 8 leaf records without side effects (destructiveHint set); ledgers are reversed, never deleted. See documentation/capability-matrix.md.
- All API validations, permissions, and audit logging apply
Requirements
- Python 3.12+
- A Finpy account
Links
Metadata
Release files for finpy-mcp 0.8.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| finpy_mcp-0.8.11.tar.gz | 51.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| finpy_mcp-0.8.11-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 115.4 kB
Release files / finpy_mcp-0.8.11.tar.gz
| Download URL | finpy_mcp-0.8.11.tar.gz |
|---|---|
| Size | 51.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c73485d7355c30310107a268c8908282c2cbfa7813e64bd93f6edea924516e97
|
|
BLAKE2b-256 checksum How to use checksums |
f319a21aa7382f7bbbeeb560356f9cd799f95a5e50651edc859c1d8ef4cd96af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / finpy_mcp-0.8.11-py3-none-any.whl
| Download URL | finpy_mcp-0.8.11-py3-none-any.whl |
|---|---|
| Size | 64.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d2d3adde3a7d814e1c71b29afbd679c424e017372376f5caca3797a7c1ad1240
|
|
BLAKE2b-256 checksum How to use checksums |
eb2c6dd2311814c4ce41fe683baa32a5be65c7200edd71adac288df9b5b0aac2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for finpy-mcp 0.8.11
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.