Skip to main content
Glama
SOTECHDI

brvm-mcp

by SOTECHDI

brvm-mcp

M8ven Live Monitored Pricing

πŸ‡«πŸ‡· 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

brvm_market_summary

Market overview: BRVM-C, BRVM-30, BRVM-Prestige indices, market cap, transactions, top/worst movers

brvm_quotes

Prices (FCFA) and % change β€” all 47 tickers or a specific one

brvm_list_companies

Listed companies, filterable by country

brvm_company_details

Company profile + PDF document links (annual reports, BOC)

brvm_dividends

Upcoming dividend payments: issuer, ticker, date, amount per share

brvm_dividend_yield

Dividend yield ranked highest first β€” the BRVM is primarily a yield market

brvm_price_history

Historical prices from local SQLite database (requires snapshot.py)

brvm_performance

Price performance over the tracked period

brvm_history_status

Database depth: first/last session, tickers tracked

brvm_fundamentals

P/E ratio, EPS, market cap from BOC PDF or annual report

brvm_diagnose_pdf

PDF structure diagnostic for troubleshooting extraction

Supplementary sources

Tool

Source

Added value vs brvm.org

brvm_volumes

AFX Kwayisi

Trading volumes (absent from brvm.org)

brvm_fondamentaux_ticker

AFX Kwayisi

P/E, EPS, dividend yield per ticker β€” no PDF needed

brvm_historique_avec_volumes

AFX Kwayisi

Last 10 sessions with volumes

brvm_indices_sectoriels

AFX Kwayisi

Sector indices: Energy, Financial Services, Public Utilities (day / 1WK / YTD)

brvm_cotations_enrichies

Rich Bourse

Previous close + market cap per ticker

brvm_ohlc

Sika Finance

Open / High / Low / Close + volumes

brvm_dividendes_sikafinance

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.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Windows (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-mcp

Manual 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.py

HTTP / Docker mode

For network deployment or integration with non-stdio MCP clients:

docker compose up -d

Exposes 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 coverage

Automate with cron (weekdays at 12:00 GMT):

0 12 * * 1-5  cd /path/to/brvm-mcp && .venv/bin/python snapshot.py >> snapshot.log 2>&1

LLM 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 passed

Answers 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 guard

Technical 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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Real-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.
    -
  • A
    license
    A
    quality
    C
    maintenance
    A Model Context Protocol (MCP) server that provides comprehensive access to Yahoo Finance data through 18 specialized tools for pricing, financials, options, holders, and news.
    18
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Indian stock market data. Provides 16 tools for quotes, history, fundamentals, mutual funds, indices, corporate actions, options, IPOs, and portfolio analysis.
    16
    37
    5
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    An 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
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SOTECHDI/brvm-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server