Skip to content
Agentmart
Submit a tool

Ghostfolio MCP

MCP server for Ghostfolio portfolio management and financial data access

Connector by mhajder · GitHub account verified by the MCP Registry

IndexedAGPL-3.0Local (stdio)Remote (HTTP)★ 22
Write a review

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.

We use your email only for this newsletter. Privacy

About

MCP server for Ghostfolio portfolio management and financial data access

Use cases: finance-accounting

No 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_portfolio
  • get_account_balances
  • get_account_details
  • get_accounts
  • get_asset_profile
  • get_benchmark_performance
  • get_benchmarks
  • get_dividends
  • get_dividends_for_import
  • get_exchange_rate
  • get_health
  • get_historical_data
Show 12 more tools
  • get_investments
  • get_market_data_for_asset
  • get_orders
  • get_platforms
  • get_portfolio_details
  • get_portfolio_holdings
  • get_portfolio_performance
  • get_position
  • get_symbol_data
  • get_user_info
  • get_watchlist
  • lookup_symbols

Write 8 · Create, change, send or run things.

  • add_market_data_points
  • add_to_watchlist
  • create_account
  • create_account_balance
  • create_activity
  • import_transactions
  • transfer_account_balance
  • upsert_asset_profile

Delete 7 · Delete, drop, revoke or wipe things.

  • delete_account
  • delete_account_balance
  • delete_activity
  • delete_asset_profile
  • remove_from_watchlist
  • update_account
  • update_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_TAGS
  • GHOSTFOLIO_TIMEOUT
  • GHOSTFOLIO_URL
  • GHOSTFOLIO_VERIFY_SSL
  • LOG_LEVEL
  • RATE_LIMIT_ENABLED
  • RATE_LIMIT_MAX_REQUESTS
  • RATE_LIMIT_WINDOW_MINUTES
  • READ_ONLY_MODE
  • TOOL_SEARCH_ENABLED
  • TOOL_SEARCH_MAX_RESULTS
  • TOOL_SEARCH_STRATEGY

Network hosts it talks to 3

  • domain.tld · found in code
  • github.com · found in code
  • gofastmcp.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_points

    Add 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_watchlist

    Add 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_account

    Create 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_balance

    Set 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_activity

    Create a single new transaction/activity.

  • delete_accountcan change or delete data

    Delete 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 data

    Delete 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 data

    Delete a single activity/transaction by its ID.

  • delete_asset_profilecan change or delete data

    Delete 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-only

    Export 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Compare 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-only

    Get all configured benchmarks. Returns: Dictionary containing the list of benchmarks.

  • get_dividendsread-only

    Get 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-only

    Fetch 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get 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-only

    Get all items in the user's watchlist. Retrieves list of all watchlisted symbols. Returns: Dictionary containing the watchlist items.

  • import_transactions

    Import 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-only

    Search 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 data

    Remove 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_balance

    Transfer 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 data

    Update 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 data

    Update 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_profile

    Create-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
    First seen
    Oct 24, 2026
    Last checked
    Oct 24, 2026

    More from mhajder

    Cite this page

    Ghostfolio MCP. Agent Mart. https://agentmart.dev/connectors/mhajder-ghostfolio-mcp (last updated 2026-10-24)