Skip to main content
Glama
ivyyy0601

asian-etf-mcp

by ivyyy0601

asian-etf-mcp

An MCP server that exposes thematic ETF data across 5 Asian markets + the US (Hong Kong, China A-Share, Taiwan, South Korea, US) as tools an LLM agent — or Claude Code / Claude Desktop — can call.

It fetches public OHLCV data from Yahoo Finance, computes industry returns / momentum / rankings, and serves them through a small set of well-described tools. Every result carries its source files and as_of date, so answers built on it are auditable.

Tools

tool

args

returns

list_markets

every market → industries → ETFs (call first to discover)

get_etf_performance

market, industry, start?, end?

each ETF's total return vs the benchmark

get_industry_momentum

market, end_date?

per-industry 5d / 21d / 63d / YTD return, absolute + relative

get_industry_ranking

market, start?, end?

industries ranked by return

get_etf_ohlcv

code, market, start?, end?

raw daily OHLCV bars

market accepts hk / cn / tw / sk / us (or full names). Dates are ISO strings like 2025-06-01.

Related MCP server: smart-financial-mcp

Quick start

git clone https://github.com/ivyyy0601/etf-mcp.git
cd etf-mcp                       # (or the asian-etf-mcp directory)
python3.10+ -m venv .venv
./.venv/bin/pip install -r requirements.txt

# Build the data cache once (fetches ~55 symbols from Yahoo Finance, ~2-3 min)
./.venv/bin/python build_cache.py

That's it — the server is self-contained. The market/industry/ETF definitions ship in configs/, and the data comes from public Yahoo Finance, so you don't need any account, API key, or access to anyone's server.

Use with Claude Code

claude mcp add asian-etf -- /abs/path/to/.venv/bin/python /abs/path/to/src/server.py

Then ask, e.g. “use asian-etf to show which US sector has the strongest momentum.”

How it works

Two layers, kept separate on purpose:

src/server.py        the "menu": thin FastMCP wrapper, one @mcp.tool() per function
   │ calls
src/data_access.py   the "kitchen": reads CSVs, computes returns/momentum/rankings

data_access.py has no MCP dependency — it returns plain Python objects and can be imported by anything (tests, a notebook, a LangGraph agent). server.py only adds the protocol + tool descriptions.

Caching (fast reads). build_cache.py precomputes every standard view into cache.json once. Default-parameter tool calls are served from that cache (instant); only custom date ranges are computed on the fly.

Refresh-on-use (always current, zero babysitting). When a tool is called and the cache is older than the latest trading day, the server rebuilds it first (fetches the latest data), then answers. So you never have to run a cron or open anything — it self-maintains.

Configuration

env var

default

meaning

ASIAN_ETF_ROOT

./data

where OHLCV CSVs are stored (generated)

ASIAN_ETF_CONFIG_DIR

./configs

market/industry/ETF definitions (shipped)

To add a market or ETF, edit the JSON files in configs/ — no code changes.

Keeping it fresh

  • Anyone: nothing to do — refresh-on-use fetches the latest from Yahoo Finance when needed. Or run python build_cache.py whenever you want.

  • Maintainer fast-path (optional): if you run the companion data collector on a server, sync_data.sh can pull its daily CSVs and build_cache.py --no-live recomputes from them in seconds. Requires SSH access to that server; everyone else simply uses the live Yahoo Finance path.

Project layout

src/server.py        MCP server (5 tools)
src/data_access.py   Streamlit-free data + cache layer
build_cache.py       refresh job: fetch + precompute → cache.json
configs/             market definitions (committed)
sync_data.sh         maintainer fast-path (optional)
test_data_access.py  smoke test for the data layer (no MCP needed)
F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Real-time data API for AI Agents. 10 MCP tools covering A-share stock quotes, market overview, fund data, web search, news, weather, logistics tracking, and IP geolocation.
    Last updated
    10
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    Provides AI assistants with real-time and historical Chinese stock, ETF, index, and futures data via Tushare Pro API, enabling natural language queries for financial analysis and market monitoring.
    Last updated
    5
    MIT
  • A
    license
    -
    quality
    B
    maintenance
    Provides 11 MCP tools for querying A-share market data, financial reports, stock screening, hot topics, self-selected stocks, and LOF arbitrage using natural language, powered by East Money / Miaoxiang APIs.
    Last updated
    MIT

View all related MCP servers

Related MCP Connectors

  • Read-only China A-share data for AI agents: market, limit-up, capital flow and disclosures.

  • AI agent access to Asian crypto markets. Korean exchange routing and x402 paid APIs.

  • Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.

View all MCP Connectors

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/ivyyy0601/etf-mcp'

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