brvm-mcp
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., "@brvm-mcpWhat are the BRVM stocks with the highest dividend yield?"
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.
brvm-mcp
๐ซ๐ท Version franรงaise
MCP server giving AI assistants access to BRVM public data โ the West African regional stock exchange serving 8 UEMOA countries (Benin, Burkina Faso, Cรดte d'Ivoire, Guinea-Bissau, Mali, Niger, Senegal, Togo).
The BRVM publishes no public API. This server aggregates 4 data sources into 18 MCP tools so any AI assistant (Claude Desktop, Claude Code, etc.) can query real-time market data, fundamentals, dividends, volumes, and sector indices.
Disclaimer: For information and analysis only. Does not constitute investment advice (regulated activity under AMF-UMOA). Past performance does not guarantee future results.
18 tools
Official data โ brvm.org
Tool | Description |
| Market overview: BRVM-C, BRVM-30, BRVM-Prestige indices, market cap, transactions, top/worst movers |
| Prices (FCFA) and % change โ all 47 tickers or a specific one |
| Listed companies, filterable by country |
| Company profile + PDF document links (annual reports, BOC) |
| Upcoming dividend payments: issuer, ticker, date, amount per share |
| Dividend yield ranked highest first โ the BRVM is primarily a yield market |
| Historical prices from local SQLite database (requires |
| Price performance over the tracked period |
| Database depth: first/last session, tickers tracked |
| P/E ratio, EPS, market cap from BOC PDF or annual report |
| PDF structure diagnostic for troubleshooting extraction |
Supplementary sources
Tool | Source | Added value vs brvm.org |
| AFX Kwayisi | Trading volumes (absent from brvm.org) |
| AFX Kwayisi | P/E, EPS, dividend yield per ticker โ no PDF needed |
| AFX Kwayisi | Last 10 sessions with volumes |
| AFX Kwayisi | Sector indices: Energy, Financial Services, Public Utilities (day / 1WK / YTD) |
| Rich Bourse | Previous close + market cap per ticker |
| Sika Finance | Open / High / Low / Close + volumes |
| Sika Finance | Cross-check dividend announcements |
Related MCP server: yfinance
Quick start
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"brvm": {
"command": "uvx",
"args": ["--from", "git+https://github.com/sotechdi/brvm-mcp", "brvm-mcp"]
}
}
}Restart Claude Desktop. Then ask: "What are the BRVM stocks with the highest dividend yield?"
Config file locations:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonWindows (Store):
%LOCALAPPDATA%\Packages\Claude_*\LocalCache\Roaming\Claude\claude_desktop_config.json
Claude Code
claude mcp add brvm -- uvx --from git+https://github.com/sotechdi/brvm-mcp brvm-mcpManual install (pip)
git clone https://github.com/sotechdi/brvm-mcp.git
cd brvm-mcp
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python server.pyHTTP / Docker mode
For network deployment or integration with non-stdio MCP clients:
docker compose up -dExposes a streamable-http MCP endpoint on port 8000. Set MCP_TRANSPORT=sse for legacy SSE clients.
Historical data
brvm.org only exposes the current session. To build trend analysis, run snapshot.py daily after market close (BRVM fixing ~10:45 GMT):
python snapshot.py # capture today's session (idempotent)
python snapshot.py --stats # show database coverageAutomate with cron (weekdays at 12:00 GMT):
0 12 * * 1-5 cd /path/to/brvm-mcp && .venv/bin/python snapshot.py >> snapshot.log 2>&1LLM agent & regulatory compliance
Beyond raw data access, the repository ships a ReAct agent (LangGraph) that consumes the 18 MCP tools and answers market questions in plain language.
Compliance by design. Publishing investment recommendations in the UEMOA
zone is a regulated activity requiring a CIB licence from the AMF-UMOA. Rather
than relying on prompt instructions alone, every answer passes through an
editorial linter that blocks prescriptive vocabulary โ buy, sell,
we recommend, price target, undervalued โ before it is returned. Output
that fails the check raises EditorialViolation and is rejected, not
silently rewritten: rewriting would hide the drift instead of surfacing it.
The linter matches prescriptive constructions, not isolated words. "The company sold its subsidiary" is a corporate event and passes; "sell SONATEL" does not. Matching is also accent-insensitive, so a missing diacritic cannot slip prescriptive French past the guardrail. Both distinctions are what keep it usable on real bulletins.
pytest tests/test_editorial.py # 23 prescriptive samples blocked, 14 factual ones passedAnswers therefore stay within factual reporting: prices, yields, volumes, corporate events. No advice, no forecasts.
Architecture
brvm-mcp/
โโโ server.py # FastMCP server โ 18 tools, stdio/HTTP/SSE transports
โโโ snapshot.py # Daily snapshot for historical database
โโโ brvm_scraper/
โ โโโ client.py # HTTP session, TTL cache (15 min), retry/backoff
โ โโโ quotes.py # Prices, indices, market activity (brvm.org)
โ โโโ companies.py # Listed companies with country filter
โ โโโ dividends.py # Dividends + yield calculation
โ โโโ afx_kwayisi.py # Volumes, fundamentals, sector indices (AFX)
โ โโโ richbourse.py # Previous close, market cap (Rich Bourse)
โ โโโ sikafinance.py # OHLC, dividends (Sika Finance)
โ โโโ storage.py # SQLite historization (UPSERT, stats, performance)
โ โโโ fundamentals.py # P/E / EPS extraction from PDF (pdfplumber)
โโโ agent/
โ โโโ graph.py # LangGraph ReAct agent over the MCP tools
โ โโโ tools.py # LangChain wrappers โ all 18 tools
โ โโโ prompts.py # System prompt โ analytical role, never advisory
โ โโโ editorial.py # Prescriptive-vocabulary blocker (regulatory guardrail)
โ โโโ cli.py # Interactive CLI
โโโ tests/
โโโ fixture_home.html # Captured brvm.org HTML for offline tests
โโโ test_parsers.py # Quote / dividend parsing
โโโ test_storage.py # SQLite storage
โโโ test_agent_smoke.py # Agent smoke test
โโโ test_editorial.py # Editorial linter โ blocking + false-positive guardTechnical notes:
Regex on page text, not CSS selectors โ more resilient to theme changes
15-minute TTL cache โ BRVM runs a single daily fixing (~10:45 GMT), no need to hammer sources
Identifiable User-Agent + exponential backoff โ respectful of public infrastructure
Pricing
โ sotechdi.github.io/brvm-mcp
Tier | Price | Calls |
Free | $0 | 25/day via HTTP (unlimited in local stdio mode) |
Pro | $9/month | Unlimited + personal API key |
Business | $29/month | Unlimited + 5 API keys + priority support |
Payment: Orange Money, Moov, PayPal, bank transfer โ contact@sotechdi.com
Community
Questions, feedback, or ideas? Open a GitHub Discussion โ or join the WhatsApp group for French-speaking users (Burkina Faso, Cรดte d'Ivoire, Sรฉnรฉgalโฆ): [coming soon]
If this server is useful to you, a โญ on GitHub helps others find it โ thank you!
License
MIT โ ยฉ 2026 Christian Dondire
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
33 pay-per-call market and news data tools over MCP with free discovery and x402 payments.
A Model Context Protocol server exposing real-time and historical Colombo Stock Exchange (CSE) data to AI agents and LLM applications. Provides quotes and OHLCV price history, full financial statements (income, balance sheet, cash flow), pre-computed technicals (moving averages, RS ratings, volume signals), macroeconomic indicators, corporate actions, and rule-based screening across CSE stocks and sector indices, everything needed to build CSE-aware trading assistants, research tools, and market-analysis agents. This is the official MCP server of www.ceyloncharts.com
China A-share market data over MCP: 22 tools for quotes, K-line, financials, money flow, top-trader boards, sectors, macro, convertible bonds and factor screening. Five tools need no API key, so you can connect and try it immediately.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceReal-time African stock market data across 13 exchanges in one MCP server. Access live prices, indices, top gainers and losers for NGX (Nigeria), GSE (Ghana), NSE (Kenya), JSE (South Africa), BRVM (West Africa), LuSE (Zambia), DSE (Tanzania) and more. Also covers NASD OTC โ Nigeria's Over-The-Counter securities exchange. 14 tools powered by Mansa Markets and NGX Pulse data infrastructure.-
- AlicenseAqualityCmaintenanceA Model Context Protocol (MCP) server that provides comprehensive access to Yahoo Finance data through 18 specialized tools for pricing, financials, options, holders, and news.1832 PyPI1MIT
- AlicenseAqualityDmaintenanceMCP server for Indian stock market data. Provides 16 tools for quotes, history, fundamentals, mutual funds, indices, corporate actions, options, IPOs, and portfolio analysis.1651 npm5MIT
- FlicenseAqualityCmaintenanceAn MCP server providing Model-usable tools to fetch real-time quotes, historical price charts, fundamental datasets, SEC filings, economic/earnings calendars, option chains, and corporate bond data from TradingView.21-