China mutual fund & market data toolkit — realtime estimates, NAV history, sector quotes, and news aggregation
Project description
akfund-mcp
中国公募基金 & 市场行情 MCP 工具,支持接入 Claude、Cursor 等 AI 客户端。
接入 AI 客户端
需要先安装 uv。
在对应客户端的配置文件中添加以下内容,然后重启客户端:
{
"mcpServers": {
"akfund": {
"command": "uvx",
"args": ["akfund-mcp"]
}
}
}
| 客户端 | 配置文件路径 |
|---|---|
| Claude 桌面版(macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude 桌面版(Windows) | %APPDATA%\Claude\claude_desktop_config.json |
| Cursor | 项目根目录 .cursor/mcp.json |
| Claude Code | ~/.claude/settings.json 或 ~/.claude.json |
使用方式
akfund-mcp 只负责数据抓取,本身不包含任何投资逻辑。你需要在项目目录下创建一个规则文件,告诉 AI 你的持仓和决策偏好,然后每天对 AI 说一句话,它会自动拉取数据并给出操作建议。
第一步:创建规则文件
在你的工作目录下新建一个 Markdown 文件(例如 基金助手.md),按以下模板填入你的信息:
# 基金每日决策助手
## 持仓
| 基金代码 | 基金名称 | 持有份额 | 当前市值 | 仓位占比 |
|---|---|---:|---:|---:|
| XXXXXX | 基金名称A | 1000.00 | 0.00 | 0.00% |
| XXXXXX | 基金名称B | 2000.00 | 0.00 | 0.00% |
## 收益追踪基准
- 基准日:YYYY-MM-DD,基准市值:XXXXX.XX
- 收益 = 当前总市值 - 基准市值 - 追踪期累计净买入
- 收益率 = 收益 ÷ (基准市值 + 追踪期累计净买入)
## 决策偏好
(在这里写你的操作风格,例如:偏保守/偏激进、止盈止损规则、仓位上限等)
## 执行流程
每天说"按流程跑今天的基金决策"时:
1. 调用 get_trading_status() 判断今天是否交易日
2. 并发调用以下工具采集数据:
- get_portfolio_brief() 一次获取持仓市值/技术指标/盘中估值/重叠预警
- calc_after_fee_return() 计算费后真实收益(fees_paid 默认 0)
- get_daily_brief() 获取市场行情和新闻
3. 综合以上数据给出操作建议
4. 对每笔操作建议调用 run_trade_checklist_auto() 做免悔校验:
- 自动查询 already_traded_today 和 holding_days,无需手动传入
- 买入时传入 total_position_pct(当前总仓位占比)
- 买入时传入 overlap_warnings(来自 get_portfolio_brief 的 overlap.warnings 列表)
- 买入时传入 vs_peer_3m(来自 get_portfolio_brief 的 ranks[code] 近3月 vs_peer 字段)
- verdict=block:拦截,不输出该建议
- verdict=caution:保留建议,标注警告项
- verdict=proceed:正常输出
5. 调用 scan_new_capital(amount=新增资金金额) 输出新增资金推荐;
未提供新增资金金额时默认按 1000元 执行
第二步:开始使用
文件准备好后,每天只需对 AI 说:
按流程跑今天的基金决策
工具列表
基金数据
| 工具 | 参数 | 说明 |
|---|---|---|
search_fund |
name, limit=10 |
按名称或关键词搜索基金,返回代码和基本信息 |
get_realtime_estimate |
code |
单只基金盘中估值和涨跌幅 |
get_multi_realtime_estimates |
codes |
多只基金盘中估值(并发) |
get_fund_metrics |
code, days=180 |
技术指标(涨跌幅/回撤/高低位/连涨跌) |
get_multi_fund_metrics |
codes, days=180 |
多只基金技术指标(并发) |
get_nav_history |
code, days=30 |
历史净值列表 |
get_fund_info |
code |
基金经理、资产规模、管理费率、成立日期 |
get_multi_fund_info |
codes |
多只基金基本信息(并发) |
get_portfolio_summary |
holdings, baseline_value, cumulative_net_inflow=0 |
持仓市值、仓位占比、追踪期收益(并发拉取最新净值) |
calc_after_fee_return |
holdings, baseline_value, cumulative_net_inflow=0, fees_paid=0, redemption_fee_pct=0 |
费后真实收益:将申购费计入成本基础,并展示假设赎回后净收益率 |
get_fund_rank |
code |
同类排名、同类平均涨幅、四分位评级(今年来/近1周/近1月/近3月/近6月/近1年等各周期) |
get_multi_fund_rank |
codes |
多只基金同类对比数据(并发) |
市场行情
| 工具 | 参数 | 说明 |
|---|---|---|
get_market_quotes |
— | A股、美股、黄金、汇率行情(批量) |
get_sector_quotes |
sectors=[...] |
申万行业板块涨跌幅(含近5日涨跌幅 ret_5d),不传返回全部 |
get_sector_flow |
sectors=[...] |
申万行业板块今日主力净流入/流出(元 + 占比%),不传返回全部 |
get_trading_status |
date_str=None |
A股交易日状态:是否交易日、是否节前、下一交易日 |
新闻与宏观
| 工具 | 参数 | 说明 |
|---|---|---|
get_eastmoney_news |
pages=4, keywords=[...] |
东方财富快讯,按关键词过滤(分页并发) |
get_jin10_news |
keywords=[...] |
金十数据快讯,按关键词过滤 |
get_domestic_media |
keywords=[...] |
国内财经媒体头条(中证、财新、证券时报、上证报,并发) |
get_official_macro |
— | 央行、统计局、证监会、外汇局(并发) |
get_overseas |
— | 美联储 RSS、世界黄金协会(并发) |
聚合工具
| 工具 | 参数 | 说明 |
|---|---|---|
get_daily_brief |
sectors=[...], keywords=[...], news_pages=8, codes=[...] |
一次并发调用获取全部每日行情数据(市场+板块+所有新闻+基金盘中估值) |
get_portfolio_brief |
holdings, baseline_value, cumulative_net_inflow=0 |
一次调用聚合持仓数据:市值收益 + 技术指标 + 盘中估值 + 持仓重叠预警 + 同类排名,替代分别调用5个工具 |
scan_new_capital |
amount=1000 |
扫描全市场板块,筛选新增资金买入候选:近5日涨幅前5且主力净流入为正的板块 → 近1月前25%+近3月前60%+非高位的基金,返回最多2只候选及建议金额 |
决策辅助
| 工具 | 参数 | 说明 |
|---|---|---|
get_fund_top_holdings |
code |
单只基金前十大持仓股(股票代码、名称、权重%) |
get_multi_fund_top_holdings |
codes |
多只基金前十大持仓股(并发) |
check_portfolio_overlap |
fund_positions, threshold_pct=3.0 |
穿透各基金前十大持仓股,计算跨基金有效暴露,对超阈值股票发出预警;ETF联接和商品基金自动跳过并在 warnings 中标注,持仓数据超过1年的基金标注"数据过期" |
run_trade_checklist |
action, code, amount, today_change_pct, position_pct, streak_dir, streak_days, is_trading_day, is_pre_holiday, already_traded_today=False, total_position_pct=None, holding_days=None, overlap_warnings=None, vs_peer_3m=None |
交易前免悔清单。买入检查:追高/追涨/单只仓位/总仓位上限/重复操作/持仓重叠/近3月跑输同类>-5%;卖出检查:情绪化杀跌/大涨止盈/重复操作/短期持仓(<30天)。返回 proceed/caution/block |
run_trade_checklist_auto |
action, code, amount, today_change_pct, position_pct, streak_dir, streak_days, is_trading_day, is_pre_holiday, total_position_pct=None, overlap_warnings=None, vs_peer_3m=None |
run_trade_checklist 的简化版:自动查询 already_traded_today 和 holding_days,每笔交易候选节省2次工具调用 |
交易记录(持久化)
数据存储在 ~/.akfund/trades.json,可通过环境变量 AKFUND_DATA_DIR 覆盖路径。
| 工具 | 参数 | 说明 |
|---|---|---|
record_trade |
code, action, amount, date_str=None, name="", note="" |
记录一笔手动买卖,返回含 id 的记录(可用 delete_trade 撤销) |
delete_trade |
trade_id |
按 id 删除误录的交易记录 |
get_trade_history |
days=90, code=None |
查询历史交易,最新在前,可按基金代码和天数过滤 |
get_today_trades |
code=None |
查询今天已记录的交易,用于自动判断 already_traded_today |
get_holding_duration |
code |
根据交易记录推算某只基金的首次买入日期和持有天数,用于传入 run_trade_checklist 的 holding_days |
get_trade_interval |
code |
查询某只基金上次买入/卖出距今各多少个交易日,用于验证加仓/减仓间隔规则 |
get_weekly_buy_budget |
weekly_limit=3000, auto_invest_codes=None |
滚动7天买入额度:已用金额、剩余额度、单笔上限(剩余×0.6),定投基金自动排除 |
get_cumulative_net_inflow |
since_date, auto_invest=None |
计算自基准日起的累计净买入;传入定投配置后自动按深交所交易日历推算定投天数并叠加,结果直接传入 get_portfolio_summary 和 calc_after_fee_return |
auto_invest 格式示例:
[{"code": "270023", "amount": 150}, {"code": "017730", "amount": 100}, {"code": "012920", "amount": 50}]
get_sector_quotes 支持的板块名称:
半导体、光伏设备、光伏主材、机器人、基础化工、软件开发、黄金、有色金属、计算机、银行、非银金融、医药生物、食品饮料、消费者服务、房地产、建筑材料、建筑装饰、电力设备、电子、通信、传媒、汽车、家用电器、纺织服饰、轻工制造、农林牧渔、钢铁、煤炭、石油石化、交通运输、公用事业、环保、国防军工、商贸零售、社会服务。
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file akfund_mcp-1.0.1.tar.gz.
File metadata
- Download URL: akfund_mcp-1.0.1.tar.gz
- Upload date:
- Size: 125.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
885b0909df0b179b8620a6e1b9d89a28131bdc8bbedc916da787e69703280d39
|
|
| MD5 |
cd2ef1a7915e0a399e7a7285ca8b716d
|
|
| BLAKE2b-256 |
4ec8593bd230c58c2163e88ce65f75801836ea97e8e40fb3b90f4a37825b1ab8
|
File details
Details for the file akfund_mcp-1.0.1-py3-none-any.whl.
File metadata
- Download URL: akfund_mcp-1.0.1-py3-none-any.whl
- Upload date:
- Size: 54.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8a4dc7990ab9d146dfae53d7772dad9d7fbc3751f82299b39bb1abb8bdeef6f
|
|
| MD5 |
38469426dbe5b92916224f18a0793319
|
|
| BLAKE2b-256 |
32478a2e225dae0f7023f87057589b243b0ab4ac43bf27fe9f62c2559b25b485
|