Skip to main content
Glama
Avanza MCP Server

Avanza MCP Server

by AnteWall

Avanza MCP Server

TIP

New: Avanza Desk is a fast, keyboard-first trading terminal for your Avanza account, with built-in agent support. Free and open source. Check it out →

Want to use Avanza with your own coding agents? Consider the Avanza CLI with agent skills instead. It may be a better fit for agent workflows.

PyPI - Version CI

Read-only access to Avanza market and optional account data from your MCP client. Public tools require no Avanza account.

Disclaimer

This is an unofficial API client/MCP Server. Not affiliated with Avanza Bank AB. The underlying API can be taken down or changed without warning at any point in time.

The author of this software is not responsible for any indirect damages (foreseeable or unforeseeable), such as, if necessary, loss or alteration of or fraudulent access to data, accidental transmission of viruses or of any other harmful element, loss of profits or opportunities, the cost of replacement goods and services or the attitude and behavior of a third party.

Related MCP server: Stock Ticker MCP Server

Features

  • Stocks, funds, ETFs, certificates, warrants and futures/forwards.

  • Quotes, charts, financial ratios, dividends, order books and ownership data.

  • Fund performance, fees, holdings, sustainability and research prompts.

  • Optional local BankID authentication for read-only accounts, holdings and activity.

Setup

Requires uv and Python 3.12+. Local clients launch the server over stdio.

Both use this configuration:

{
  "mcpServers": {
    "avanza": {
      "command": "uvx",
      "args": ["avanza-mcp"]
    }
  }
}
  • Claude Desktop: open Settings > Developer > Edit Config, merge the configuration, then fully restart Claude Desktop.

  • Cursor: add it to .cursor/mcp.json in your project, or ~/.cursor/mcp.json globally. Enable the server in Cursor's MCP settings.

Run in your project:

claude mcp add avanza -- uvx avanza-mcp

Use /mcp in Claude Code to check the connection.

Add to .vscode/mcp.json, or open MCP: Open User Configuration for global setup:

{
  "servers": {
    "avanza": {
      "type": "stdio",
      "command": "uvx",
      "args": ["avanza-mcp"]
    }
  }
}

Run MCP: List Servers, start avanza, and enable its tools in agent chat.

Add to your project's opencode.json or global ~/.config/opencode/opencode.json:

{
  "mcp": {
    "avanza": {
      "type": "local",
      "command": ["uvx", "avanza-mcp"],
      "enabled": true
    }
  }
}

From a source checkout:

uv sync
uv run fastmcp run src/avanza_mcp/__init__.py:mcp --transport http

Connect HTTP clients to http://localhost:8000/mcp. ChatGPT requires a remotely reachable HTTPS deployment; add its /mcp URL using ChatGPT's developer-mode setup.

This project does not provide a hosted endpoint. Configure access controls before exposing your server publicly.

Install with uv add avanza-mcp, then use FastMCP's in-process client:

import asyncio
from fastmcp import Client
from avanza_mcp import mcp

async def main():
    async with Client(mcp) as client:
        result = await client.call_tool(
            "search_instruments", {"query": "Volvo", "instrument_type": "stock"}
        )
        print(result.structured_content)

asyncio.run(main())

If a desktop client cannot find uvx, use its absolute executable path. See DEVELOPMENT.md for running from source and tests.

Experimental Account Access

WARNING

BankID authentication and account tools are experimental and rely on undocumented Avanza APIs that may change without notice. Review the privacy notes below before enabling them.

Authenticated access is disabled by default. Enable it by adding AVANZA_MCP_AUTH=1 to the local MCP server environment. For example, OpenCode uses:

{
  "mcp": {
    "avanza": {
      "type": "local",
      "command": ["uvx", "avanza-mcp"],
      "environment": {"AVANZA_MCP_AUTH": "1"},
      "enabled": true
    }
  }
}

Restart OpenCode after changing its configuration.

Authentication Flow

  1. A temporary page opens on 127.0.0.1 and asks for consent.

  2. After approval, scan the locally rendered QR code with BankID.

  3. Avanza verifies the session and enables the experimental tools.

No Avanza password is requested in the browser or chat. Existing market-data tools automatically use the valid session when one is available; no duplicate authenticated market tools are added.

Session Data

Verified session cookies and the Avanza security token are stored in the operating system's native credential store and revalidated on startup:

  • macOS Keychain

  • Windows Credential Manager

  • Linux Secret Service, which must be installed, unlocked and available over D-Bus

Credentials are not stored in project files, browser storage, logs, or MCP results. Account responses are not cached by this project.

Avanza controls session duration through the account's website setting. See How long can I stay logged in? to change it.

Use disconnect_avanza to remove the local credential and attempt remote logout.

Account tool results may be sent to the configured model provider and saved in conversation history.

Tools

The default 34-tool catalog is read-only. Search first to obtain an order_book_id; history tools expose pagination. Data is latest available, not guaranteed live.

Category

Tool

Description

Search

search_instruments

Find instruments by name, ticker or ISIN

Search

get_instrument_by_order_book_id

Match an exact ID within search candidates

Stocks

get_stock_info

Company, listing, fundamentals and quote

Stocks

get_stock_quote

Latest price and trading volume

Stocks

get_stock_chart

Historical OHLC price points

Stocks

get_stock_analysis

A named financial-ratio history

Stocks

get_dividends

A named dividend metric by financial year

Stocks

get_company_financials

A named annual or quarterly financial metric

Market

get_orderbook

Bid/ask depth

Market

get_marketplace_info

Trading hours and market status

Market

get_recent_trades

Recent trade snapshot

Market

get_broker_trade_summary

Broker buy/sell activity

Funds

get_fund_info

NAV, performance, fees and fund information

Funds

get_fund_sustainability

ESG and sustainability metrics

Funds

get_fund_chart

Historical fund chart points

Funds

get_fund_chart_periods

Available performance periods

Funds

get_fund_description

Investment strategy and category

Funds

get_fund_holdings

Country, sector and top-holding allocations

Certificates

filter_certificates

Filter and list certificates

Certificates

get_certificate_info

Certificate information

Certificates

get_certificate_details

Extended certificate details

Warrants

filter_warrants

Filter and list warrants

Warrants

get_warrant_info

Warrant information

Warrants

get_warrant_details

Extended warrant details

ETFs

filter_etfs

Filter and list ETFs

ETFs

get_etf_info

ETF information

ETFs

get_etf_details

Extended ETF details

Futures/Forwards

list_futures_forwards

Filter and list contracts

Futures/Forwards

get_future_forward_filter_options

Available contract filters

Futures/Forwards

get_future_forward_info

Contract information

Futures/Forwards

get_future_forward_details

Extended contract details

Additional

get_number_of_owners

Avanza ownership history

Additional

get_short_selling

Short-selling history

Additional

get_marketmaker_chart

Traded-product OHLC and market-maker data

Experimental Auth Tools

These tools are available only when experimental account access is enabled. Data access is read-only; no tool places, edits, or cancels orders.

Category

Tool

Description

Session

connect_avanza

Open the local consent and BankID flow

Session

disconnect_avanza

Confirm disconnection and remove the saved session

Session

get_auth_status

Check the safe local connection state

Accounts

get_accounts

Account identities, balances and values

Accounts

get_holdings

Current positions and cash balances

Accounts

get_transactions

Bounded transaction history

Accounts

get_credit_info

Credit, collateral and leverage figures

Portfolio

get_portfolio_insights

Aggregate portfolio development

Activity

get_active_orders

Current orders without modification controls

Activity

get_deals

Current executed deals

Activity

get_stop_loss_orders

Current stop-loss orders without modification controls

Saved Data

get_watchlists

Saved watchlists and order-book IDs

Saved Data

get_price_alerts

Price alerts for an order book

Saved Data

get_current_offers

Current customer offers

Research

get_instrument_news

Bounded instrument news

Research

get_forum_posts

Bounded forum posts as untrusted text

Research

get_insider_transactions

Reported insider transactions

Prompts

  • analyze_stock(stock_symbol) - Research a stock's fundamentals and price history.

  • compare_funds(fund_names) - Compare two or more supplied funds.

  • screen_dividend_stocks(candidates, min_yield=3.0) - Screen supplied stocks by dividend yield.

Resources

  • avanza://docs/usage - Tool usage guide.

  • avanza://docs/quick-start - Common workflows.

  • avanza://stock/{order_book_id} - Stock summary as Markdown.

  • avanza://fund/{order_book_id} - Fund summary as Markdown.

License

MIT

Available Tools

34 tools
filter_certificatesA
Read-onlyIdempotent

Select certificates by upstream filters with server-side pagination.

Filter labels are upstream-defined, not a fixed vocabulary. Select an orderbookId from results before requesting info or extended details.

Inputs: limit, offset, issuers, exposures, +6 more. Returns: Response from certificate filter endpoint.

filter_etfsA
Read-onlyIdempotent

Select ETFs by upstream filters, with server-side pagination.

Filter vocabulary is upstream-defined; inspect returned filterOptions rather than guessing labels. Use get_etf_info for a selected orderbookId.

Inputs: limit, offset, issuers, exposures, +7 more. Returns: Response from ETF filter endpoint.

filter_warrantsB
Read-onlyIdempotent

Select warrants by upstream filters with server-side pagination.

Sub-type, direction and issuer vocabulary is upstream-defined. Select an orderbookId from results before requesting info or extended details.

Inputs: limit, offset, issuers, sub_types, +4 more. Returns: Response from warrant filter endpoint.

get_broker_trade_summaryB
Read-onlyIdempotent

Get upstream broker buy/sell summaries; these do not identify investor types.

Inputs: order_book_id (required). Returns: summaries

get_certificate_detailsC
Read-onlyIdempotent

Get recognized extended certificate details beyond info.

Inputs: order_book_id (required). Returns: Detailed certificate extended information.

get_certificate_infoB
Read-onlyIdempotent

Get certificate identity and latest available market data, not guaranteed real-time.

Inputs: order_book_id (required). Returns: Detailed certificate information.

get_company_financialsB
Read-onlyIdempotent

Page one metric in an annual, quarterly, TTM or quarter-only financial section.

data preserves the selected upstream field name and recognized record fields. Verified metric names include sales, netProfit, profitMargin, totalAssets, totalLiabilities and debtToEquityRatio. available_metrics lists names, not sibling series. Missing sections are omitted, not fabricated. No unit conversions are made.

Inputs: metric (required), order_book_id (required), limit, offset, +1 more. Returns: One named metric in one selected section, without sibling series or summaries.

get_dividendsA
Read-onlyIdempotent

Page one dividendsByYear metric: dividendPerShare, directYieldRatio or dividendPayoutRatio.

data preserves the upstream section name. Missing data is omitted, not an empty history. Records contain financialYear, reportType, value and optional date, not inferred ex/payment dates. available_metrics lists names only; sibling series are excluded. Units and scales are upstream-defined.

Inputs: metric (required), order_book_id (required), limit, offset. Returns: One named metric in one selected section, without sibling series or summaries.

get_etf_detailsA
Read-onlyIdempotent

Get extended ETF details beyond info. Detail fields are upstream-defined and flexible.

Inputs: order_book_id (required). Returns: Detailed ETF extended information.

get_etf_infoA
Read-onlyIdempotent

Get ETF identity, listing and latest available quote; not guaranteed real-time.

Inputs: order_book_id (required). Returns: Detailed ETF information.

get_fund_chartA
Read-onlyIdempotent

Get a page of raw fund dataSerie points in source order, without aggregation.

x/y values retain upstream meaning; y is not assumed to be NAV or a return. Offset/limit slice the chosen period; dates describe the full source period.

Inputs: order_book_id (required), limit, offset, time_period. Returns: data, pagination

get_fund_chart_periodsA
Read-onlyIdempotent

Get available fund performance periods, rather than individual chart points.

startDate is the source period start date. change retains its upstream scale; do not assume it uses the same scale as fund-guide development fields.

Inputs: order_book_id (required). Returns: periods

get_fund_descriptionB
Read-onlyIdempotent

Get the fund's investment description and category explanation.

Inputs: order_book_id (required). Returns: Fund description and category information.

get_fund_holdingsA
Read-onlyIdempotent

Get reported country, sector and holding allocations, not a complete position ledger.

portfolioDate is the source portfolio date, not retrieval time. Missing dates are not inferred. Missing allocations are null; reported empty arrays stay []. Allocation values are returned without unit conversion.

Inputs: order_book_id (required). Returns: portfolioDate, sectorChartData, countryChartData, holdingChartData

get_fund_infoA
Read-onlyIdempotent

Get fund identity, latest available NAV, fees, risk and allocations.

Missing currency and tradeability remain unknown. Not guaranteed real-time. Use get_fund_holdings for allocations only, get_fund_chart for raw history.

Inputs: order_book_id (required). Returns: Fund guide fields; fees and development retain source scales and basis.

get_fund_sustainabilityA
Read-onlyIdempotent

Get latest available fund ESG and sustainability data, not a real-time assessment.

Inputs: order_book_id (required). Returns: Fund sustainability and ESG metrics.

get_future_forward_detailsC
Read-onlyIdempotent

Get recognized extended contract details beyond info.

Inputs: order_book_id (required). Returns: Detailed future/forward extended information.

get_future_forward_filter_optionsA
Read-onlyIdempotent

Get current upstream filter options before selecting futures/forwards.

Option names and values retain their upstream vocabulary.

Inputs: no named parameters. Returns: endDates, optionTypes, callIndicators, underlyingInstruments

get_future_forward_infoC
Read-onlyIdempotent

Get contract identity and latest available market data, not guaranteed real-time.

Inputs: order_book_id (required). Returns: Detailed future/forward information.

get_instrument_by_order_book_idA
Read-onlyIdempotent

Match an exact order_book_id among at most 50 search candidates.

Search is not authoritative: failure to match does not prove the ID is invalid. Never substitutes the first or a similarly named search result.

Inputs: order_book_id (required). Returns: Curated instrument identity; presentation and highlighting are excluded.

get_marketmaker_chartA
Read-onlyIdempotent

Get raw OHLC and market-maker data for traded products, not stock/fund charts.

Both arrays are independently sliced with the same offset/limit in source order; their metadata counts are separate. No point alignment, aggregation or unit conversion is inferred. Upstream fields are under data, separate from wrapper pagination keys. Not guaranteed real-time.

Inputs: order_book_id (required), limit, offset, time_period. Returns: data, pagination, marketMakerPagination

get_marketplace_infoB
Read-onlyIdempotent

Get latest available marketplace status and trading hours.

Inputs: order_book_id (required). Returns: Marketplace status and trading hours.

get_number_of_ownersB
Read-onlyIdempotent

Page Avanza ownersPoints in source order and preserve the full historySummary.

data contains upstream fields, not a fabricated top-level owner count. Summary fields describe the full source history, not this page. Not market-wide ownership.

Inputs: order_book_id (required), limit, offset. Returns: data, pagination

get_orderbookA
Read-onlyIdempotent

Get latest available buy/sell depth; empty levels are valid. Not guaranteed real-time.

Inputs: order_book_id (required). Returns: Order book depth showing buy and sell orders.

get_recent_tradesB
Read-onlyIdempotent

Page through the latest available trade snapshot in upstream order.

Not a complete trade history or guaranteed real-time feed. Separate page requests may observe a changed snapshot; total is the current source count.

Inputs: order_book_id (required), limit, offset. Returns: trades, pagination

get_short_sellingA
Read-onlyIdempotent

Page shortSellingHistory in source order; timestamp/ratio values are not converted.

data preserves upstream fields. A page is not the full history or a latest-value summary. Offset zero is the beginning of source order, not necessarily newest.

Inputs: order_book_id (required), limit, offset. Returns: data, pagination

get_stock_analysisA
Read-onlyIdempotent

Get one named metric within a ratio section, paginated in source order.

Select annual, quarterly, quarter-over-quarter, TTM, or company annual ratios. For dividends or financial statements use the dedicated tools. The selected section and metric names are retained inside data; absent fields are omitted. Example metric: priceEarningsRatio for stock ratios, earningsPerShare for company ratios. available_metrics lists the selected section's names. Sibling series and keyRatios summary sections are intentionally excluded, not aggregated. Units and record details are upstream-defined; no normalization is applied.

Inputs: metric (required), order_book_id (required), limit, offset, +1 more. Returns: One named metric in one selected section, without sibling series or summaries.

get_stock_chartA
Read-onlyIdempotent

Get a page of raw stock OHLC points in source order, without aggregation.

Offset/limit slice the selected period, not a date range. Metadata describes the full upstream period. Upstream fields live under data, isolated from wrapper pagination keys. Latest available data is not guaranteed real-time.

Inputs: order_book_id (required), limit, offset, time_period. Returns: data, pagination

get_stock_infoA
Read-onlyIdempotent

Get stock identity, listing, company, ratios and latest available quote.

Use search_instruments to select an order_book_id. For pricing only, prefer get_stock_quote. Data is not guaranteed real-time.

Inputs: order_book_id (required). Returns: Complete stock information from Avanza API.

get_stock_quoteA
Read-onlyIdempotent

Get latest available stock prices and trading data, without company details.

Not guaranteed real-time; inspect isRealTime and upstream timestamps. Null is unknown; zero is a reported value.

Inputs: order_book_id (required). Returns: Latest available stock quote data; inspect isRealTime and source timestamps.

get_warrant_detailsC
Read-onlyIdempotent

Get recognized extended warrant details beyond info.

Inputs: order_book_id (required). Returns: Detailed warrant extended information.

get_warrant_infoA
Read-onlyIdempotent

Get warrant identity and latest available market data, not guaranteed real-time.

Inputs: order_book_id (required). Returns: Detailed warrant information.

list_futures_forwardsB
Read-onlyIdempotent

Select futures/forwards with server-side pagination and ISO YYYY-MM-DD end dates.

Use get_future_forward_filter_options for current filter vocabulary. The Matrix results include recognized contract, option, filter, and pagination fields.

Inputs: limit, offset, end_dates, sort_field, +3 more. Returns: Response from futures/forwards matrix endpoint.

search_instrumentsA
Read-onlyIdempotent

Search names, tickers or ISINs and return compact instrument identities.

Select by name, type, exchange, ISIN and currency, not rank alone. One page of at most 50 candidates is examined, with stock/fund filtering upstream; other types are filtered locally. All excludes FAQ, unknown types and invalid IDs. Type/ID filtering precedes limit. totalNumberOfHits counts valid matching candidates before limit, not a full filtered universe. candidatesExamined includes discarded hits; upstreamTotalNumberOfHits is before local filtering. No additional pages are fetched. Search is not an authoritative ID registry.

Inputs: query (required), limit, instrument_type. Returns: hits, returned, searchQuery, totalNumberOfHits, +2 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 34 tools

    Disambiguation4/5

    Tools are largely distinct by resource (stock, fund, ETF, warrant, certificate, future/forward) and action (info, details, chart, filter, list). However, info vs details pairs for the same instrument type and overlapping fund/stock data tools (e.g., get_stock_info vs get_stock_quote) create minor ambiguity that descriptions mostly resolve.

    Naming Consistency5/5

    All tool names use consistent snake_case with verb-first patterns (get_, filter_, list_, search_). The naming is predictable and readable across the set.

    Tool Count2/5

    34 tools is excessive for the apparent scope; many info/details pairs and separate filter tools for each instrument type could be consolidated via parameters, reducing the count significantly.

    Completeness4/5

    The surface covers many data aspects for stocks, funds, ETFs, certificates, warrants, and futures/forwards, but lacks tools for other common asset classes (e.g., options, bonds, indices) and news/events, leaving some gaps for a comprehensive financial data server.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides real-time stock quotes, historical price data, financial news, and multi-stock comparisons using Yahoo Finance data. Enables users to access comprehensive financial market information through natural language queries.
      1,737 npm
      1
      MIT
    • -
      license
      Not graded
      quality
      D
      maintenance
      Provides real-time and historical stock market data through the Alpha Vantage API. Enables users to get current stock prices and retrieve historical stock data for any major stock symbol via natural language queries.
      -
    • F
      license
      Not graded
      quality
      D
      maintenance
      Provides real-time access to financial market data including stock quotes, company information, cryptocurrency exchange rates, historical options chains, and time series data through the Alpha Vantage API.
      -
    • A
      license
      C
      quality
      D
      maintenance
      Provides access to real-time and historical stock market data through the Alpha Vantage API, enabling financial analysis and market data queries through natural language.
      100
      54 PyPI
      74
      Apache 2.0