Skip to content

MCP Server

If your AI tool supports MCP (Model Context Protocol), you can use the official FinMind MCP server finmind-mcp instead — the tool calls it automatically and fetches real data, with no skill file to download. It is best suited to multi-turn, agentic queries and analysis.

Other connection methods

  • Web ChatGPT / Claude: use llms.txt — no install.
  • CLI tools that prefer a command file: use Agent Skill.

Installation

First register at FinMind to get a token, and install uv.

Claude Code (one-click): first export FINMIND_TOKEN=your_token_here, then run inside Claude Code:

/plugin marketplace add FinMind/FinMind-MCP
/plugin install finmind-mcp@finmind-official

After install, run /reload-plugins to connect and /mcp to verify. (The plugin reads ${FINMIND_TOKEN} from the environment, so export it before launching Claude Code.)

Other tools (Claude Desktop / Cursor / Windsurf / Gemini CLI): add this to the tool's MCP config file:

{
  "mcpServers": {
    "finmind": {
      "command": "uvx",
      "args": ["finmind-mcp"],
      "env": { "FINMIND_TOKEN": "your_token_here" }
    }
  }
}

Codex CLI uses a different config format ([mcp_servers] in ~/.codex/config.toml), or a one-liner: codex mcp add finmind --env FINMIND_TOKEN=... -- uvx finmind-mcp.

Windows users

The commands above use macOS / Linux syntax. On Windows, use PowerShell instead:

  • Install uv: winget install --id astral-sh.uv -e (close and reopen PowerShell afterwards so PATH takes effect), then verify with uvx finmind-mcp --help.
  • Set the token: $env:FINMIND_TOKEN = "your_token_here" (current window only) or setx FINMIND_TOKEN "your_token_here" (persistent; restart apps to pick it up) — or simply put it in the config file's env block above, which is the most reliable option.
  • If your tool (e.g. Claude Desktop) reports the command not found or fails to connect: GUI apps see a different PATH than your terminal. Run where.exe uvx to find the full path (usually C:\Users\<name>\.local\bin\uvx.exe) and use it as command in the config; escape backslashes as \\ in JSON.

For the full walkthrough (pipx route, per-host Windows config paths, troubleshooting), see the Windows installation guide.

For per-host config file locations, the claude mcp add / gemini mcp add / codex mcp add one-liners, and verification steps, see the FinMind-MCP install guides.

Examples

MCP is called automatically by the tool, so just ask in natural language — no /finmind prefix needed. It is best for follow-up questions and cross-dataset agentic analysis.

Ask Directly

How have TSMC's stock prices trended over the past month?

Expected result: the tool automatically calls taiwan_stock_daily, returns TSMC (2330) daily prices for the past month, and summarizes the trend.

TSMC stock prices for the past month

Multi-Turn Follow-Up

What were 2330's institutional net buy/sell over the past week? Are foreign investors net buyers or sellers?
Then compare it with 2317 over the same period.

Expected result: it first returns TSMC institutional net buy/sell and reads the foreign-investor direction, then continues in the same conversation to query Hon Hai and compare — no need to re-enter the conditions.

Cross-Dataset Analysis

Analyze TSMC's stock return over the past year, compare it against monthly revenue growth over the same period, and give me a conclusion.

Expected result: the tool fetches price and monthly-revenue data separately, computes the return and YoY revenue growth, and synthesizes a written conclusion.

Conditional Screening

Which 5 stocks had the highest institutional net-buy value today?

Expected result: the tool queries today's institutional trading data, sorts it, and returns the top 5 stocks by net-buy value.

Data field caveats

The following are common field-definition differences to keep in mind when an AI agent interprets query results (Taiwan stock prices, futures ticks). They are not data errors:

Emerging stocks: open is the previous-day average price, and may fall outside the day's high/low (not a data error)

Emerging-board stocks trade by negotiation and have no opening price. For emerging stocks this table therefore fills open with the previous-day average price, not an opening price; max / min / close are still the day's high / low / last traded price and are correct.

As a result, an emerging stock's open can sit above max or below min on volatile days. This is a field-definition difference, not corrupt data. For candlestick charts, use max / min / close, or treat open as the previous-day average.

Example: 6515 穎崴 on 2020-03-19 (emerging at the time) → open=218.06, max=200, min=170, close=174.9; 218.06 is exactly the previous-day average that day. The stock later moved to TWSE, after which its data is normal.

Futures ticks (TaiwanFuturesTick): how volume is counted

Tick volume is counted on a double-sided basis: each matched trade records both the buy side and the sell side once. As a result, the summed tick volume is about the (single-side) volume in the daily data TaiwanFuturesDaily; for spread / combination orders, which contain two legs, the tick volume is about the daily volume. Convert accordingly when reconciling tick volume against daily volume.

Per-contract-month reconciliation: for a given contract month (e.g. 202606) within the same trading session,

sum of volume of outright rows (contract_date = 202606) + sum of volume of spread rows containing that month (e.g. 202606/202607) ÷ 2 = 2 × TaiwanFuturesDaily volume of that month − 2 × negotiated block-trade lots of that month

  • The volume of a spread row is exactly 4× the volume of the corresponding spread contract (contract_date with two months) in TaiwanFuturesDaily. Each spread lot counts toward the daily volume of both legs, so divide spread volume by 2 when attributing it to a single month; do not add it in full.
  • Negotiated block trades are not included in tick data, but are included in daily volume. They occur mostly as rollovers ahead of settlement (equal lots in the near and next months) and are the main reason tick volume falls noticeably short of 2× daily volume around settlement week; this is not missing tick data. Details are published on the TAIFEX website under "Market Data > Daily Market Report > Block Trade > Negotiation": trades in the regular trading session count toward the regular session (position), and after-hours trades count toward that trading day's after-hours session (after_market).
Futures ticks: trading-day attribution of after-hours ticks

The after-hours (night) session follows the TAIFEX rule of being attributed to the next business day. The after-hours session for trading day D is the segment running from 15:00 on the previous business day until 05:00 on day D. Therefore, within a tick file:

  • 00:00–05:00 ticks belong to the after-hours (after_market) session of trading day D in TaiwanFuturesDaily.
  • 08:45–13:45 ticks belong to the regular session (position) of trading day D.
  • 15:00–24:00 ticks belong to the after-hours session of the next trading day.