openfolio-ro-mcp
v0.1.5
Published
OpenFolio read-only MCP: stdio (npx) or import createServer for HTTP. Talks to GET /api/external/ro.
Maintainers
Readme
openfolio-ro-mcp
Read-only MCP for OpenFolio. It talks to https://codytang.cn/api/external/ro — you do not clone the app.
Need Node 20+ and an API key. Put the key in OPENFOLIO_RO_KEY.
npx -y openfolio-ro-mcpIf your npm registry is a mirror (e.g. Tencent), point npx at the public registry:
npm_config_registry=https://registry.npmjs.org/
Tools: ro_catalog (what exists), ro_holdings (broker positions), ro_grid (%-grids), ro_grid_sweeps (portfolio 30-day param sweep), ro_logs (server logs), ro_mrmc (watchlist + stored alerts). No orders. No live quote scan.
Cursor / Claude / CodeBuddy
{
"mcpServers": {
"openfolio-ro": {
"command": "npx",
"args": ["-y", "openfolio-ro-mcp"],
"env": {
"OPENFOLIO_RO_KEY": "<key>",
"OPENFOLIO_ORIGIN": "https://codytang.cn",
"npm_config_registry": "https://registry.npmjs.org/",
"NPM_CONFIG_PREFIX": " "
}
}
}
}NPM_CONFIG_PREFIX (a single space) is a Cursor ENOENT workaround under Cursor.app/.../resources/lib. Omit it if npx already works.
Codex
[mcp_servers.openfolio_ro]
command = "npx"
args = ["-y", "openfolio-ro-mcp"]
env = { OPENFOLIO_RO_KEY = "<key>", OPENFOLIO_ORIGIN = "https://codytang.cn", npm_config_registry = "https://registry.npmjs.org/" }OPENFOLIO_ORIGIN 默认就是 https://codytang.cn,可省略;只有打别的主机时才改。
Sweeps
ro_grid_sweeps is the 组合扫参 table: best 30-day trigger/callback, PnL, still-in-portfolio flag. Token needs grid. Live positions stay on ro_grid.
Logs
ro_logs requires module or search. Default 50 rows, max 100.
MRMC
ro_mrmc returns the watchlist and stored DXDX/DBJGXC alerts. OpenFolio scans the pool every 10 minutes during US regular + extended hours and writes mrmc_alerts (weekly TF skipped). There is no live compute. .vix → .VIX.US. Token needs mrmc. Codex should poll this and notify on new rows.
