asian-etf-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@asian-etf-mcpshow me the top performing industries in the HK market"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
asian-etf-mcp
An MCP server exposing the Asian ETF Tracker data (5 markets: HK / A-Share / Taiwan / South Korea / US) as tools an LLM agent (or Claude Code/Desktop) can call.
This is the first of several per-project MCP servers for the IvyTrader platform. It establishes the shared interface convention the other MCPs (rays, ivytrader) follow.
Architecture (two layers)
server.py ← the "menu": thin MCP wrapper, no data logic
│ calls
data_access.py ← the "kitchen": Streamlit-free, reads CSV/JSON, computes returns
│ reads (read-only)
Asian_ETF_Tracker/new/{data,data_ashare,...}/{industry}/{code}.csvdata_access.py has no MCP and no Streamlit dependency — it returns plain
Python objects and can be imported directly by anything (tests, ML, a LangGraph
agent). server.py only adds the MCP protocol + tool descriptions on top.
Related MCP server: GroundAPI
Tools (the convention)
tool | params | returns |
| — | markets → industries → ETFs (discovery; call first) |
| market, industry, start?, end? | each ETF's return vs benchmark |
| market, end_date? | per-industry 5d/21d/63d/YTD return, abs + relative |
| market, start?, end? | industries ranked by return |
| code, market, start?, end? | raw daily OHLCV bars |
Conventions (all MCPs in this project follow these):
names:
get_xxx_yyy(snake_case)params:
market('hk'/'cn'/'tw'/'sk'/'us' or full name),code,start/end(ISO),daysevery return is
{"data": ..., "source": {"project", "files", "as_of"}}— numbers are computed in code, and each result carries its source files for citation.
Setup
python3.13 -m venv .venv # needs Python 3.10+
./.venv/bin/pip install -r requirements.txtData freshness (where the CSVs come from)
The live data lives on the deployment server (138.199.208.197:/opt/etf-tracker),
where the etf-collector timer refreshes the CSVs every weekday. To serve that
fresh data, sync_data.sh SSH-pulls the server's configs + CSVs into
./server_mirror/, which is the default data root.
./sync_data.sh # pull latest from the server into server_mirror/Schedule it so the MCP stays fresh (every weekday 09:00):
0 9 * * 1-5 /Users/aa/Desktop/new/asian-etf-mcp/sync_data.shEvery tool result carries source.as_of so the agent always knows how fresh the
data is. Override the data root with ASIAN_ETF_ROOT=/some/other/path if needed.
Test the data layer (no MCP needed)
./.venv/bin/python test_data_access.pyRegister with Claude Code
claude mcp add asian-etf -- /Users/aa/Desktop/new/asian-etf-mcp/.venv/bin/python \
/Users/aa/Desktop/new/asian-etf-mcp/src/server.pyThen ask Claude things like "用 asian-etf 看看港股哪个行业动量最强" and it will
call get_industry_momentum.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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