Ghostfolio MCP
MCP server for Ghostfolio portfolio management and financial data access
Connector by mhajder · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/mhajder-ghostfolio-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: finance-accounting
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 24 read · 8 write · 7 delete
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 39
Read from the source code; the running server may list different tools.
Read 24 · Look things up without changing anything.
export_portfolioget_account_balancesget_account_detailsget_accountsget_asset_profileget_benchmark_performanceget_benchmarksget_dividendsget_dividends_for_importget_exchange_rateget_healthget_historical_data
Show 12 more tools
get_investmentsget_market_data_for_assetget_ordersget_platformsget_portfolio_detailsget_portfolio_holdingsget_portfolio_performanceget_positionget_symbol_dataget_user_infoget_watchlistlookup_symbols
Write 8 · Create, change, send or run things.
add_market_data_pointsadd_to_watchlistcreate_accountcreate_account_balancecreate_activityimport_transactionstransfer_account_balanceupsert_asset_profile
Delete 7 · Delete, drop, revoke or wipe things.
delete_accountdelete_account_balancedelete_activitydelete_asset_profileremove_from_watchlistupdate_accountupdate_activity
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
GHOSTFOLIO_TOKEN
Other settings (environment variables or headers).
GHOSTFOLIO_DISABLED_TAGSGHOSTFOLIO_TIMEOUTGHOSTFOLIO_URLGHOSTFOLIO_VERIFY_SSLLOG_LEVELRATE_LIMIT_ENABLEDRATE_LIMIT_MAX_REQUESTSRATE_LIMIT_WINDOW_MINUTESREAD_ONLY_MODETOOL_SEARCH_ENABLEDTOOL_SEARCH_MAX_RESULTSTOOL_SEARCH_STRATEGY
Network hosts it talks to 3
domain.tld· found in codegithub.com· found in codegofastmcp.com· found in code
Tools (39)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
add_market_data_pointsAdd one or more market data points for a specific asset. Posts to the market-data endpoint for the given data source and symbol. Same (symbol, date) overwrites the existing point; passing the same input twice yields the same end state. Args: data_source: Data source (typically 'MANUAL') symbol: Symbol/ticker of the asset market_data: List of {date, marketPrice} entries Returns: Dictionary containing the upstream response
add_to_watchlistAdd a symbol to the user's watchlist. Args: data_source: Data source (e.g., 'YAHOO', 'COINGECKO') symbol: Symbol/ticker of the asset Returns: Dictionary containing the updated watchlist item information.
create_accountCreate a new account in your portfolio. Creates a new account with the specified name, currency, and optional balance. This is useful for organizing your investments across different account types or platforms. Note: current Ghostfolio versions have no boolean "excluded" flag on an account - exclusion from analysis is done by tagging the account, which is outside this tool's scope. Args: name: Account name (required) currency: Account currency (required, e.g., 'USD', 'EUR') balance: Initial balance for the account (defaults to 0) comment: Optional comment or note for the acc…
create_account_balanceSet an account's balance for a specific date in its balance history. This writes directly to the balance-history series that get_account_balances returns and that get_portfolio_holdings derives its cash figure from - it is not the same as the account's summary balance field. Calling this again for the same account and date updates that entry instead of duplicating it, so setting today's balance is just this call with `date` omitted. The balance is recorded in the account's own currency; Ghostfolio's API does not accept a separate currency for this endpoint. Args: account_id: Account ID …
create_activityCreate a single new transaction/activity.
delete_accountcan change or delete dataDelete an existing account from your portfolio. Deletes an account specified by its ID. Be careful, this might delete associated transactions depending on backend rules! Args: account_id: Account ID to delete Returns: Dictionary containing the deletion status
delete_account_balancecan change or delete dataDelete a single entry from an account's balance history. Args: balance_id: ID of the balance-history entry to delete Returns: Dictionary containing the deleted balance-history entry
delete_activitycan change or delete dataDelete a single activity/transaction by its ID.
delete_asset_profilecan change or delete dataDelete an asset profile. Removes the profile-data record for the given data source and symbol. Be careful, this might delete associated activities and market data depending on backend rules! Args: data_source: Data source (typically 'MANUAL') symbol: Symbol/ticker of the asset to delete Returns: Dictionary containing the deletion status
export_portfolioread-onlyExport portfolio activities/transactions data as JSON. Retrieves portfolio transactions with optional query filters. Args: accounts: Comma-separated list of account IDs activity_ids: Comma-separated list of activity IDs activity_types: Comma-separated list of activity types (BUY, SELL, etc.) asset_classes: Comma-separated list of asset classes data_source: Filter by data source symbol: Filter by symbol/ticker tags: Comma-separated list of tags Returns: Dictionary containing the exported activities list.
get_account_balancesread-onlyGet account balances for a specific account. Retrieves balance information for a specific account including current balance, currency, and balance history. Args: account_id: Account ID to get balances for Returns: Dictionary containing account balance information
get_account_detailsread-onlyGet details for a specific account. Args: account_id: The unique ID of the account to fetch Returns: Dictionary containing the detailed account profile
get_accountsread-onlyGet all accounts in your portfolio including account types and balances. Retrieves a list of all accounts in your portfolio including account types, balances, and account-specific information. Returns: Dictionary containing account information including accounts list and total value
get_asset_profileread-onlyGet asset profile information for a specific symbol. Retrieves detailed profile information about an asset including company information, sector, industry, and other metadata. Args: data_source: Data source (e.g., 'YAHOO', 'COINGECKO', 'MANUAL') symbol: Symbol/ticker of the asset Returns: Dictionary containing asset profile information
get_benchmark_performanceread-onlyCompare portfolio performance against a benchmark symbol starting from a specific date. Args: data_source: Benchmark data source (e.g. 'YAHOO') symbol: Benchmark symbol (e.g. 'URTH') start_date: Comparison start date (YYYY-MM-DD) date_range: Time range (e.g., 'max') accounts: Comma-separated account IDs asset_classes: Comma-separated asset classes filter_data_source: Filter data source filter_symbol: Filter symbol tags: Comma-separated tags with_excluded_accounts: Include excluded accounts Returns: Dictionary containing benchmark comparison perform…
Show 24 more tools
get_benchmarksread-onlyGet all configured benchmarks. Returns: Dictionary containing the list of benchmarks.
get_dividendsread-onlyGet dividend data grouped by time period showing dividend payments and yield. Retrieves dividend income data grouped by the specified time period, showing dividend payments, yield, and income patterns over time. Args: group_by: Grouping period: day, week, month, quarter, year date_range: Time range for dividend data. Options: 1d, 1w, 1m, 3m, 6m, 1y, 2y, 5y, max Returns: Dictionary containing dividend data grouped by the specified period
get_dividends_for_importread-onlyFetch historical dividend data formatted for import for a specific symbol. Args: data_source: Data source (e.g. 'YAHOO', 'COINGECKO') symbol: Symbol/ticker of the asset Returns: Dictionary containing list of dividend transactions formatted for import.
get_exchange_rateread-onlyGet the exchange rate for a given currency symbol on a specific date. Args: symbol: Currency code (e.g. 'USD', 'EUR') date: Date in YYYY-MM-DD format Returns: Dictionary containing the exchange rate value.
get_healthread-onlyGet system health status. Retrieves the health status of the Ghostfolio backend service. This is useful to verify if the server is up and running correctly. Returns: Dictionary containing health status information
get_historical_dataread-onlyGet historical data for a specific symbol on a specific date. Retrieves historical market data for a symbol on a specific date, including price and volume information. Args: data_source: Data source (e.g., 'YAHOO', 'COINGECKO', 'MANUAL') symbol: Symbol/ticker of the asset date: Date in YYYY-MM-DD format Returns: Dictionary containing historical data for the specified date
get_investmentsread-onlyGet investment data grouped by time period showing cash flows and contributions. Retrieves investment activity data grouped by the specified time period, showing cash flows, contributions, and investment patterns over time. Args: group_by: Grouping period: day, week, month, quarter, year date_range: Time range for investment data. Options: 1d, 1w, 1m, 3m, 6m, 1y, 2y, 5y, max Returns: Dictionary containing investment data grouped by the specified period
get_market_data_for_assetread-onlyGet market data for a specific asset. Retrieves current market data for a specific symbol including price, volume, market cap, and other relevant market information. Args: data_source: Data source (e.g., 'YAHOO', 'COINGECKO', 'MANUAL') symbol: Symbol/ticker of the asset Returns: Dictionary containing market data for the specified symbol
get_ordersread-onlyGet all activities/orders from your portfolio, optionally filtered by account. Retrieves a list of all buy/sell orders in your portfolio, optionally filtered by a specific account. Args: account_id: Optional account ID to filter orders by specific account Returns: Dictionary containing order data with activities and pagination
get_platformsread-onlyGet available platforms. Retrieves a list of all available platforms (brokers, exchanges, etc.) that can be used when tracking accounts or transactions. Returns: Dictionary containing available platforms
get_portfolio_detailsread-onlyGet comprehensive portfolio details including accounts, positions, and summary. Retrieves a complete overview of your portfolio including account information, current positions, performance summary, and portfolio metrics. Returns: Dictionary containing complete portfolio information including accounts, positions, and summary
get_portfolio_holdingsread-onlyGet portfolio holdings and positions including allocations and asset breakdowns. Retrieves current portfolio holdings including positions, allocations, and asset breakdowns for the specified time period. Args: date_range: Time range for holdings data. Options: 1d, 1w, 1m, 3m, 6m, 1y, 2y, 5y, max Returns: Dictionary containing holdings, accounts, allocations, and range data
get_portfolio_performanceread-onlyGet portfolio performance data including returns, benchmarks, and performance metrics. Retrieves comprehensive performance metrics for your portfolio including returns, benchmarks, and performance comparisons over the specified time period. Args: date_range: Time range for performance data. Options: 1d, 1w, 1m, 3m, 6m, 1y, 2y, 5y, max Returns: Dictionary containing performance metrics, returns, benchmarks, and range data
get_positionread-onlyGet position details for a specific symbol from a data source. Retrieves detailed information about a specific position including current value, quantity, performance, and market data. Args: data_source: Data source (e.g., 'YAHOO', 'COINGECKO', 'MANUAL') symbol: Symbol/ticker of the asset Returns: Dictionary containing position details including symbol, quantity, value, and performance
get_symbol_dataread-onlyGet symbol data for a specific asset from a data source. Retrieves detailed information about a specific symbol including current price, market data, and asset information. Args: data_source: Data source (e.g., 'YAHOO', 'COINGECKO', 'MANUAL') symbol: Symbol/ticker of the asset Returns: Dictionary containing symbol data including price and market information
get_user_inforead-onlyGet user information and settings. Retrieves information about the current user including settings, preferences, and account details. Returns: Dictionary containing user information and settings
get_watchlistread-onlyGet all items in the user's watchlist. Retrieves list of all watchlisted symbols. Returns: Dictionary containing the watchlist items.
import_transactionsImport transactions into your portfolio. This is a write operation. Imports a batch of transactions (buy/sell orders) into your Ghostfolio portfolio. This is useful for bulk importing historical data or transactions from other platforms. Args: data: Transaction data. Must contain an 'activities' list with transaction objects including currency, dataSource, date (ISO-8601), fee, quantity, symbol, type, unitPrice. Returns: Dictionary containing import result
lookup_symbolsread-onlySearch for symbols using a query string. Search for financial symbols, stocks, ETFs, and other assets using a text query. Optionally include market indices in the results. Args: query: Search query for symbol lookup include_indices: Include market indices in search results Returns: Dictionary containing search results with matching symbols
remove_from_watchlistcan change or delete dataRemove a symbol from the user's watchlist. Args: data_source: Data source (e.g., 'YAHOO', 'COINGECKO') symbol: Symbol/ticker of the asset to remove Returns: Dictionary containing the deletion status.
transfer_account_balanceTransfer cash balances between two accounts. Args: account_id_from: Source account ID account_id_to: Target account ID balance: Amount to transfer Returns: Dictionary containing the status/result of the transfer.
update_accountcan change or delete dataUpdate settings or details of an existing account. Ghostfolio's update endpoint replaces the whole account record, so `name`, `currency` and `platform_id` are required on every request even when they are not changing. Any left unset here are backfilled from the account's current state with a GET before the PUT, so you only need to pass the fields you actually want to change. If `name` or `currency` can't be backfilled (e.g. the account doesn't exist), the update stops before the PUT and names them. Setting `balance` here applies it as *today's* entry in the account's balance history (the sam…
update_activitycan change or delete dataUpdate an existing activity/transaction. Ghostfolio's update endpoint replaces the whole activity record, so `type`, `symbol`, `date`, `quantity`, `unitPrice`, `currency`, `dataSource` and `fee` are required on every request even when they are not changing. Any left unset here (including `tags`, `account_id` and `comment`) are backfilled from the activity's current state with a GET before the PUT, so you only need to pass the fields you actually want to change. If a required field can't be backfilled (Ghostfolio redacts `quantity` and `fee` in restricted views), pass it explicitly. A restrict…
upsert_asset_profileCreate-or-update an asset profile. POSTs an empty profile-data record (idempotent — Ghostfolio answers HTTP 400 "already exists" when the profile is already there, and HTTP 500 on some first-time-create paths while still persisting the record, so this tolerates both). Then PATCHes metadata (name, currency, asset class, optional sub-class, optional country and sector allocations). PATCH is the source of truth — if the profile doesn't exist after the POST, PATCH will surface the error. Calling twice with the same input yields the same end state. Args: data_source: Data source (typically 'M…
Compare and alternatives
Featured in
Signals
- Stars
- 22
- Forks
- 6
- Open issues
- 0
- Contributors
- 5
- Weekly downloads
- 331
- Last commit
- Oct 23, 2026 (5 days ago)
- Last release
- Oct 23, 2026 (5 days ago)
- Last package publish
- Oct 23, 2026 (5 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.mhajder/ghostfolio-mcp- Version
- 1.8.1
- Auth
- API key
- Packages
- pypi ghostfolio-mcppypi ghostfolio-mcpoci
ghcr.io/mhajder/ghostfolio-mcp:1.8.1 - License
- AGPL-3.0
- Repository
- github.com/mhajder/ghostfolio-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from mhajder
- 0.665score
LibreNMS MCP
mhajder
MCP server for LibreNMS network monitoring - query devices, ports, alerts, and manage infrastructure
ConnectorAFreshness: ARemoteLocal★ 42↓ 609/wkClaude Code +5 - 0.649score
Zabbix MCP
mhajder
MCP server for Zabbix monitoring and automation
ConnectorAFreshness: ARemoteLocal★ 10↓ 607/wkClaude Code +5 - 0.630score
NetBox MCP
mhajder
MCP server for NetBox DCIM/IPAM with read-only and dry-run modes
ConnectorAFreshness: ARemoteLocal★ 3↓ 242/wkClaude Code +5 - 0.605score
Oxidized MCP
mhajder
MCP server for Oxidized network device configuration backups
ConnectorAFreshness: ARemoteLocal↓ 230/wkClaude Code +5
Cite this page
Ghostfolio MCP. Agent Mart. https://agentmart.dev/connectors/mhajder-ghostfolio-mcp (last updated 2026-10-24)