Gloom MCP

Хостируемый MCP-сервер от Gloom — терминала с открытым исходным кодом в стиле Bloomberg. Котировки, финансовая отчётность, опционы, документы SEC, макроэкономика и новости для Claude, ChatGPT, Cursor и Codex.

Размещённый MCP-сервер

npx add-mcp 'https://api.gloom.sh/mcp'

Устанавливается в Claude Code, Codex, Cursor и другие

Документация

What it is

Gloom Cloud hosts a Model Context Protocol server at https://api.gloom.sh/mcp. It exposes the research tools Gloom's own assistant uses: quotes, history, financials, holders, analyst research, options, SEC filings and insiders, macro, congressional trades, short interest, options flow, the news wire, the equity diagnostic, and hiring data. With the right access it also reaches your notes, your teams, and team watchlists and portfolios.

Nothing runs on your machine. It is part of Gloom Pro.

Use it when an agent needs Gloom's data. Use the remote API to drive a running desktop or TUI, and the CLI for one-off reports from a shell.

Connect

Sign in from the client. OAuth clients (Claude Code, claude.ai, Cursor, most recent MCP clients) only need the endpoint. The first call opens a browser tab where you sign in and choose what the client may reach.

claude mcp add --transport http gloom https://api.gloom.sh/mcp

Use a key. For scripts, cron jobs, and clients that cannot open a browser, create a key in Cloud settings, Agents and send it as a bearer token (x-api-key also works). Keys are shown once; make one per agent, up to 10.

claude mcp add --transport http gloom https://api.gloom.sh/mcp \
  --header "Authorization: Bearer gloom_mcp_..."
export GLOOM_MCP_KEY=gloom_mcp_...
codex mcp add gloom --url https://api.gloom.sh/mcp --bearer-token-env-var GLOOM_MCP_KEY
{
  "mcpServers": {
    "gloom": {
      "url": "https://api.gloom.sh/mcp",
      "headers": { "Authorization": "Bearer gloom_mcp_..." }
    }
  }
}

Transport is Streamable HTTP, stateless: one JSON reply per POST, GET and DELETE answer 405. The authorization server is https://api.gloom.sh/auth with standard discovery, dynamic client registration, and PKCE; clients that request offline_access get a refresh token. Access tokens live two hours.

Access

AccessReaches
Market dataMarket, company, filing, macro, and news tools
ReadPlus teams.list, notes.list, notes.get, collections.list, collections.get
Read and writePlus notes.save, collections.add_symbol, collections.remove_symbol

Keys carry their access and an optional team pin; a pinned key sees one team and can omit teamId. Signed-in clients get the same levels through the mcp:read and mcp:write scopes, which you can untick on the consent screen. tools/list only returns what the caller may call. Personal notes are always the account owner's own.

Tools

Every tool is read-only unless listed under write, validates its arguments, and caps its result at 256 KB. limit bounds source rows before the cap.

ToolArguments
market.searchquery, limit
market.quotessymbols, exchange?, limit
market.historysymbol, exchange?, interval, startDate?, endDate?, limit
market.screenercategory, limit
market.options_chainsymbol, exchange?, expiration?, limit
market.short_interestsymbol, years, limit
market.options_flowlimit, symbol?, days?, minPremium? (any filter searches recorded prints instead of the live tape)
company.profile, company.financials, company.holders, company.analyst_research, company.corporate_actionssymbol, exchange?, limit
company.statementssymbol, exchange?, period, limit
sec.filingsticker, offset, limit
sec.insider_transactionsticker, limit
macro.calendar, macro.yield_curvelimit
macro.seriesseriesId, startDate?, endDate?, limit
congress.house_tradesyear?, member?, ticker?, side?, owner?, assetType?, minAmount?, limit
congress.senate_tradesyear?, member?, ticker?, side?, owner?, assetType?, minAmount?, limit
news.storiesquery?, feed, tickers, topics, limit
equity.diagnosticsymbol, exchange?, mode, limit
company.hiringticker, roles
market.hiring_moverslimit
teams.listlimit
notes.listscope (user or team), teamId?, kind? (ticker or quick), limit
notes.getid
notes.save (write)scope, teamId?, kind, key, title?, content, expectedRevision?
collections.listteamId?, limit
collections.getteamId?, collectionId, limit
collections.add_symbol (write)teamId?, collectionId, symbol, exchange?, quantity?, note?
collections.remove_symbol (write)teamId?, collectionId, symbol, exchange?

tools/list carries the full JSON schema with enums and defaults. Start with market.search when a ticker is ambiguous.

Notes are keyed: a ticker note by symbol, a quick note by any short name. notes.save replaces the whole note, so read first and pass expectedRevision; a newer edit returns revision_conflict instead of overwriting. Writes reach every team member's terminal immediately. quantity applies to portfolios only.

Interactive Brokers

Connect Interactive Brokers in Gloom and every client with read access also gets IBKR's own tools as ibkr.*: positions, balances, performance, trades, orders, contract search, prices, alerts, and watchlists. IBKR keeps one connection per user, so Gloom holds it and your agent reaches IBKR through Gloom instead of connecting on its own.

Read access sees IBKR's read tools. Read and write access also sees its write tools, including ibkr.create_order_instruction, when IBKR was connected with trading instructions enabled. An order instruction is not an order: IBKR returns a link where you review and submit it yourself.

Results

Each call returns text plus structuredContent with the same fields:

FieldMeaning
statusok, partial (a limit or the cap removed rows), or error
shaperows, bundle, series, or snapshot, naming the collection key in data
rowCount, truncated, asOfSize, whether rows were dropped, latest source timestamp
datarows, sections[].rows, series[].points, or items

A failed source returns status: "error" with data.error = { code, source, reason }, marked as a tool error.

Plans and limits

Creating keys needs Pro. Any valid key or token can initialize and tools/list; tool calls need Pro and get realtime quotes and the live news wire. Keys allow 120 requests a minute and 5,000 a day; signed-in accounts share the per-minute limit. Every POST counts. Over the limit means 429 with Retry-After. If Pro lapses, keys and connections stay but tool calls are refused until it is back.

Security

Keys are hashed at rest and shown once; access and team pin are fixed at creation. Revoking a key applies on the next request. Disconnecting a client revokes its refresh token at once; a token it already holds expires within two hours. Tokens are bound to the MCP server as audience. A market data key cannot see notes, teams, layouts, or portfolios; write access changes notes and collection items and nothing else.

Congress results include ticker and member aggregates over the filtered filing window, stock price returns since transaction and filing close, buy hit rate and matched party/current committee context. Missing prices remain null; these hindsight returns are not execution or portfolio returns. See Congressional disclosures for the basis and public member source.

The server tools sec.thirteenf_holders and sec.thirteenf_crowding expose public quarter-end 13F positions, reported fund weights, new positions, exits, and crowding across a ranked sample. Both return coverage metadata and source warnings; the holder tool accepts an offset for paging funds.

sec.thirteenf_crowding accepts rank: "new" | "exits" | "increases" | "decreases", applied before row truncation, so searches for exits or weight changes cover the full ranked-fund sample.