Skip to main content

Gateway connector between LLM agents and Sugra API world data through a bundled endpoint catalog and operation_id calls. Works with Anthropic Claude, OpenAI GPT, Google Gemini, xAI, and any MCP-enabled IDE.

Reason this release was yanked:

components security hygiene

Project description

sugra-api-mcp

sugra.ai

PyPI v0.5.2 | Python 3.11+ | MIT

Gateway connector between LLM agents and world data. Official Model Context Protocol server for the Sugra API, backed by a bundled endpoint catalog and operation_id calls.

Works with Anthropic Claude, OpenAI GPT, Google Gemini, xAI, and any MCP-enabled IDE.

Client details:

  • Anthropic Claude: Claude Desktop, Claude Code (CLI), claude.ai (web)
  • OpenAI GPT: ChatGPT (via MCP connector)
  • Google Gemini: Gemini CLI, Gemini Code Assist (VS Code + JetBrains)
  • xAI: Remote MCP Tools in xAI SDK and Responses API
  • IDEs: VS Code (native), Cursor, Zed, Cline, Continue.dev, Windsurf
  • Custom agents: anything built on the Python or TypeScript MCP SDK

What you get

Current release: five-tool gateway surface with hosted OAuth activity validation for https://app.sugra.ai/mcp, plus ChatGPT Apps-compatible OAuth tool metadata. Curated tool names such as get_market_price, get_macro_indicator, and get_news are not part of this package. The package exposes exactly five tools:

Tool Purpose
search_endpoints Search the bundled endpoint catalog. Runtime search does not fetch /openapi.json.
describe_endpoint Inspect an endpoint by operation_id, including path, method, parameters, and required inputs.
call_endpoint Call a Sugra API operation by operation_id. Arbitrary path calls are no longer supported.
list_toolsets List catalog groups and endpoint counts.
list_sources Show bundled catalog source metadata.

call_endpoint supports response shaping with limit, fields, and include_raw.

Installation

pip install sugra-api-mcp

Get a free API key at app.sugra.ai/settings/billing (Free tier: 50 req/day).

Usage with Claude Desktop (stdio)

Add to claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "sugra": {
      "command": "sugra-api-mcp",
      "env": {
        "SUGRA_API_KEY": "sugra_xxx_yourkey..."
      }
    }
  }
}

Restart Claude Desktop. Sugra tools appear in the tools menu.

Usage with Claude Code (Anthropic CLI)

claude mcp add sugra -- sugra-api-mcp
# then set the env var that sugra-api-mcp reads
export SUGRA_API_KEY=sugra_xxx_...

Or edit ~/.claude/config.json manually with the same shape as Claude Desktop above.

Usage with Cursor, Zed, Cline, Continue.dev, Windsurf

Each of these has an MCP settings file (typically mcp.json or equivalent) with the same stdio config shape as Claude Desktop.

Usage with ChatGPT

ChatGPT supports MCP through its connector UI. Use the hosted HTTP endpoint (below) since ChatGPT does not launch local stdio processes.

Usage over HTTP (claude.ai, ChatGPT, remote agents)

Hosted Streamable HTTP endpoint:

https://app.sugra.ai/mcp

Add to claude.ai, ChatGPT, or any Streamable HTTP MCP client. Authenticate with Authorization: Bearer sugra_xxx_....

In claude.ai: Settings -> Connectors -> Add custom connector. In ChatGPT: Settings -> Connectors -> Add MCP server.

CLI

Server startup is unchanged:

sugra-api-mcp
sugra-api-mcp --transport streamable-http --port 8001

Catalog and gateway helpers:

sugra-api-mcp doctor
sugra-api-mcp list-toolsets
sugra-api-mcp search "NASDAQ futures"
sugra-api-mcp describe cot_financial
sugra-api-mcp call quotes_symbol_price --params '{"symbol":"AAPL"}'

Environment variables

Variable Required Default Description
SUGRA_API_KEY Yes (stdio) - Your Sugra API key. In HTTP mode with OAuth this becomes a fallback for requests without Bearer
SUGRA_API_BASE No https://sugra.ai Override for self-hosted or beta environments
SUGRA_TIMEOUT No 30 Request timeout in seconds
SUGRA_MCP_ALLOWED_HOSTS No (HTTP) - Comma-separated hostnames to allow behind a reverse proxy

HTTP transport with OAuth

When running with --transport streamable-http the server allows unauthenticated MCP discovery requests (initialize, notifications/initialized, tools/list, resources/list, prompts/list, and ping) so ChatGPT Apps and other mixed-auth clients can discover tool metadata. Tool calls still require Authorization: Bearer .... Two token formats are accepted:

  • Raw API key (sugra_...) - passed through as the downstream x-api-key. Compatible with earlier local API-key setups.
  • OAuth JWT - signature verified against the issuer's JWKS. The audience must match https://app.sugra.ai/mcp, the token must include sugra:read, and hosted access is validated against APP before resolving the user's primary API key. Successful hosted OAuth requests update MCP connection activity in APP.
Variable Required Default Description
SUGRA_APP_URL HTTP + OAuth https://app.sugra.ai Base URL of the authorization server
SUGRA_JWKS_URL No $SUGRA_APP_URL/oauth/jwks.json JWKS endpoint
INTERNAL_API_TOKEN HTTP + OAuth - Shared secret for the user lookup and MCP activity endpoints on the authorization server. Same value must be set on both the MCP process and the app.sugra.ai Laravel process

Examples

Ask Claude:

  • "Search Sugra endpoints for NASDAQ futures."
  • "Describe the cot_financial operation."
  • "Call quotes_symbol_price with symbol AAPL and return only symbol and price."
  • "List available Sugra toolsets."

Troubleshooting

SUGRA_API_KEY environment variable is required

The server could not find your API key. Depending on how you run it:

  • As an MCP tool from your client (Claude, ChatGPT, Gemini, xAI, IDE, etc.): check the env block in your MCP config file. Value should be a full key like sugra_ao1_..., not empty and not wrapped in extra quotes.
  • Shell / CI: export SUGRA_API_KEY=sugra_... before running sugra-api-mcp.
  • HTTP mode: set via .env or systemd EnvironmentFile, not the shell.

401 Unauthorized or 403 Forbidden in tool responses

Key accepted but rejected. Common causes:

  • Key was regenerated in app.sugra.ai/settings/billing and your config still has the old one.
  • Typo - key contains only lowercase letters and digits, no spaces, no trailing newlines.
  • Free tier was deactivated. Sign in to verify status.

429 Too Many Requests

Hit your plan's daily limit. Response headers include X-RateLimit-Reset with the UTC timestamp when the counter resets (midnight UTC). Upgrade your plan at app.sugra.ai/settings/billing.

Invalid Host header (only if self-hosting HTTP mode)

FastMCP has DNS rebinding protection. Set SUGRA_MCP_ALLOWED_HOSTS to a comma-separated list of the public hostnames your reverse proxy serves. Example: SUGRA_MCP_ALLOWED_HOSTS=mcp.example.com,example.com.

Tool result truncated with meta.truncated notice

Some endpoints return very large payloads (global wildfires, full table catalogs). The client enforces the MCP 25k token limit - when hit, the data list is trimmed and a retry hint appears in meta.truncated.retry_hint. Add narrower filters (country, date range, limit) to get the full result.

Python version 3.11 or higher is required

sugra-api-mcp requires Python 3.11+. Check: python --version. If you have 3.10 or older:

  • Ubuntu: install Python 3.11 or newer from your distribution packages or the deadsnakes PPA.
  • macOS: brew install python@3.11
  • Windows: download from python.org

Then recreate your venv.

Hosted app.sugra.ai/mcp returns 5xx

The hosted endpoint can briefly restart after deploys. Wait 60 seconds and retry. If persistent, email support@sugra.systems.

Debugging tool calls locally

Run with stdio and log JSON-RPC messages:

SUGRA_API_KEY=sugra_... sugra-api-mcp 2>&1 | tee mcp-debug.log

Send manual JSON-RPC from a second terminal using nc or an MCP inspector.

Development

git clone https://github.com/Sugra-Systems/prod-sugra-ai-MCP
cd prod-sugra-ai-MCP
pip install -e ".[dev,http]"
export SUGRA_API_KEY=sugra_...
python -m sugra_api_mcp  # stdio mode
python -m sugra_api_mcp --transport streamable-http --port 8001  # HTTP mode
python scripts/build_endpoint_catalog.py  # rebuild bundled catalog from sibling API openapi.json

Run tests:

pytest

License

MIT © 2026 Sugra Systems, Inc.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sugra_api_mcp-0.5.2.tar.gz (252.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sugra_api_mcp-0.5.2-py3-none-any.whl (253.4 kB view details)

Uploaded Python 3

File details

Details for the file sugra_api_mcp-0.5.2.tar.gz.

File metadata

  • Download URL: sugra_api_mcp-0.5.2.tar.gz
  • Upload date:
  • Size: 252.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sugra_api_mcp-0.5.2.tar.gz
Algorithm Hash digest
SHA256 e93196ff9cc68f494d22f1e86815e8f82706b8f5d4055a48cea20805b36d3839
MD5 606393d228cf7bce139c7aeba700cb5f
BLAKE2b-256 25663d178770f57e83b783767555327f6458a3f9dff9ecd58d8c958c0a5db88f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sugra_api_mcp-0.5.2.tar.gz:

Publisher: publish-pypi.yml on Sugra-Systems/prod-sugra-ai-MCP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sugra_api_mcp-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: sugra_api_mcp-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 253.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sugra_api_mcp-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 187c8d61b9fe9dcaa1967c6fc6ac3be9bfcb08e94a865ea5e2babb9bb2565502
MD5 91fb45739b49b4b63381eac5a475fa89
BLAKE2b-256 c404507fcbfb73f5c4b49969e527ec55725ea17677574bde2d9166dead0623a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for sugra_api_mcp-0.5.2-py3-none-any.whl:

Publisher: publish-pypi.yml on Sugra-Systems/prod-sugra-ai-MCP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page