Skip to main content

futu-opend-mcp

An MCP server that exposes Futu OpenD's read-only investment-research quote APIs (stock/option/warrant/futures prices, financials, news/announcements, shareholders, institutions, macro) as MCP tools. It borrows your already-running, logged-in Futu OpenD gateway - no separate auth. No trading, no subscriptions.

It wraps the official Futu skill pack unmodified, so it stays in sync with Futu's own field-parsing logic.

Install & run

Claude Code / Claude Desktop (stdio)

claude mcp add futu-opend-mcp -- uvx futu-opend-mcp

Or from git before a PyPI release:

claude mcp add futu-opend-mcp -- uvx --from git+https://github.com/ER-EPR/futu-opend-mcp futu-opend-mcp

Open WebUI via mcpo (HTTP)

uvx mcpo --port 8000 -- futu-opend-mcp
# OpenAPI at http://localhost:8000, docs at /docs

MCP JSON config

Add to ~/.claude/settings.json, .mcp.json, or Claude Desktop config:

Remote OpenD (with encryption):

{
  "mcpServers": {
    "futu-opend": {
      "command": "uvx",
      "args": ["futu-opend-mcp"],
      "env": {
        "FUTU_OPEND_HOST": "your-opend-host",
        "FUTU_OPEND_PORT": "11111",
        "FUTU_OPEND_ENCRYPT": "true",
        "FUTU_OPEND_RSA_KEY": "-----BEGIN RSA PRIVATE KEY-----\\nMIIC...\\n-----END RSA PRIVATE KEY-----"
      }
    }
  }
}

Local OpenD (no encryption):

{
  "mcpServers": {
    "futu-opend": {
      "command": "uvx",
      "args": ["futu-opend-mcp"],
      "env": {
        "FUTU_OPEND_ENCRYPT": "false"
      }
    }
  }
}

Extract the RSA key for the env var:

docker exec futu-opend cat /rsa/rsa_private_pkcs1.pem | awk '{printf "%s\\n", $0}'

Configuration (env vars)

Var Default Purpose
FUTU_OPEND_HOST 127.0.0.1 OpenD host
FUTU_OPEND_PORT 11111 OpenD port
FUTU_OPEND_RSA_KEY - inline PEM of the shared RSA private key
FUTU_OPEND_RSA_KEY_FILE - path to the PEM file (alternative to above)
FUTU_OPEND_ENCRYPT true proto encryption; false for local 127.0.0.1 OpenD
FUTU_OPEND_LOG_LEVEL INFO logging level

OpenD and the SDK share one RSA private key (PKCS#1 1024-bit). Get it from a dockerized OpenD with: docker compose logs opend | grep -A20 'NEW RSA PRIVATE KEY'.

Tools

~50 read-only tools across: price/quote, search, screening, financials, research/valuation, corporate actions, shareholders, profile, capital flow, short interest, options, option underlying IV/HV, warrants/futures, plates, industrial chains, institutions, macro, dividends, IPO, and diagnostics. See docs/superpowers/specs/2026-07-10-futu-opend-mcp-design.md.

Development

pip install -e ".[dev]"
pytest -q -m "not integration"   # unit tests (no OpenD needed)
ruff check .

Live-OpenD integration tests are marked integration and skip themselves when OpenD is unreachable. Re-vendor the official skill pack with ./scripts/sync_skill.sh.

Attribution

Wraps the official Futu futuapi skill pack (vendored under src/futu_opend_mcp/_skill/futuapi/, unmodified). Legal terms in that folder apply.

License

MIT.

Metadata

Release files for futu-opend-mcp 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for futu-opend-mcp 0.1.4
File Size Uploaded
futu_opend_mcp-0.1.4.tar.gz 245.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for futu-opend-mcp 0.1.4
File Interpreter ABI Platform
futu_opend_mcp-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 660.1 kB

Release files / futu_opend_mcp-0.1.4.tar.gz

Download URL futu_opend_mcp-0.1.4.tar.gz
Size 245.8 kB
Tags Source
SHA-256 checksum
How to use checksums
c94775408e8336c3f5331d0d31aa0b6398e0feecd8b5d657a040a234f9224083
BLAKE2b-256 checksum
How to use checksums
f8c5a34b34d46eebedfacf9794022e6d9074da5f0b588f6540c2fb3b72c9532a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.

Transparency log

Release files / futu_opend_mcp-0.1.4-py3-none-any.whl

Download URL futu_opend_mcp-0.1.4-py3-none-any.whl
Size 414.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5251ff78cbac31a909809bea651fd551b0b08d78aae0b90ec039b21e47bc063f
BLAKE2b-256 checksum
How to use checksums
356b7711e52acf3fc0696379ed0240b4d3f24ea9ad6adbb56974b7cba0dd1aea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page