Sugra MCP

ai.sugra由 sugra.ai 發布官方發布者v0.14.1更新於 Nov 5, 2026

Connect AI agents to primary sources - markets, macro, news, earth, network, entities and research.

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取金融資料與分析

概覽

AI 產生的概覽

Sugra MCP 讓助理以唯讀方式取得市場、總經、新聞、地球、網路、實體與研究等一手資料,背後是可搜尋的 1600 多個端點目錄。

可以做什麼
  • 搜尋、檢視並呼叫目錄中的端點,或用一句自然語言請求一步取得資料
  • 列出目錄中的工具集與來源類別及其端點數量
  • 把股票代號、公司、指標、代幣與貨幣對解析為同一實體,再取得目前快照或有界時間序列
  • 依名稱篩查制裁名單,並以 LEI 或 VAT 編號查詢公司並附帶篩查
  • 使用內建的市場、總經、制裁與來源類工作流程提示與技能資源
適用情境
當助理需要附來源與日期的市場、總經指標、新聞、天氣、網路或法律實體資料,且應標明出處時適用。較適合研究與分析類工作,而非寫入操作。
執行需求
可使用託管端點(以 Sugra 帳號登入,或以 Bearer 權杖送出 API 金鑰),也可在 Python 3.13 以上透過 stdio 執行本機 PyPI 套件。資料類工具需要 SUGRA_API_KEY 環境變數,目錄類工具不需金鑰。免費金鑰每天 50 次請求。
安裝前請注意
API 金鑰屬於機密,透過環境變數或 Bearer 權杖傳遞。部分呼叫按單位計費,涉及方案與帳單,使用可能產生費用。篩查結果是訊號而非法遵判定,政治敏感人物與負面媒體涵蓋為補充性且不完整。資料為唯讀,但會傳送至 Sugra 的服務。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Sugra MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/ai.sugra%2Fapi-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "sugra": {
      "type": "http",
      "url": "https://mcp.sugra.ai/mcp"
    }
  }
}

README

[Sugra]

Sugra MCP

Connect AI agents to primary sources - markets, macro, news, earth, network, entities and research.

[PyPI] [Python 3.13 | 3.14 | 3.15] [License]

[Add to Claude] [Add to ChatGPT] [GitHub MCP Registry] [Install in VS Code] [Install in Cursor]

Website  ·  Documentation  ·  Videos  ·  Blog  ·  Free API key

Sugra MCP is built and run by Sugra Systems, Inc. It brings Sugra Data into AI assistants and agents over the Model Context Protocol: 1,600+ endpoints from 200 primary sources across 36 data domains - central banks, national statistics offices, regulators, intergovernmental bodies and more. The agent searches the catalog, reads an endpoint's description and calls it, and every answer carries its source and date.

Published in Anthropic's Connectors Directory, the OpenAI Plugins Directory and the GitHub MCP Registry. Works with Claude, Claude Code, ChatGPT, Codex, Grok, Cursor, Antigravity, GitHub Copilot, VS Code, Zed, Cline, Continue and any MCP client.

Watch: How Sugra MCP works · Seven directions, one key

Seven directions

DirectionWhat an agent can ask forLearn more
Sugra FinanceQuotes, price history, company financials, SEC filings, funds, options, futures and TreasuriesDocs · Video · Article
Sugra MacroInflation, GDP, interest rates, jobs, trade and public finance of whole countriesDocs · Video · Article
Sugra NewsHeadlines, feeds and the world's media attentionDocs · Video · Article
Sugra EarthWeather, climate, air quality, energy, natural hazards and vessel trafficDocs · Video · Article
Sugra NetAtlasIP and ASN lookups, routing history, geolocation and internet outagesDocs · Video · Article
Sugra EntityLegal entity identifiers, company registries, sanctions and PEP screeningDocs · Video · Article
Sugra ResearchPapers, preprints, citations and authorsDocs · Article

Install

The server is hosted, so there is nothing to run. Add Sugra from your agent's directory or install the sugra-api-skills plugin, then connect as shown below. The plugin also carries the Sugra API Skills, which give the agent the procedure - find an operation, read the response, cite the source.

Anthropic - Claude and Claude Code

Claude (claude.ai, Desktop, mobile and Cowork): Add to Claude opens Sugra in Anthropic's Connectors Directory.

Claude Code, the plugin with the skills and the server:

text
/plugin marketplace add Sugra-Systems/sugra-api-plugins/plugin install sugra-api-skills@sugra-api-plugins
OpenAI - ChatGPT and Codex

Add to ChatGPT opens Sugra in the OpenAI Plugins Directory, which serves both ChatGPT and Codex. In ChatGPT the skills install together with the server.

Codex, the skills plugin:

bash
codex plugin marketplace add Sugra-Systems/sugra-api-pluginscodex plugin add sugra-api-skills@sugra-api-plugins
GitHub - Copilot and VS Code

GitHub MCP Registry opens Sugra in GitHub's registry. Its Install MCP server button adds the server to VS Code, VS Code Insiders or the GitHub Copilot app.

GitHub Copilot CLI, the plugin with the skills and the server:

bash
copilot plugin marketplace add Sugra-Systems/sugra-api-pluginscopilot plugin install sugra-api-skills@sugra-api-plugins

VS Code: Install in VS Code adds the server.

xAI - Grok and Cursor

Grok, the plugin with the skills and the server:

bash
grok plugin install Sugra-Systems/sugra-api-plugins#xai

Cursor: Install in Cursor adds the server. The plugin with the skills and the server:

bash
git clone https://github.com/Sugra-Systems/sugra-api-pluginsmkdir -p ~/.cursor/plugins/localcp -R sugra-api-plugins/cursor ~/.cursor/plugins/local/sugra-api-skills
Antigravity

The skills plugin:

bash
git clone https://github.com/Sugra-Systems/sugra-api-pluginsagy plugin install ./sugra-api-plugins/antigravity

Antigravity does not start the server from the plugin: add it as shown under Connect.

Other agents

The skills, for any agent that reads Agent Skills:

bash
npx skills add https://mcp.sugra.ai

The server: add it as shown under Connect.

Run it locally

The PyPI package runs the server on your machine over stdio with an API key. Python 3.13 or newer:

bash
pip install sugra-api-mcpexport SUGRA_API_KEY=sugra_...        # free key: https://app.sugra.ai/registersugra-api-mcp call quotes_symbol_price --params '{"symbol":"AAPL"}'

Connect

Every client connects to one address. Sign in with your Sugra account, or send an API key as Authorization: Bearer <key>:

text
https://mcp.sugra.ai/mcp
Anthropic - Claude and Claude Code

Claude: connect Sugra in the directory and sign in with your Sugra account. Added Sugra earlier as a custom connector? Remove that one before you connect from the directory, or you will have two.

Claude Code signed in with a claude.ai account picks the connector up on its own. With the plugin, sign in to its server from /mcp.

OpenAI - ChatGPT and Codex

In ChatGPT or Codex, connect Sugra and sign in with your Sugra account.

GitHub - Copilot and VS Code

GitHub Copilot CLI, by hand:

bash
copilot mcp add --transport http sugra-api https://mcp.sugra.ai/mcp

VS Code, by hand, .vscode/mcp.json:

json
{ "servers": { "sugra": { "type": "http", "url": "https://mcp.sugra.ai/mcp" } } }

Both open the Sugra sign-in page in your browser the first time they connect.

xAI - Grok and Cursor

Grok connects through the plugin.

Cursor, by hand, ~/.cursor/mcp.json:

json
{ "mcpServers": { "sugra": { "url": "https://mcp.sugra.ai/mcp" } } }

To sign in, open Cursor Settings, then Tools & MCPs, and select Connect next to sugra.

Antigravity
bash
agy mcp add sugra-api https://mcp.sugra.ai/mcp

The CLI, the app and the IDE share the server. Antigravity opens the Sugra sign-in page the first time the agent uses it.

Other agents

Add the address above as a remote MCP server in any client that speaks Streamable HTTP.

Local package - Claude Desktop, Cursor and other stdio clients
json
{  "mcpServers": {    "sugra": {      "command": "sugra-api-mcp",      "env": { "SUGRA_API_KEY": "sugra_..." }    }  }}

Claude Desktop reads it from claude_desktop_config.json, Cursor from ~/.cursor/mcp.json. Other stdio clients take the same command and environment variable in their own MCP settings.

Tools

ToolWhat it does
fetch_dataFinds the best endpoint for a plain-language request and calls it, in one step
search_endpointsSearches the catalog of 1,600+ endpoints
describe_endpointShows an endpoint's parameters, required inputs and cost hints
call_endpointCalls an endpoint by its operation id, with optional limit and fields
list_toolsetsLists the catalog groups with their endpoint counts
list_sourcesLists the sources behind the catalog
sugra_entity_screenScreens a name against sanctions lists and watchlists
sugra_entity_lookupLooks up a company by LEI or VAT number, with screening
resolve_entityHosted only: turns a ticker, company, indicator, coin or currency pair into one entity
get_snapshotHosted only: one current view of an entity, with freshness and provenance
get_timeseriesHosted only: a bounded series of an entity's price or macro metric

The server also ships six workflow prompts (market snapshot, macro briefing, sanctions screening, sector comparison, earth conditions, source overview) and serves five of the Sugra API Skills as MCP resources under sugra://skills/.

Documentation

Blog

Development

bash
git clone https://github.com/Sugra-Systems/sugra-api-mcpcd sugra-api-mcppip install -e ".[dev,http]"pytest

The test matrix runs on Python 3.13, 3.14 and 3.15.

Help

License

MIT © 2026 Sugra Systems, Inc.

來源:README.md,提交 24f7548

工具

11

sugra_entity_screen

Sugra Entity screen

Screen a person or organization name against the Sugra sanctions corpus. Returns a SCREENING SIGNAL, not a compliance determination. Sugra is a technology provider, not a sanctions authority or consumer reporting agency. PEP and adverse-media coverage is supplementary and non-comprehensive - a `clear` result is not proof of absence, and a `hit` is a candidate match to review, not a finding. Output is COMPACT to protect the agent context budget: `{status, matches:[{name, score, list, type}], disclaimer}`. The verdict `status` is one of `clear`, `review`, or `hit`. The heavy raw fields (match rationale, source ids, publish dates) are dropped; use the Sugra API directly when the full screening envelope is needed. Args: name: The person or organization name to screen (required). country: Optional ISO 3166-1 alpha-2 country to narrow the match. dob: Optional date of birth (YYYY-MM-DD) for a person. nationality: Optional nationality to narrow the match.

輸入參數dobname必填countrynationality

sugra_entity_lookup

Sugra Entity lookup

Resolve an entity by identifier and return its composed KYB envelope. `anchor` is `lei` (Legal Entity Identifier, resolved via the GLEIF registry) or `vat` (EU VAT number, validated via the EU VIES service). The result weaves identity, a sanctions screening signal, and - on request - ownership and adverse-media slices. The screening verdict is a SCREENING SIGNAL, not a compliance determination, and any PEP / adverse-media content is supplementary and non-comprehensive. The `disclaimer` field carries this and is always present. Output is COMPACT by default to protect the agent context budget: `{entity:{name, anchor, value, status, country}, screening:{status, top_matches:[...3], hit_count}, ids:{...}, disclaimer}`. Pass `include` to opt INTO fuller per-slice detail, e.g. `include=["ownership","adverse_media"]` adds those slices in full form. On a bad anchor or an API error this returns a clean `{error, detail}` dict rather than raising, so the agent can branch on `result.get("error")`. Args: anchor: Identifier type, one of `lei` or `vat`. value: The identifier value (the 20-char LEI code or the VAT number). include: Optional list of fuller slices to add, e.g. `["ownership", "adverse_media"]`. Omit for the compact default.

輸入參數value必填anchor必填include

search_endpoints

Search endpoints

Search the bundled Sugra endpoint catalog by natural-language query. Use this to pick an operation_id. It does not fetch data. Typical loop: 1. search_endpoints(query) -> ranked hits with required_parameters 2. describe_endpoint(operation_id) -> params, request_body_schema, agent_hints 3. call_endpoint(operation_id, params=..., body=...) or fetch_data(query, params=...) Filter with toolset or source only after list_toolsets / list_sources; a misspelled filter is an error, not a silent empty result. Examples: - search_endpoints("US CPI inflation") - search_endpoints("AAPL price", toolset="markets") - search_endpoints("container ship AIS", toolset="network")

輸入參數limitquery必填sourcetoolset

describe_endpoint

Describe endpoint

Describe one Sugra API endpoint by operation_id. Includes agent_hints (duration_class fast/slow/heavy, max_concurrency, bulk billing) so you can budget timeouts and parallelism before calling. POST endpoints with a JSON body also carry request_body_schema (the resolved JSON schema) - construct the `body` argument from it instead of guessing key names. Call this after search_endpoints and before call_endpoint when you need the exact parameter names and examples.

輸入參數operation_id必填

call_endpoint

Call endpoint

Call a Sugra API endpoint by operation_id from the bundled catalog. Plan calls with describe_endpoint's agent_hints: duration_class "fast" usually responds in under ~2s, "slow" usually 1-5s and occasionally 15s+ on a cold upstream, "heavy" can exceed the gateway timeout - keep parallel calls within max_concurrency and prefer small batches. Bulk endpoints bill 1 request credit per body item. Failures return structured errors {error, reason, status_code, elapsed_ms, retry_hint}; after "upstream_timeout" a single retry often succeeds because the aborted attempt warms upstream caches.

輸入參數bodylimitfieldsparamsinclude_rawoperation_id必填

list_toolsets

List toolsets

List catalog groups with endpoint counts and short descriptions. Use the group names as the toolset filter on search_endpoints. This does not call the Sugra API; it reads the bundled catalog.

無需輸入參數。

fetch_data

Fetch data

One-step fetch: find the best Sugra endpoint for the query and call it. Combines search_endpoints + call_endpoint into a single round trip. Use this when you want data without manually picking an operation_id. The full search_endpoints + describe_endpoint + call_endpoint dance is still available when you need explicit control, but for most natural-language queries this tool is enough. Behavior: 1. Search the bundled catalog for the query. Top match wins. 2. If the matched endpoint has required parameters and they are all provided in `params`, call it and return the response. 3. If required parameters are missing, return the candidate endpoints and the missing-params list so the LLM can retry with the correct `params` dict on the next call. 4. If the query names a country and the match takes a `country` or `countries` param that `params` leaves unset, return needs_params for it with query_countries (ISO2) instead of running the match without that filter. Examples: - `fetch_data("US CPI inflation", params={"series_id": "CPIAUCSL"})` runs fred_series_series_id (/api/v1/fred/series/CPIAUCSL) and returns observations. - `fetch_data("Bitcoin price")` runs onchain_bitcoin_price, which takes no params. - `fetch_data("Latest financial news")` runs news_latest, which has no required params. Only the top match runs, and a param it does not declare returns error unknown_parameters. For one coin's price, name the operation: `call_endpoint("crypto_coin_id_price", params={"coin_id": "bitcoin"})`.

輸入參數bodylimitquery必填fieldsparamsinclude_raw

list_sources

List sources

List source families in the bundled catalog with endpoint counts. Use the family names as the source filter on search_endpoints. This does not call the Sugra API.

無需輸入參數。

resolve_entity

Resolve entity

Resolve free text to a canonical market or macro entity. Turns a ticker, company name, macro indicator, coin, or currency pair into the agent plane's ``{namespace, ids}`` entity for use with get_snapshot and get_timeseries. A cross-namespace collision (e.g. a ticker that is both an equity and a coin) returns status "ambiguous" with ranked candidates and NEVER silently picks one; pass type_hint (e.g. "equity", "etf", "coin") to narrow the universe. Crypto aliases resolve too (e.g. "bitcoin" -> the BTC coin entity). Status "low_confidence" means the best match cleared resolution but scored weakly - verify the returned entity before building on it, or re-query with a more specific name or type_hint. For compliance KYB lookups by LEI/VAT or sanctions screening use sugra_entity_lookup / sugra_entity_screen instead - this tool is for market-data entities. Args: query: Free-form text - ticker, company, indicator, coin, or pair. type_hint: Optional namespace hint narrowing resolution.

輸入參數query必填type_hint

get_snapshot

Get snapshot

Composed current view of an entity via a named recipe. Executes a fixed server-side recipe (company_snapshot, etf_snapshot, quote_snapshot, macro_indicator_snapshot, macro_calendar, earnings_snapshot, debt_snapshot) and returns one envelope with freshness, provenance, per-component coverage, and billing. Composed calls charge the recipe's fixed cost (1-2 units) from the daily quota. status "partial" means an optional component was unavailable - the present components are still trustworthy; honor the freshness block (stale=true means the data aged past its budget); for macro_calendar, entity is accepted but does not filter the calendar. Args: recipe: Recipe name from the fixed manifest. entity: Entity dict from resolve_entity ({"namespace": ..., "ids": ...}).

輸入參數entity必填recipe必填

get_timeseries

Get timeseries

Bounded timeseries for an entity: price, macro_series, etf_flows or etf_monthly_flows. Returns points oldest-first with an explicit downsampling flag when the raw series exceeded max_points. Times are UTC. Costs 1 unit per call. Read the step from ``served_granularity``, not ``granularity``. The latter echoes the request; the former is the step the source built the points at, and the two can differ (a long price range can come back as monthly bars under a "1d" request). It reads ``mixed`` when the points do not share one step, ``unknown`` when the source does not say, and null when no point came back. It describes how each point was built, not how far apart the returned points are: a thinned daily series still reads ``1d``, and ``downsampled`` is what says points were dropped. The two ETF flow metrics answer different questions and are not interchangeable. ``etf_flows`` is an ESTIMATE at filing cadence: one point per SEC filing refresh, so ``t`` is a filing date and even a wide window yields a handful of points. ``etf_monthly_flows`` is the fund's own creations and redemptions from its NPORT-P filing, so ``t`` is a calendar month (``YYYY-MM``) and each point carries the three filed components - sales, reinvestment, redemption - beside the net. Two things to read before quoting etf_monthly_flows. NPORT-P is filed per SERIES, so for a fund with more than one share class the figures cover every class and the payload says so in ``multi_class_series``; where the class count is unknown it says ``class_scope`` instead of staying silent. And a fund that files no NPORT-P at all, such as a commodity trust, is not an error: the call returns status ``partial`` with an empty point list and a ``reason``. Args: metric: One of price / macro_series / etf_flows / etf_monthly_flows. entity: Entity dict from resolve_entity ({"namespace": ..., "ids": ...}). granularity: Requested point granularity (default "1d"). max_points: Hard cap on returned points (default 500)

輸入參數entity必填metric必填max_pointsgranularity

版本歷史

4
  1. v0.14.1最新Nov 5, 2026
  2. v0.14.0Nov 5, 2026
  3. v0.13.0Nov 3, 2026
  4. v0.12.0Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分