Back to Browse

Finance Mcp Connectors MCP Server

FinanceModerate7.6MCP RegistryLocalRemote
Free

Server data from the Official MCP Registry

Hosted MCP server for SEC, FRED, Polymarket, Deribit, OKX, and FMP.

About

Hosted MCP server for SEC, FRED, Polymarket, Deribit, OKX, and FMP.

Remote endpoints: streamable-http: https://finance-mcp.com/mcp

Security Report

7.6
Moderate7.6Low Risk

This is a read-only finance connector repo that calls public market-data APIs (SEC EDGAR, Deribit, OKX, Polymarket) and keyed APIs (FRED, FMP) using environment-variable credentials. No malicious patterns, shell execution, or data exfiltration were found in the provided code. The main points to note are that FRED and FMP API keys are sent as URL query parameters, which can leak into logs or proxies, and that the record script writes fixture files to disk during development. Supply chain analysis found 1 known vulnerability in dependencies (0 critical, 1 high severity).

12 files analyzed · 4 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

File System Write

Writes or modifies files on your machine. Check that this is expected for the tool.

How to Install & Connect

Available as Local & Remote

This plugin can run on your machine or connect to a hosted endpoint. during install.

Documentation

View on GitHub

From the project's GitHub README.

Finance MCP connectors

Connector definitions for Finance MCP: how each source is called, what it accepts, and what it returns.

This repo is the connector layer. Agents use the hosted server. Adding a source is a pull request.

Equity and crypto figures are what those sources return, often delayed. Not investment advice.

Quickstart

Connect to the hosted server.

  • MCP: https://finance-mcp.com/mcp
  • Skill: set up https://finance-mcp.com/SKILL.md
  • Docs: finance-mcp.com/docs

Cursor, in ~/.cursor/mcp.json:

{
  "mcpServers": {
    "finance-mcp": {
      "url": "https://finance-mcp.com/mcp"
    }
  }
}

Claude Code:

claude mcp add --transport http finance-mcp https://finance-mcp.com/mcp

Sign in when the client asks. Other clients are in the docs.

How an agent uses it

Three verbs. Finance MCP never charges money: each account gets 1,000 free credits once, shared by all of its API keys and OAuth sessions. Discover and inspect are free; each successful run costs 1 credit (FMP tools 2), and failed runs are not charged. See https://finance-mcp.com/pricing.

  1. finance_discover: describe the task. { "query": "BTC spot price", "limit": 5 } returns ranked { id, provider, displayName, summary }.
  2. finance_inspect: read one tool. { "id": "okx#ticker" } returns its input schema and output shape.
  3. finance_run: call it. { "id": "okx#ticker", "params": { "instId": "BTC-USDT" } }. A failed vendor call returns an error.

Stock tools take the ticker directly. For "where is this stock now", start with stocks#snapshot.

{ "id": "stocks#snapshot", "params": { "ticker": "SNDK" } }
{ "id": "stocks#price-history", "params": { "ticker": "MU", "range": "1y", "interval": "daily", "indicators": true } }
{ "id": "stocks#news", "params": { "ticker": "SNDK", "days": 7, "limit": 10 } }
{ "id": "macro#overview", "params": {} }
{ "id": "sec-edgar#fundamentals", "params": { "ticker": "SNDK", "period": "quarterly", "limit": 4 } }
{ "id": "sec-edgar#filings", "params": { "ticker": "MU", "forms": ["10-K", "10-Q", "8-K", "4"], "limit": 10 } }
{ "id": "fmp#income-statement", "params": { "symbol": "AAPL", "period": "annual", "limit": 3 } }
{ "id": "fred#observations", "params": { "seriesId": "DGS10", "limit": 12 } }
{ "id": "sec-edgar#submissions", "params": { "cik": "0000320193" } }
{ "id": "deribit#options", "params": { "currency": "BTC" } }
{ "id": "polymarket#events", "params": { "query": "SpaceX" } }

Sources

SourceUpstreamAuthEndpoints
US stocksTiingo, Twelve Data, SEC XBRL, FinnhubTIINGO_API_KEY, FINNHUB_API_KEY, optional TWELVE_DATA_API_KEYstocks#snapshot, stocks#price-history, stocks#news
US macroFREDFRED_API_KEYmacro#overview
SEC EDGAREDGAR APIsSEC_EDGAR_USER_AGENT, or the default contact stringsec-edgar#fundamentals, sec-edgar#filings, sec-edgar#submissions
FREDseries observationsFRED_API_KEYfred#observations
PolymarketGamma eventsnonepolymarket#events
Deribitget_instrumentsnonederibit#options
OKXmarket datanoneokx#ticker, okx#klines
FMPincome statementFMP_API_KEYfmp#income-statement

Stock prices are delayed or IEX only. Finnhub parts of the snapshot are optional and show up as notes when the free tier does not cover them.

Writing a connector

A connector describes one provider and its endpoints. The id is <provider>#<endpoint>.

A provider names the source, links its docs, and says how auth is supplied:

// connectors/okx/provider.ts
export default defineProvider({
  name: "okx",
  meta: {
    displayName: "OKX",
    summary: "Public crypto spot and swap market data.",
    homepageUrl: "https://www.okx.com",
    docsUrl: "https://www.okx.com/docs-v5/en/#order-book-trading-market-data",
  },
  auth: { kind: "none" },
});

An endpoint declares the call, the input schema, the output shape, and an example. The example response is a fixture file, replayed by the test.

// connectors/okx/endpoints/ticker/endpoint.ts
export default defineEndpoint({
  provider,
  name: "ticker",
  meta: {
    displayName: "OKX ticker",
    summary: "24h ticker (last price, high/low, volume) for a crypto instrument like BTC-USDT.",
    description: "Latest OKX ticker for one spot or swap instrument.",
    tags: ["crypto", "spot", "ticker"],
    docsUrl: "https://www.okx.com/docs-v5/en/#order-book-trading-market-data-get-ticker",
  },
  input: z.object({
    instId: z.string().describe("Instrument id, for example BTC-USDT."),
  }),
  outputShape: {
    type: "object",
    required: ["instId", "last"],
    properties: { instId: { type: "string" }, last: { type: "string" } },
  },
  example: {
    params: { instId: "BTC-USDT" },
    request: {
      method: "GET",
      url: "https://www.okx.com/api/v5/market/ticker?instId=BTC-USDT",
    },
    fixture: "recorded.json",
  },
  // buildRequest and parse map that call onto the output shape
});

meta.summary is what finance_discover ranks and finance_inspect returns. Say what the endpoint returns.

connectors/<name>/
├── provider.ts
└── endpoints/<endpoint>/
    ├── endpoint.ts
    ├── endpoint.test.ts
    └── fixtures/*.json

Composite tools, the ones that combine several upstream calls (stocks#*, macro#overview, sec-edgar#fundamentals, sec-edgar#filings), declare an execute function and are wrapped with composite() in the connector's index.ts. Their fixture records every upstream response of one run; npm run record:composite -- <provider>#<endpoint> writes it with keys removed.

  1. Read connectors/okx and connectors/fred, and CONTRIBUTING.md.
  2. Write the provider and the endpoint.
  3. Record a fixture with npm run record, then keep it trimmed.
  4. npm test and npm run lint must pass with no network.
  5. Open a pull request.

Check the definitions locally:

npm install
npm test
npm run catalog

Repo layout

connectors/     provider + endpoint definitions
src/            catalog load and fixture replay
scripts/        catalog and record
server.json     registry entry for the hosted server

License

MIT. See LICENSE.

Reviews

No reviews yet

Be the first to review this server!