cvm-mcp
The cvm-mcp server provides financial data from the CVM's Open Data Portal, enabling LLMs to consult financial statements of publicly traded companies. You can:
Search for companies by name, CNPJ, or CVM code before conducting any analysis.
Analyze companies with a standard 5-year financial analysis covering metrics like Net Revenue, EBIT, estimated EBITDA, Net Income, Net Margin, EBITDA Margin, ROE, Current Liquidity, Gross Debt, Cash, Net Debt, and Net Debt/EBITDA.
Obtain financial indicators for a specified range of years, with options for consolidated or individual statements.
Retrieve raw financial statements from specific statements (e.g., BPA, BPP, DRE, DFC_MD, DFC_MI, DVA, DMPL, DRA) for a given year, including account codes, descriptions, and values in R$ millions, with consolidated or individual statement options.
Allows querying financial data from the Brazilian Securities and Exchange Commission (CVM) through an MCP server that retrieves company financial statements, indicators, and raw accounting data.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cvm-mcp analise a Petrobras"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
cvm-mcp
MCP server that fetches and processes financial data directly from the CVM Open Data Portal (dados.cvm.gov.br), without relying on third parties. It exposes tools for an LLM client (Claude Desktop, Claude Code, etc.) to query the financial statements published by publicly traded companies.
The default view is quarterly: the tools start from the last quarter the company published and return the previous 12 months, quarter by quarter, with the accounting accounts as published by the CVM — without calculated indicators.
What it does
Tool | When to use |
| Resolve name/CNPJ/CVM code before any analysis |
| Generic request ("analyze company X") — DRE for the last 4 quarters |
| Other statement (balance sheet, cash flow) or more than 4 quarters |
| When the user explicitly asks for the closed annual period (DFP) |
All monetary values are normalized to R$ millions. See Limitations below — the AI always receives warnings when a data point is derived or could not be obtained.
Related MCP server: FinancialFilings MCP Server
How the quarter is assembled
The CVM's ITR publishes only Q1, Q2, and Q3, and already brings each quarter isolated in addition to the year-to-date accumulations — so cutting a quarter is filtering by period, not subtracting.
Q4 does not exist in the ITR. It is derived as exercício completo (DFP) − acumulado até o 3T (ITR), matched account by account by the accounting code. Every such period is marked with derivado: true in the response, along with an explicit warning.
Two consequences worth understanding:
Stock accounts are never derived. BPA and BPP are balances on a date, so the year-end closing is already the Q4 value. Only flow accounts (DRE, DFC, DVA, DRA, DMPL) undergo subtraction.
The "last quarter" is per company, not global. Non-calendar fiscal years close in other months — Camil, for example, has quarters Mar–May, Jun–Aug, Sep–Nov, and Dec–Feb. The server resolves this by each company's dates, and the label (
2T26) is always accompanied byinicioandfim.
Installation
Requires Python 3.10+. Works the same on Windows, macOS, and Linux.
Option 1 — pipx (recommended, isolates the environment)
pipx install .Runs from any folder afterwards, as the command cvm-mcp.
Option 2 — pip in a virtual environment
python -m venv .venv
# Windows (PowerShell)
.venv\Scripts\Activate.ps1
# macOS / Linux
source .venv/bin/activate
pip install -e .Option 3 — directly from source, without installing
pip install -r requirements.txt # ou: pip install mcp[cli] httpx pandas platformdirs
python -m cvm_mcpConfiguring in Claude Desktop
Edit claude_desktop_config.json (Windows: %APPDATA%\Claude\claude_desktop_config.json; macOS: ~/Library/Application Support/Claude/claude_desktop_config.json) and add:
{
"mcpServers": {
"cvm": {
"command": "cvm-mcp"
}
}
}If you prefer not to install with pipx (Option 3), use:
{
"mcpServers": {
"cvm": {
"command": "python",
"args": ["-m", "cvm_mcp"]
}
}
}Local cache
The files downloaded from the CVM (registry + annual ZIPs of ITR and DFP) are cached locally to avoid re-downloading on every query — the check uses ETag/Last-Modified, so updates on the CVM portal are detected automatically.
Worth sizing: the packages come compressed (~20–30 MB per year), but are extracted for use, and each year-type takes up a few hundred MB on disk. The quarterly view typically touches two years of ITR plus one year of DFP.
Default location (via platformdirs, without OS hardcoding):
Windows:
%LOCALAPPDATA%\cvm-mcpmacOS:
~/Library/Caches/cvm-mcpLinux:
~/.cache/cvm-mcp
To use another directory (e.g., restricted environments/CI), set CVM_MCP_CACHE_DIR before running the server.
Important limitations
Q4 is derived, not published. The CVM does not disclose the 4th quarter separately; the value comes from
ano cheio − acumulado 9M. It matches the fiscal year by construction, but it is not a number the company reported.No calculated indicators. This version returns published accounting accounts, not margins, ROE, or EBITDA. The indicator code remains in the repository (
indicators.py,accounts.py), not linked to any tool, to be readapted to the quarterly base later.No market data: the CVM does not publish stock prices, market value, or multiples (P/E, EV/EBITDA). Requests of this type are outside the scope of this source.
Stock accounts do not add up. BPA and BPP are balances: adding up the 4 quarters of equity produces nothing meaningful. Only flow accounts can be accumulated over 12 months.
Not every company has 4 quarters (recent IPO, suspension, registration cancellation, late ITR filing). The window returns the periods that exist, without filling gaps with zero.
Financial sector companies use a different DRE chart of accounts, so the accounting codes are not comparable line by line with those of non-financial companies.
Development
python -m venv .venv
.venv\Scripts\Activate.ps1 # ou source .venv/bin/activate
pip install -e .
python -m cvm_mcp # roda o servidor via stdioProject structure:
src/cvm_mcp/
config.py # constantes e diretório de cache (cross-platform)
cache.py # download HTTP com cache condicional + extração de ZIP
parsers.py # leitura dos CSVs (encoding/separador da CVM)
cvm_client.py # busca de empresas e carregamento dos demonstrativos
quarters.py # montagem da janela trimestral e derivação do 4T
models.py # estruturas de dados (Company, Quarter)
server.py # servidor MCP (FastMCP) e definição das tools
accounts.py # (inativo) mapa do plano de contas -> itens financeiros
indicators.py # (inativo) cálculo de indicadores em base anualaccounts.py and indicators.py are not imported by any tool in this version — they remain in the repository to serve as a base when indicators are reintroduced on a quarterly basis.
Available Tools
4 toolsanalisar_empresaA
Análise financeira padrão dos últimos 5 anos de uma empresa.
Use quando o usuário pedir algo genérico como "analise a empresa X" sem especificar período ou indicadores. Retorna, em R$ milhões e por ano: Receita Líquida, EBIT, EBITDA estimado, Lucro Líquido, Margem Líquida, Margem EBITDA, ROE, Liquidez Corrente, Dívida Bruta, Caixa, Dívida Líquida e Dívida Líquida/EBITDA — sempre com avisos quando algum item não pôde ser calculado a partir dos demonstrativos públicos da CVM (ex: EBITDA é sempre uma estimativa, não o número "ajustado" da empresa; não há dado de cotação/valor de mercado nesta fonte). Para pedidos customizados (outro período, dado bruto, individual vs consolidado), use obter_indicadores ou obter_demonstrativo_bruto.
Inputs: nome_ou_cnpj (required).
buscar_empresaA
Busca companhias abertas no cadastro da CVM por nome, CNPJ ou código CVM.
Use esta tool antes de qualquer outra para confirmar a empresa certa: existem nomes parecidos e empresas com registro cancelado/suspenso que podem não ter demonstrativos recentes.
Inputs: consulta (required), limite.
obter_demonstrativo_brutoA
Devolve as contas contábeis brutas (código, descrição, valor em R$ milhões) de um demonstrativo publicado pela CVM, sem nenhum cálculo.
demonstrativo: um de BPA, BPP, DRE, DFC_MD, DFC_MI, DVA, DMPL, DRA. Use quando o usuário pedir algo que os indicadores prontos não cobrem, como uma conta contábil específica ou maior nível de detalhe.
Inputs: ano (required), nome_ou_cnpj (required), demonstrativo (required), consolidado.
obter_indicadoresA
Indicadores financeiros calculados para um intervalo de anos escolhido pelo usuário (mesmos indicadores de analisar_empresa, mas com período e versão consolidado/individual livres). Use para pedidos customizados que fogem do padrão de 5 anos.
Inputs: ano_fim (required), ano_inicio (required), nome_ou_cnpj (required), consolidado.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 4 tools
Each tool serves a distinct purpose: buscar_empresa for company lookup, analisar_empresa for standard 5-year analysis, obter_indicadores for custom analysis, and obter_demonstrativo_bruto for raw accounting data. No overlap in functionality.
All tool names follow a consistent verb_noun pattern in Portuguese (e.g., analisar_empresa, buscar_empresa). The naming is predictable and clear.
With 4 tools, the server is well-scoped for its domain. It covers company search, standard analysis, custom analysis, and raw data retrieval without unnecessary bloat.
The tool set covers core workflows: identification, standard analysis, custom analysis, and raw data. A minor gap is the absence of a tool for comparing multiple companies or exporting data, but the essential functionality is present.
Maintenance
Related MCP Connectors
Financial data MCP server for Claude, ChatGPT, Cursor and Codex. Real-time stock quotes, financial statements, options flow, SEC filings, insider trades, 13F holdings, macro data and market news from gloom.sh, the open-source Bloomberg Terminal alternative.
MCP server exposing the Backtest360 engine API as tools for AI agents.
Official Intrinio MCP server. US stock prices, options and fundamentals for AI agents.
Your agent needs company financials it can compute on — statements, ratios, earnings, estimates, filings and insider activity as structured data, not a PDF. **What you can ask for** • "Give me 8 quarters of income statement, balance sheet and cash flow for this ticker." • "What do analysts estimate for next quarter, and how did the last four surprise?" • "Find this exact line item across every filing." • "Who bought or sold as an insider in the last 90 days?" • "Screen for profitable companies under this valuation with growing revenue." **How to use it** Point any MCP client at https://mcp.aisa.one/marketpulse/mcp and sign in with OAuth — there is no key to create or paste. 21 tools: prices and snapshots, income statements, balance sheets, cash-flow statements, financial metrics and snapshots, earnings, analyst estimates, company facts, filings and filing items, line-item search, a screener, insider trades, macro interest rates, news, plus EDINET documents and filing digests for Japanese issuers. **Why this rather than the source** Statements as fields you can compute on, and a screener in the same place. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Read the fundamentals here, then ask the same agent what social is saying about the ticker — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/finance/mcp for equities, crypto and prediction markets in one place.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP Server for accessing 36 Brazilian public data sources and 1 agent, enabling AI agents to query government data on economy, legislation, transparency, judiciary, elections, environment, health, and more.61MIT
- AlicenseNot gradedqualityAmaintenanceFinancialFilings gives AI assistants and agents official filings, as published (annual and interim reports, ad-hoc disclosures, insider transactions, ESG reports) and standardized financials for listed companies in the US, EU, UK, APAC and LATAM. Remote MCP server at https://mcp.financialfilings.com/mcp with OAuth sign-in: no API key to copy, free for any FinancialFilings account.2MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that exposes real-time financial data tools for stock search, company info, historical prices, and financial metrics from Yahoo Finance, enabling AI agents to answer natural-language questions about stocks and financial markets.MIT
- AlicenseAqualityCmaintenanceMCP server that lets an LLM read official SEC financial data, tracing every number back to a specific SEC filing, US-GAAP tag, and filing date.4MIT