Skip to main content
Glama
twolven

OptionsFlow MCP Server

by twolven

OptionsFlow MCP

A typed FastMCP server that analyzes option strategies from Yahoo Finance data. It supports local stdio and containerized Streamable HTTP transports.

Tool

analyze_basic_strategies(symbol, strategy, expiration_date, delta_target=0.3, width_pct=0.05) preserves the original public tool name, required arguments, defaults, and strategy values: ccs, pcs, csp, and cc. Prices and payoff values distinguish per-share amounts from the standard 100-share contract multiplier. Results include breakeven, maximum profit/loss, return on capital, probability evaluated at the actual breakeven, position Greeks, provider/as-of metadata, warnings, and rejection reasons.

uv sync --locked
uv run python optionsflow.py

The server uses stdio and writes no protocol-unrelated content to stdout. Black-Scholes values are theoretical European-model estimates; dividends and American-style early assignment may make them differ materially from realized outcomes. Yahoo Finance is an unofficial personal-use source and may be delayed, incomplete, rate-limited, or structurally changed. Nothing returned is investment advice or guaranteed real-time data.

Related MCP server: MCP Yahoo Finance

Docker / Streamable HTTP

The container runs as an unprivileged user, installs the locked production dependencies, and serves MCP at http://127.0.0.1:8000/mcp. Start it with:

docker compose up --build -d
Invoke-RestMethod http://127.0.0.1:8000/health

Connect a Streamable HTTP-capable MCP client to http://127.0.0.1:8000/mcp. To avoid a port collision when running multiple servers, set MCP_HOST_PORT before starting Compose, for example $env:MCP_HOST_PORT=8001. Stop and remove the container with docker compose down.

The Compose mapping intentionally binds to localhost. The endpoint has no authentication or TLS and must not be exposed to an untrusted network without a properly configured reverse proxy and access control.

Binding to loopback alone does not make the endpoint private: a browser can still reach it through DNS rebinding, so the server validates Host and Origin headers before a request reaches an MCP session. Requests carrying a foreign Host are answered with 421 Misdirected Request and those carrying a foreign Origin with 403 Forbidden, while same-origin loopback traffic and non-browser clients that send no Origin are unaffected.

Variable

Default

Purpose

MCP_TRANSPORT

stdio

stdio, http, or streamable-http.

MCP_HOST

127.0.0.1

Interface the HTTP server binds.

MCP_PORT

8000

Port inside the container.

MCP_PATH

/mcp

Streamable HTTP endpoint path.

MCP_HOST_PORT

8000

Host port Compose publishes on 127.0.0.1.

MCP_HOST_ORIGIN_PROTECTION

true

true, auto, or false. Disable only behind a proxy that performs the same validation.

MCP_ALLOWED_HOSTS

unset

Comma-separated extra hostnames permitted in Host.

MCP_ALLOWED_ORIGINS

unset

Comma-separated extra browser origins permitted in Origin.

Put the reverse-proxy hostname in MCP_ALLOWED_HOSTS when fronting the container, otherwise the guard rejects the proxied Host. Running uv run python optionsflow.py remains the stdio-compatible default outside Docker.

Run validation with uv lock --check, uv run ruff check ., uv run mypy ., uv run pytest, uv build, and uv run python scripts/verify_wheel.py. CI also builds the container and performs health plus MCP tool-discovery checks over Streamable HTTP. Domain/provider branch coverage is gated at 90%. Set YFINANCE_LIVE=1 to opt into non-price-asserting live smoke tests.

Available Tools

1 tool
analyze_basic_strategiesB

Analyze one legacy options strategy using executable quotes and European Black-Scholes estimates.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesYahoo Finance ticker symbol
strategyYesOptions strategy: call credit spread, put credit spread, cash-secured put, or covered call
width_pctNoTarget spread width as a fraction of the short strike
delta_targetNoAbsolute target delta for CSP/CC selection
expiration_dateYesExpiration date in YYYY-MM-DD format

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
successYes
providerYes
warningsYes
timestampYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It does add useful context by specifying that the analysis uses executable quotes and European Black-Scholes estimates, implying a read-only estimation nature. However, it does not disclose limitations, what 'legacy' means, or any other behavioral traits such as data-source assumptions or scope constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly written sentence that communicates the core action and method without filler. It is front-loaded with the main purpose and wastes no words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The input schema and output schema cover parameter details and return structure, so the description does not need to explain those. However, lack of usage guidance and limited behavioral disclosure leave the description only minimally complete for an agent deciding when and how to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters with descriptions, so the baseline is 3. The description does not add parameter-level meaning beyond the schema; it only frames the overall pricing/analysis methodology. No compensation is needed, but no extra value is provided either.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Analyze') and a specific resource ('one legacy options strategy'), and adds method context ('executable quotes and European Black-Scholes estimates'). However, 'legacy' is not explained, and with no sibling tools listed there is no explicit differentiation from alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives, nor any exclusions or prerequisites. The description only implies that the tool is for analyzing an options strategy, but it does not state conditions or compare to other possible approaches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev2.0.0
    • First observedanalyze_basic_strategies

TDQS

B3.4/5.0
Disambiguation5/5

Only one tool exists, so there is no possibility of confusing it with others. The tool's purpose is clearly articulated.

Naming Consistency5/5

The single tool name 'analyze_basic_strategies' follows a clear verb_noun pattern and is syntactically consistent. There are no other names to create inconsistency.

Tool Count3/5

One tool feels very thin for a server named 'OptionsFlow', which implies a broader range of options-related functionality. However, if the intended scope is strictly basic strategy analysis, the single tool is borderline acceptable.

Completeness2/5

The server only covers basic strategy analysis, leaving gaps for advanced strategies, other analytical features, or workflow operations. Agents needing additional options functionality will hit dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    A Model Context Protocol server providing real-time stock data and options analysis through Yahoo Finance, enabling LLMs to access market data, analyze stocks, and evaluate options strategies.
    3
    25
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    A Model Context Protocol server that enables interaction with Yahoo Finance to retrieve stock pricing, company information, and historical financial data through natural language queries.
    10
    29
    MIT
  • A
    license
    C
    quality
    Not graded
    maintenance
    A Model Context Protocol server that provides tools for interacting with Yahoo Finance, allowing users to retrieve stock prices, company information, and perform financial data comparisons.
    11
    -
  • A
    license
    C
    quality
    D
    maintenance
    A Model Context Protocol server providing comprehensive financial data from Yahoo Finance, allowing users to retrieve detailed stock information, financial statements, options data, and market news.
    34
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/twolven/mcp-optionsflow'

If you have feedback or need assistance with the MCP directory API, please join our Discord server