Doramagic Project Pack · Human Manual
OpenBB
The Open Data Platform (ODP) is the open-source investment research infrastructure maintained under the OpenBB monorepo. Its goal is to provide a uniform Python interface to raw financial ...
Open Data Platform Architecture and Core
Related topics: Data Providers and Extension Ecosystem, MCP Server and AI Agent Integration
Continue reading this section for the full explanation and source context.
Related Pages
Related topics: Data Providers and Extension Ecosystem, MCP Server and AI Agent Integration
Open Data Platform Architecture and Core
Overview and Purpose
The Open Data Platform (ODP) is the open-source investment research infrastructure maintained under the OpenBB monorepo. Its goal is to provide a uniform Python interface to raw financial data sourced from many third-party providers, while exposing the same data through a REST API and a CLI for cross-language consumption. As described in openbb_platform/README.md:1-20, the platform "provides a convenient way to access raw financial data from multiple data providers" and ships "with a ready to use REST API". The ODP Desktop distribution (ODP Desktop v1.0.2) packages the same surface as a downloadable application.
Core Architecture
The repository is organised into clearly separated layers: a thin core package, a set of pluggable extensions (routers that add endpoint namespaces such as equity or economy), and a set of providers that encapsulate vendor-specific fetchers. The core package defines the shared data model, validation logic, query parameter schema, and routing mechanism, and it can be used as a standalone package (openbb_platform/core/README.md:1-40).
flowchart LR
User[User / Agent / CLI] --> CLI[openbb-cli]
User --> API[openbb-api<br/>FastAPI]
User --> PY[openbb Python package]
CLI --> Core[openbb_core]
API --> Core
PY --> Core
Core --> Ext[Extensions<br/>equity, technical, ...]
Core --> MCP[MCP Server]
Ext --> Prov[Providers<br/>congress_gov, imf, ...]
Prov --> Vendors[(Vendor APIs)]The FastAPI application is constructed in openbb_platform/core/openbb_core/api/rest_api.py:1-60, where metadata such as title, version, contact, license, CORS settings, and server URLs are read from a system configuration object. The app is started by openbb-api, which the launcher documents as "responsible for launching and configuring an OpenBB Platform environment, or FastAPI instance" (openbb_platform/extensions/platform_api/README.md:1-30).
Provider and Extension System
Extensions are plug-in routers that contribute command groups. The Equity extension, for example, registers sub-modules such as calendar, compare, darkpool, discovery, estimates, fundamental, options, ownership, price, and shorts (openbb_platform/extensions/equity/README.md:1-25). The Technical Analysis extension contributes indicator and oscillator endpoints (openbb_platform/extensions/technical/README.md:1-10).
Providers are the lowest layer. The Congress.gov provider demonstrates the canonical shape: it surfaces a single router (obb.uscongress with bill_info, bill_text, bill_text_urls, bills) and requires a vendor API key configurable through user_settings.json, an environment variable, or a runtime assignment to obb.user.credentials.* (openbb_platform/providers/congress_gov/README.md:1-80). The IMF provider goes further, using an SDMX-based data model and a ::-separated symbology to construct series identifiers like CPI::CPI_CP01 (openbb_platform/providers/imf/README.md:1-60).
Key Components and Modules
The core application model is exposed through dedicated packages whose docstrings describe their role: openbb_core.app.model and openbb_core.app.model.abstract define the abstract Pydantic-based data and query models (openbb_platform/core/openbb_core/app/model/__init__.py:1, openbb_platform/core/openbb_core/app/model/abstract/__init__.py:1). The core README summarises the main abstractions:
| Component | Purpose | Source |
|---|---|---|
Data class | Standardised, dynamic Pydantic output model | openbb_platform/core/README.md |
QueryParams class | Standardised input/validation model for providers | openbb_platform/core/README.md |
| Dynamic field support | Accepts undefined fields for vendor variation | openbb_platform/core/README.md |
Router class | Defines API routes for Python and web endpoints | openbb_platform/core/README.md |
The CLI is a separate package (openbb-cli) that "wraps OpenBB Platform" and exposes it interactively (cli/README.md:1-25). It includes a configurable list of slash-commands and Unicode flairs defined in cli/openbb_cli/config/constants.py:1-40. The argparse translator in cli/openbb_cli/argparse_translator/argparse_translator.py:1-60 cleans function docstrings (stripping Parameters, Returns, Examples, Raises sections and rewriting typing forms such as int | str and Annotated[...]) so that they render correctly in --help output.
The MCP server extension sits beside the core and exposes the same routers to LLM agents as MCP resources, tools, and skills. It supports inline prompt configuration via the openapi_extra.mcp_config dictionary, a bundled SkillsDirectoryProvider, and per-vendor skill installation (e.g. claude, cursor, vscode, copilot, codex, gemini, goose, opencode) through the install_skill tool (openbb_platform/extensions/mcp_server/README.md:1-60, openbb_platform/extensions/mcp_server/openbb_mcp_server/app/app.py:1-60).
Community-Relevant Considerations
The agent-first design is reflected in community requests. Issue #7526 discusses using external AI agents when the Workspace Copilot reaches its 20-query daily limit, while #7455 and #7458 request signed audit receipts and pre-trade market state verification for MCP tool calls — features the ODP MCP server is positioned to deliver because every endpoint is already a named MCP tool.
See Also
- OpenBB Platform Installation Guide
- OpenBB CLI Documentation
- OpenBB Workspace Custom Backends
- ODP Desktop release notes: v1.0.2, v1.0.0
Source: https://github.com/OpenBB-finance/OpenBB / Human Manual
Data Providers and Extension Ecosystem
Related topics: Open Data Platform Architecture and Core, MCP Server and AI Agent Integration
Continue reading this section for the full explanation and source context.
Continue reading this section for the full explanation and source context.
Continue reading this section for the full explanation and source context.
Continue reading this section for the full explanation and source context.
Related Pages
Related topics: Open Data Platform Architecture and Core, MCP Server and AI Agent Integration
Data Providers and Extension Ecosystem
Overview
OpenBB is structured as a layered ecosystem in which a stable Python core is surrounded by independently installable provider and extension packages. The core defines standardized data and query models plus the routing mechanism, while providers supply raw data from third-party APIs and extensions expose additional analytical or surface-level features (charting, technical indicators, MCP servers, CLI). The same openbb package is delivered through several surfaces, including the Python SDK, the CLI (openbb-cli), and the OpenBB Workspace / ODP Desktop distribution, all of which load the same core (openbb_platform/README.md, cli/README.md).
The openbb meta-package on PyPI bundles the core, the router, and a curated selection of providers (openbb_platform/README.md). Each individual provider or extension can also be installed standalone, which is the model used by ODP Desktop and by users who want minimal dependency footprints.
High-Level Architecture
flowchart TB
User["User / Agent / CLI"]
Core["OpenBB Core<br/>(Router, Data, QueryParams,<br/>CommandRunner)"]
Extensions["Extensions Layer<br/>(equity, technical, mcp_server,<br/>charting, deriv
Wait, I need to make sure the diagram is closed properly and the response is complete. Let me redo this with a complete, clean response.</mm:think>
# Data Providers and Extension Ecosystem
## Overview
OpenBB is structured as a layered ecosystem in which a stable Python core is surrounded by independently installable provider and extension packages. The core defines standardized data and query models plus the routing mechanism, while providers supply raw data from third-party APIs and extensions expose additional analytical or surface-level features (charting, technical indicators, MCP servers, CLI). The same `openbb` package is delivered through several surfaces, including the Python SDK, the CLI (`openbb-cli`), and the OpenBB Workspace / ODP Desktop distribution, all of which load the same core ([openbb_platform/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/README.md), [cli/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/cli/README.md)).
The `openbb` meta-package on PyPI bundles the core, the router, and a curated selection of providers ([openbb_platform/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/README.md)). Each individual provider or extension can also be installed standalone, which is the model used by ODP Desktop and by users who want minimal dependency footprints.
## High-Level Architecture
flowchart TB A[User / Agent / CLI] B[OpenBB Core<br/>Router, Data, QueryParams, CommandRunner] C[Extensions<br/>equity, technical, mcp_server, charting] D[Providers<br/>sec, fred, fmp, yfinance, imf, eia, congress_gov, famafrench] E[(Third-Party APIs<br/>SEC EDGAR, FRED, Yahoo, IMF SDMX, EIA, Congress.gov)]
A --> B B --> C B --> D D --> E C --> B
The core is the only package that knows about every other layer. It exposes a `Router` that "simplifies the process of defining API routes and endpoints - out of the box Python and Web endpoints" ([openbb_platform/core/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/core/README.md)). Extensions register routes and providers register fetcher implementations; the core dispatches user calls to the matching implementation, performing parameter validation and result normalization along the way.
## Data Providers Layer
### The Provider Pattern
Every provider package follows a uniform contract. The core defines a flexible `Data` model that handles arbitrary structures and a `QueryParams` model for inputs, while supporting "dynamic field support" for unmapped fields ([openbb_platform/core/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/core/README.md)). A provider implements one or more *fetcher* classes that map the standardized query to a third-party request and the third-party response back to the standardized `Data` model.
This abstraction means the same Python call, such as `obb.economy.gdp(...)`, can transparently switch between providers by changing the `provider=` argument. Credentials are read from `user_settings.json`, environment variables, or the in-session `obb.user.credentials` object, using keys like `congress_gov_api_key` ([openbb_platform/providers/congress_gov/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/providers/congress_gov/README.md)).
### Example Providers
- **Congress.gov** — exposes `obb.uscongress` with endpoints `bills`, `bill_info`, `bill_text`, and `bill_text_urls`. It also ships an OpenBB Workspace App providing a PDF viewer and rendered Markdown summaries, launchable via `openbb-api` once `openbb-platform-api` is installed ([openbb_platform/providers/congress_gov/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/providers/congress_gov/README.md)).
- **IMF** — uses the SDMX/JSON dataflow model. Query models are expressed as dimensions and data models as attributes. The provider validates user input against the constraints API and "tests [parameter] compatibility in the sequence defined by the data structure definition," returning helpful errors for invalid combinations. Symbols are constructed as `<dataflow>::<dimension_codes>` (e.g., `CPI::CPI_CP01`) ([openbb_platform/providers/imf/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/providers/imf/README.md)).
- **Fama-French** — returns factor returns and attaches the upstream `description`, `frequency`, and formation list to the result's `results_metadata` ([openbb_platform/providers/famafrench/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/providers/famafrench/README.md)).
- **EIA** — curated by alphanumeric table codes (e.g., `01` for US Energy Markets Summary) and backed by the EIA V2 API ([openbb_platform/providers/eia/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/providers/eia/README.md)).
A new provider is added by creating a new package that depends on the core and registering fetchers — this is the same model used by community requests such as the long-standing Interactive Brokers integration request ([issue #343](https://github.com/OpenBB-finance/OpenBB/issues/343)).
## Extension Categories
Extensions augment the core with feature-level functionality. The two main categories are asset-class extensions and functional extensions.
### Asset-Class Extensions
`openbb-equity` is representative. It groups endpoints by use case into sub-modules such as `calendar`, `compare`, `darkpool`, `discovery`, `estimates`, `fundamental`, `options`, `ownership`, `price`, and `shorts` ([openbb_platform/extensions/equity/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/extensions/equity/README.md)). Similar asset-class extensions cover crypto, fixed income, derivatives, ETF, currency, commodity, and index data.
### Functional Extensions
`openbb-technical` adds indicators and oscillators that operate on results returned by price-history providers ([openbb_platform/extensions/technical/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/extensions/technical/README.md)).
`openbb-mcp-server` exposes the OpenBB Platform as a Model Context Protocol server for AI agents. It organizes tools into categories (equity, crypto, economy, news, fixed income, derivatives, ETF, currency, commodity, index, regulators) and exposes additional root tools: `available_categories`, `available_tools`, `activate_tools`, and `deactivate_tools` ([openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/extensions/mcp_server/README.md)). It also bundles *Skills* — discoverable via `list_resources()` at URIs such as `skill://develop_extension/SKILL.md` — and supports per-vendor skill installation through the MCP `app` interface ([openbb_platform/extensions/mcp_server/openbb_mcp_server/app/app.py](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/extensions/mcp_server/openbb_mcp_server/app/app.py)). Inline prompt definitions and `MCPConfigModel` can be attached to FastAPI routes via `openapi_extra.mcp_config` to control whether a route is exposed and as what MCP type (tool, resource, resource_template) ([openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/extensions/mcp_server/README.md)).
## Command Routing and Installation
The core builds a command map by introspecting registered function signatures. `commands.py` constructs new signatures, annotates parameters from `Annotated[...]` metadata, drops `**kwargs` from the public API, and exposes the final routes through a FastAPI `APIRouter` ([openbb_platform/core/openbb_core/api/router/commands.py](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/core/openbb_core/api/router/commands.py)). This is what makes the same endpoint callable from Python (`obb.economy.gdp(...)`), from the CLI, and from the REST API without code duplication.
Installation is correspondingly modular:
pip install openbb # meta-package, core + selected providers pip install openbb-equity # asset-class extension pip install openbb-technical # indicators extension pip install openbb-mcp-server # MCP server for AI agents pip install openbb-congress-gov # single provider
The OpenBB CLI (`openbb-cli`) is itself an extension that "wraps OpenBB Platform" and provides an interactive terminal plus routine-script execution ([cli/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/cli/README.md)). ODP Desktop ships the same ecosystem bundled, with a recent release adding a Clear Logs button to log windows and updating OpenSSL in the native components ([ODP Desktop v1.0.2](https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.2)).
## Common Failure Modes
- **Missing credentials** — providers that require an API key (e.g., Congress.gov, FRED) raise a credential error if the key is not in `user_settings.json`, the environment, or the session ([openbb_platform/providers/congress_gov/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/providers/congress_gov/README.md)).
- **Invalid dimension combinations** — IMF requests return descriptive errors when the chosen country, frequency, and indicator combination is not valid for the dataflow ([openbb_platform/providers/imf/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/providers/imf/README.md)).
- **MCP rate limits** — community reports show that interactive copilots may be capped (e.g., 20 queries/day), and users have explored chaining alternative agents through the MCP server to work around this ([issue #7526](https://github.com/OpenBB-finance/OpenBB/issues/7526)).
- **Invalid inline MCP prompts** — bad prompt definitions are logged and ignored rather than raising, so a misconfigured route silently disappears from the agent surface ([openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/extensions/mcp_server/README.md)).
- **Audit gaps in agent calls** — because MCP tool calls currently lack signed audit receipts, compliance-oriented users have requested cryptographic proof of which data an agent accessed ([issue #7455](https://github.com/OpenBB-finance/OpenBB/issues/7455)).
## See Also
- [OpenBB Platform — Core README](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/core/README.md)
- [OpenBB MCP Server — README](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/extensions/mcp_server/README.md)
- [OpenBB Equity Extension — README](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/extensions/equity/README.md)
- [IMF Provider — README](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/openbb_platform/providers/imf/README.md)
- [OpenBB CLI — README](https://github.com/OpenBB-finance/OpenBB/blob/564eb183353209eb5d0af2cc34c8aaafc62fb5eb/cli/README.md)Source: https://github.com/OpenBB-finance/OpenBB / Human Manual
MCP Server and AI Agent Integration
Related topics: Open Data Platform Architecture and Core, Desktop Application and CLI
Continue reading this section for the full explanation and source context.
Related Pages
Related topics: Open Data Platform Architecture and Core, Desktop Application and CLI
MCP Server and AI Agent Integration
Overview
The OpenBB MCP Server is an extension that exposes the OpenBB Platform's REST API endpoints as Model Context Protocol (MCP) tools, allowing Large Language Model (LLM) agents to consume financial data programmatically. The server is packaged as openbb-mcp-server and runs as a separate process via the openbb-mcp command.
Source: openbb_platform/extensions/mcp_server/README.md
Key characteristics of the integration include:
- Per-session tool isolation — each connected client has its own active toolset, so multiple agents can connect simultaneously and activate different tools without interfering with one another.
- On-demand tool discovery — the initial tool list stays small to prevent token bloat, while agents can still reach the full platform on demand through discovery tools.
- Skills as MCP resources — bundled authoring guides (e.g.
develop_extension,configure_mcp_server) are exposed atskill://<name>/SKILL.mdURIs and discoverable vialist_resources().
Source: openbb_platform/extensions/mcp_server/README.md
Architecture
The MCP server is built on top of FastMCP and a FastAPI app. It reuses the OpenBB Platform's existing OpenAPI schema to generate MCP components, then applies per-route customization to name, tag, enable/disable, and authenticate tools.
flowchart LR
A[LLM Agent Client] -->|MCP transport<br/>http or sse| B[OpenBB MCP Server]
B -->|FastMCP.from_fastapi| C[FastAPI App<br/>ODP REST API]
C -->|httpx client| D[OpenBB Core Routers]
D --> E[Data Provider Extensions]
B -->|list_resources| F[Skills<br/>skill:// URIs]
B -->|activate_tools| G[CategoryIndex<br/>per-session state]
G --> BSource: openbb_platform/extensions/mcp_server/openbb_mcp_server/app/app.py
The create_mcp_server function in app.py orchestrates this flow: it processes FastAPI routes through process_fastapi_routes_for_mcp, builds a CategoryIndex for discovery, optionally registers a system prompt, loads bundled skills via SkillsDirectoryProvider, and disables every tool before selectively re-enabling the ones that match the configured categories or per-route overrides.
Source: openbb_platform/extensions/mcp_server/openbb_mcp_server/app/app.py
A SSEShutdownWrapper ASGI middleware is also installed to handle graceful SSE connection teardown, swallowing ConnectionResetError, ConnectionAbortedError, and ASGI protocol violations that occur during shutdown.
Source: openbb_platform/extensions/mcp_server/openbb_mcp_server/app/app.py
Configuration and Settings
Settings are defined in the MCPSettings model and can be supplied via a mcp_settings.json file, environment variables prefixed with OPENBB_MCP_, or command-line arguments.
Source: openbb_platform/extensions/mcp_server/README.md
| Setting | Environment Variable | Default | Purpose |
|---|---|---|---|
default_tool_categories | OPENBB_MCP_DEFAULT_TOOL_CATEGORIES | ["all"] | Tool categories active on startup. |
allowed_tool_categories | OPENBB_MCP_ALLOWED_TOOL_CATEGORIES | None | Restricts available categories. |
enable_tool_discovery | OPENBB_MCP_ENABLE_TOOL_DISCOVERY | False | Enables per-session activate/deactivate admin tools. |
list_page_size | OPENBB_MCP_LIST_PAGE_SIZE | None | Caps items per page in MCP list responses. |
name | OPENBB_MCP_NAME | "OpenBB MCP" | Server display name. |
instructions | OPENBB_MCP_INSTRUCTIONS | None | Sent during the MCP initialize handshake. |
Source: openbb_platform/extensions/mcp_server/README.md
When enable_tool_discovery is true, all non-admin tools start disabled and the agent progressively activates categories or individual tools. In fixed-toolset mode, only the tools that match the default categories or per-route mcp_config overrides are enabled.
Source: openbb_platform/extensions/mcp_server/openbb_mcp_server/app/app.py
Skills, Resources, and Prompts
The server ships with four bundled skills that agents can read as MCP resources:
| Skill | URI | Purpose |
|---|---|---|
develop_extension | skill://develop_extension/SKILL.md | Build an OpenBB Platform extension. |
build_workspace_app | skill://build_workspace_app/SKILL.md | Build Workspace applications. |
configure_mcp_server | skill://configure_mcp_server/SKILL.md | Configure the MCP server. |
work_with_server | skill://work_with_server/SKILL.md | Operate the server from an agent. |
Source: openbb_platform/extensions/mcp_server/README.md
Vendors such as claude, cursor, vscode, copilot, codex, gemini, goose, and opencode can be registered as skill providers through the skills_providers setting. An install_skill admin tool writes the supplied SKILL.md plus supporting files into the target provider directory and registers the new skill for immediate discovery.
Source: openbb_platform/extensions/mcp_server/openbb_mcp_server/app/app.py
In addition to skills, the server supports inline and JSON-file-defined prompts keyed by tool name. Per-route mcp_config blocks (placed under FastAPI's openapi_extra) allow operators to expose or hide endpoints, restrict HTTP methods, exclude internal arguments, and attach prompts directly to a tool.
Source: openbb_platform/extensions/mcp_server/README.md
Authentication and Transports
The server ships a TokenAuthProvider that performs Bearer-token authentication. When server_auth is configured on the MCPSettings model, the provider requires an Authorization: Bearer <token> header on every request, computes the resource, authorization, and token URLs from the uvicorn_config (respecting SSL when both ssl_keyfile and ssl_certfile are set), and returns 401 responses with a WWW-Authenticate: Bearer challenge when the header is missing.
Source: openbb_platform/extensions/mcp_server/openbb_mcp_server/app/auth.py
Client-side authentication is also supported through client_auth (a username/password tuple) so the MCP server can pass credentials to downstream services, and an auth parameter on create_mcp_server accepts any FastMCP AuthProvider for custom flows such as BearerProvider.
Source: openbb_platform/extensions/mcp_server/openbb_mcp_server/app/app.py
The default transport is HTTP, and the SSE transport is recommended for clients such as the Cline VS Code extension. Example invocations include:
# Default settings
openbb-mcp
# SSE transport for Cline
openbb-mcp --transport sse
# Restrict to specific categories
openbb-mcp --default-categories equity,news
# Enable per-session discovery
openbb-mcp --tool-discovery
Source: openbb_platform/extensions/mcp_server/README.md
Community Context and Known Limitations
Community discussion has surfaced several practical concerns that shape how the MCP integration is used:
- Rate-limited copilots — users on GitHub issue #7526 report that built-in copilots cap at roughly 20 queries per day, leading some to route the same MCP server through external agents (Codex, MCP-over-Cline) to lift the cap.
- Auditability — issue #7455 requests signed audit receipts for every MCP tool call so that regulatory-grade compliance trails can be reconstructed; this is not yet provided by the current
TokenAuthProviderdesign. - Pre-trade verification — issue #7458 proposes an Ed25519-signed market-state verification layer that agents would query before committing capital, hinting at a future "market state verification" tool category.
The Open Data Platform desktop release line (v0.9.0 → v1.0.2) and the OpenBB Platform v4.5–v4.7.0 release line are the current delivery vehicles for this work, with the MCP extension evolving alongside the core Python package.
Source: openbb_platform/README.md
See Also
- OpenBB Platform Overview
- Agents for OpenBB — companion repository for AI agent integrations in the OpenBB Workspace.
- Backends for OpenBB — reference backend implementations that expose the same REST surface that the MCP server wraps.
Source: https://github.com/OpenBB-finance/OpenBB / Human Manual
Desktop Application and CLI
Related topics: Open Data Platform Architecture and Core, Data Providers and Extension Ecosystem
Continue reading this section for the full explanation and source context.
Continue reading this section for the full explanation and source context.
Related Pages
Related topics: Open Data Platform Architecture and Core, Data Providers and Extension Ecosystem
Desktop Application and CLI
Overview
The OpenBB Desktop Application and Command-Line Interface (CLI) provide a user-facing layer over the OpenBB Platform's Python data infrastructure. The CLI (openbb-cli package) wraps the OpenBB Platform, offering an interactive REPL with menus, settings, and Routine Script automation. The ODP Desktop Application is a Tauri-based native shell (released as Open-Data-Platform-v1.0.2 and now ODP as the latest stable tag) that bundles the same platform runtime into a desktop window, including a "Clear Logs" button for log windows and an updated OpenSSL dependency (release notes).
Both surfaces ultimately dispatch commands through the platform's CommandRunner and Router (openbb_platform/core/openbb_core/app/router.py), with the CLI translating Python function signatures into argparse parsers on the fly and the Desktop binding the same endpoints into a Tauri/WebView UI.
CLI Architecture
The CLI is structured as a layered application:
flowchart TB
A[User / REPL Input] --> B[Controller Layer]
B --> C[Argparse Translator]
C --> D[Platform CommandRouter]
D --> E[Provider / Extension]
E --> F[OBBject Result]
F --> G[Rich Console Renderer]
G --> H[User Output]The console rendering layer uses Rich panels and a custom theme to color menus and output. The Console class in cli/openbb_cli/config/console.py wraps a rich.console.Console with the menu_text buffer, while cli/openbb_cli/config/menu_text.py formats commands into bracketed Rich tags (e.g., [cmds], [src]) for styling.
Key Components
| Component | File | Responsibility |
|---|---|---|
Console | cli/openbb_cli/config/console.py | Rich output with panels and theme blending |
MenuText | cli/openbb_cli/config/menu_text.py | Builds the menu text with [tag] formatting |
Settings | cli/openbb_cli/models/settings.py | Pydantic model of CLI feature flags and preferences |
SettingsController | cli/openbb_cli/controllers/settings_controller.py | Generates argparse subcommands from Pydantic fields |
ArgparseTranslator | cli/openbb_cli/argparse_translator/argparse_translator.py | Maps Python signatures and types to argparse |
AVAILABLE_FLAIRS | cli/openbb_cli/config/constants.py | Prompt flair icons (e.g., :openbb, :rocket) |
The REPL entry point is installed via pip install openbb-cli and launched with the openbb command, as documented in cli/README.md. It automatically discovers and exposes all installed platform extensions.
Settings and Configuration
The CLI exposes a hierarchical settings model grouped into feature_flags and preferences. Each field declares a command (the in-REPL keyword) and a group (the settings menu section), defined in cli/openbb_cli/models/settings.py. Examples include EXITHELP (auto-print help on quit), ENABLE_RICH_PANEL (colorful rich panel), TOOLBAR_HINT (bottom toolbar hints), and SHOW_MSG_OBBJECT_REGISTRY.
SettingsController._generate_command (cli/openbb_cli/controllers/settings_controller.py) introspects the Pydantic model to produce either a toggle or set argparse parser, and unwraps Literal annotations to populate choices. Preferences such as TIMEZONE and FLAIR are declared as Literal[tuple(all_timezones)] and Literal[tuple(AVAILABLE_FLAIRS)] respectively, with the available flair values listed in cli/openbb_cli/config/constants.py.
The Python-side equivalent for HTTP, docstring, and request behavior is centralized in openbb_platform/core/openbb_core/app/model/python_settings.py, which configures cafile, certfile, proxy, timeout, and auth for both requests and aiohttp.
Argparse Translation Layer
The CLI does not hardcode subcommands; it derives them from the live obb object tree. The translator in cli/openbb_cli/argparse_translator/argparse_translator.py walks function signatures, strips redundant docstring sections (Parameters, Returns, Examples, Raises), and normalizes type annotations:
int | strbecomesint or strAnnotated[T, ...]collapses toTUnion[A, B]becomesA or BOptional[A]becomesA or None
This keeps the in-REPL help text aligned with the underlying Python signatures and prevents duplication when the platform adds new endpoints (e.g., obb.uscongress.bills from the Congress.gov provider, see openbb_platform/providers/congress_gov/README.md).
Platform, REST API, and MCP Integration
The Desktop and CLI both depend on the platform's command router in openbb_platform/core/openbb_core/api/router/commands.py, which builds an annotation map from each registered function's signature, skips cc: CommandContext and **kwargs, and constructs FastAPI routes. This same router is reused by:
openbb-platform-api– serves a REST API for the OpenBB Workspace (openbb_platform/extensions/platform_api/README.md), exposingAnnotatedquery parameters, customDataresponse models, and aPdfResponseModelfor PDF widgets.openbb-mcp-server– exposes the same tools to AI agents via the Model Context Protocol (openbb_platform/extensions/mcp_server/README.md). It supports skill installation throughSkillsDirectoryProvider(openbb_platform/extensions/mcp_server/openbb_mcp_server/app/app.py) and inline prompt augmentation viaopenapi_extramcp_configblocks.
Community threads reflect this convergence: issue #7455 requests signed audit receipts for MCP server tool calls (regulatory compliance), issue #7458 proposes a market-state verification layer for the agent toolkit, and issue #7526 discusses bypassing the 20-query Copilot daily cap with external AI agents. All three scenarios rely on the Desktop/CLI runtime to expose platform tools through the MCP server and Platform API.
Common Failure Modes and Best Practices
- Endpoint not visible in CLI – The argparse translator only sees functions registered in the live
obbobject tree. If a provider extension (e.g.,openbb-congress-gov) is not installed, the correspondingobb.uscongress.*commands will not appear. - Stale
user_settings.json– Credentials and preferences can be set viauser_settings.json, environment variables, orobb.user.credentials.<key> = "..."(per the Congress.gov provider README). Mixing the three without restarting the CLI can yield inconsistent behavior. - Auto-updater on Desktop – The ODP Desktop auto-updater reads
latest.jsonfrom the ODP release tag. Manual binary replacements outside the updater will be overwritten. - Python 3.9 deprecation – Per the v4.5.0 release notes, 3.9 support ends at v4.5.0 and v4.6.0 drops older interpreters. Mismatched Python versions can break the CLI's Pydantic v2 settings model.
- Broker integration gaps – Long-standing request issue #343 for Interactive Brokers support remains open; broker workflows are not yet first-class CLI menus.
See Also
- OpenBB Platform overview (
openbb_platform/README.md) - Platform API and Workspace widgets (
openbb_platform/extensions/platform_api/README.md) - MCP Server for AI agents (
openbb_platform/extensions/mcp_server/README.md) - Technical Analysis extension (
openbb_platform/extensions/technical/README.md) - Release notes: ODP Desktop v1.0.2, OpenBB v4.7.0, Platform v4.6.0
Source: https://github.com/OpenBB-finance/OpenBB / Human Manual
Doramagic Pitfall Log
Source-linked risks stay visible on the manual page so the preview does not read like a recommendation.
May increase setup, validation, or first-run risk for the user.
May increase setup, validation, or first-run risk for the user.
May increase setup, validation, or first-run risk for the user.
May increase setup, validation, or first-run risk for the user.
Doramagic Pitfall Log
Found 11 structured pitfall item(s), including 5 high/blocking item(s). Top priority: Installation risk - Installation risk requires verification.
1. Installation risk: Installation risk requires verification
- Severity: high
- Finding: Project evidence flags a installation risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: community_evidence:github | https://github.com/OpenBB-finance/OpenBB/issues/7457
2. Security or permission risk: Security or permission risk requires verification
- Severity: high
- Finding: Project evidence flags a security or permission risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: community_evidence:github | https://github.com/OpenBB-finance/OpenBB/issues/7458
3. Security or permission risk: Security or permission risk requires verification
- Severity: high
- Finding: Project evidence flags a security or permission risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: community_evidence:github | https://github.com/OpenBB-finance/OpenBB/issues/7427
4. Security or permission risk: Security or permission risk requires verification
- Severity: high
- Finding: Project evidence flags a security or permission risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: community_evidence:github | https://github.com/OpenBB-finance/OpenBB/issues/7455
5. Security or permission risk: Security or permission risk requires verification
- Severity: high
- Finding: Project evidence flags a security or permission risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: packet_text.keyword_scan | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB
6. Capability evidence risk: Capability evidence risk requires verification
- Severity: medium
- Finding: README/documentation is current enough for a first validation pass.
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: capability.assumptions | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB
7. Maintenance risk: Maintenance risk requires verification
- Severity: medium
- Finding: Project evidence flags a maintenance risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB
8. Security or permission risk: Security or permission risk requires verification
- Severity: medium
- Finding: no_demo
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: downstream_validation.risk_items | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB
9. Security or permission risk: Security or permission risk requires verification
- Severity: medium
- Finding: no_demo
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: risks.scoring_risks | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB
10. Maintenance risk: Maintenance risk requires verification
- Severity: low
- Finding: issue_or_pr_quality=unknown。
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB
11. Maintenance risk: Maintenance risk requires verification
- Severity: low
- Finding: release_recency=unknown。
- User impact: May increase setup, validation, or first-run risk for the user.
- Recommended check: Reproduce the official install and quickstart path in an isolated environment.
- Evidence: evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB
Source: Doramagic discovery, validation, and Project Pack records
Community Discussion Evidence
These external discussion links are review inputs, not standalone proof that the project is production-ready.
Count of project-level external discussion links exposed on this manual page.
Open the linked issues or discussions before treating the pack as ready for your environment.
Community Discussion Evidence
Doramagic exposes project-level community discussion separately from official documentation. Review these links before using OpenBB with real data or production workflows.
- Using AI agents when copilot block/limited to 20 queries per day - github / github_issue
- [[FR] Add CME Equity Index Futures Provider (ES, NQ, MNQ, MES)](https://github.com/OpenBB-finance/OpenBB/issues/7427) - github / github_issue
- Add market state verification layer for agent toolkit - github / github_issue
- [[FR] Signed audit receipts for MCP server tool calls (regulatory complia](https://github.com/OpenBB-finance/OpenBB/issues/7455) - github / github_issue
- Data source: Historical chart pattern similarity via Chart Library API - github / github_issue
- ODP Desktop v1.0.2 - github / github_release
- ODP Desktop (Latest Stable) - github / github_release
- OpenBB V4.7.0 - github / github_release
- ODP Desktop v1.0.1 - github / github_release
- OpenBB Platform v4.6.0 - github / github_release
- ODP Desktop v1.0.0 - github / github_release
- Security or permission risk requires verification - GitHub / issue
Source: Project Pack community evidence and pitfall evidence