MarketSage
MarketSage
An MCP-native market intelligence workbench: a traditional analyst workflow, exposed to LLM clients as tools, with every run saved and every source caveated.
A Go MCP gateway exposes seven finance tools and a saved-run resource over stdio. Behind it, a Python FastAPI analytics core provides market snapshots, price history, sentiment scoring, evidence search and research briefs, with an OpenBB-ready market adapter and a Hugging Face dataset boundary. DuckDB persists dataset manifests, research runs and audit events. A Next.js workbench gives analysts the same capabilities as a conventional application surface.
MarketSage does not execute trades, move money or provide investment advice.
At a glance
The problem | Analyst teams have a workflow that works. LLM clients want to use it. Bolting a chat box onto a finance app gives the model no structure, no provenance and no record; exposing the workflow as typed tools with saved, auditable runs does. |
What it does | Seven MCP tools ( |
Stack | Go 1.24 (MCP gateway), Python 3.12 with FastAPI and |
Validation | One gate, |
Architecture
LLM host / MCP client ──stdio JSON-RPC──► Go MCP gateway ──HTTP──► Python analytics core
├── OpenBB-ready market adapter
Next.js analyst workbench ──server-side proxy───────────────────────────────────► ├── Hugging Face dataset/model boundary
└── DuckDB: manifests, runs, audit eventsThree languages, each where it is strongest: Go for a transport-disciplined MCP server that never writes to stdout in stdio mode, Python for the data and model integrations, TypeScript for the client and the product surface. One schema in packages/contracts/marketsage.schema.json describes the shared payloads.
Quick start
Requires Node.js 22+, Go 1.24+ and uv.
npm install
npm run check # the gate
npm run demo:mcp # a TypeScript MCP client starts the stack, lists tools, runs the chain, reads a saved runFor the workbench, in two terminals:
npm run dev:analytics
npm run dev --workspace apps/web # http://localhost:3000, then Run BriefData and model modes
Mode | Behaviour |
| Deterministic local data from |
| Tries live OpenBB data and falls back to seeded data, with a warning in the response so the fallback is never silent. |
| Requires the optional OpenBB dependencies and fails clearly when they are missing. |
Model downloads are off by default. MARKETSAGE_ENABLE_MODEL_DOWNLOADS=true enables FinBERT; otherwise the deterministic sentiment fallback is used and reported as such.
Protected local mode
The analytics API is open for local demos. Set MARKETSAGE_HTTP_TOKEN to require bearer auth; the Go gateway and the Next.js proxy forward the same token server-side.
Documentation
The problem, the design and its reasons, what is measured | |
A guided tour of every feature, with commands and files | |
A five-minute walkthrough | |
Security posture, dependency sweeps, operational notes | |
Which datasets and models were reviewed, and why some were excluded | |
Licences of everything used | |
Validation evidence and known limitations | |
Requirements, high-level design, low-level design, execution plan, decisions |
License
AGPL-3.0-only, because OpenBB is. To relicense permissively, isolate OpenBB behind an external service boundary first and confirm compatibility.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/roshanrana/MarketSage'
If you have feedback or need assistance with the MCP directory API, please join our Discord server