ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Klavis 中的 Yahoo Finance MCP Server:为 AI Agent 提供行情、财报、期权与分析师数据的金融数据工具集

Klavis 中的 Yahoo Finance MCP Server:为 AI Agent 提供行情、财报、期权与分析师数据的金融数据工具集 Klavis 中的 Yahoo Finance MCP Server为 AI Agent 提供行情、财报、期权与分析师数据的金融数据工具集【免费下载链接】klavisKlavis AI: MCP integration platforms that let AI agents use tools reliably at any scale项目地址: https://gitcode.com/GitHub_Trending/kl/klavis本文围绕 Klavis 仓库中 mcp_servers/yahoo_finance 目录下的 Yahoo Finance MCP Server 展开。它基于 Model Context ProtocolMCP与 yfinance 库构建向 AI Agent 暴露一整套面向股票市场的金融数据工具覆盖历史行情、公司信息、新闻、分红拆股、财务报表、股东信息、期权链与分析师评级。读完本文你将掌握该服务器全部 10 个工具的调用方式与参数细节、本地安装与 Docker 部署方法、Claude Desktop 集成配置以及如何用自然语言驱动 Agent 完成股票分析、市场研究与投资研究等任务。一、项目定位一个金融数据 API形态的 MCP 服务器该服务器封装了 Yahoo Finance 的数据能力通过 MCP 协议向 Claude 等 AI Agent 提供结构化的金融数据访问接口。核心特点如下数据源基于yfinance库版本要求0.2.62访问 Yahoo Finance 的股票数据协议框架基于mcp[cli]1.6.0与 FastMCPmcp.server.fastmcp构建所有工具均通过yfinance_server.tool装饰器注册数据处理依赖 pandas 完成日期解析、DataFrame 清洗与 JSON 序列化输出格式所有工具统一返回 JSON 字符串便于 LLM 直接解析消费单文件架构全部功能集中在 server.py 一个文件中参见 CLAUDE.md 的架构说明。依赖清单记录在 requirements.txtmcp[cli]1.6.0 yfinance0.2.62二、MCP 工具总览README 按业务类别将工具分为四组。结合 server.py 的实际注册代码该服务器共实现了 10 个工具README 表格列出 9 个源码中额外实现了按日期取价的get_stock_price_by_date。类别工具说明股票信息get_historical_stock_prices获取历史 OHLCV 数据可自定义时间段与间隔股票信息get_stock_price_by_date获取指定日期的股价比历史数据接口更高效可自动匹配最近交易日股票信息get_stock_info获取综合股票数据包括价格、指标与公司详情股票信息get_yahoo_finance_news获取股票最新新闻文章股票信息get_stock_actions获取股票分红与拆股历史财务报表get_financial_statement获取利润表、资产负债表或现金流量表年度/季度财务报表get_holder_info获取主要股东、机构股东、共同基金或内幕交易信息期权数据get_option_expiration_dates获取可用期权到期日期期权数据get_option_chain获取指定到期日与类型看涨/看跌的期权链分析师信息get_recommendations获取分析师推荐或评级上调/下调历史三、核心工具参数详解可直接复用的调用约定以下参数说明均以 server.py 中工具函数的 docstring 与实际实现为准。3.1 get_historical_stock_prices可定制的时间段与间隔这是最常用的工具支持两种取数方式按 period 取数当未提供任何日期时生效默认1mo合法取值为1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max按 start_date / end_date 取数提供任一日期即切换到日期模式period 被忽略日期格式为YYYY-MM-DD例如2024-01-01。日期模式的边界行为如下来自源码第 153-199 行只给start_date结束日期默认取当前时间只给end_date起始日期由end_date减去 period 推算其中ytd从当年 1 月 1 日起算max回溯到1900-01-01start_date与end_date同时给出直接按区间取数。interval 参数合法取值为1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo默认1d。注意日内数据小于 1d 的间隔不能超过最近 60 天。auto_adjust 参数默认为True此时返回的 Open/High/Low/Close 均已按分红与拆股调整设为False则返回未调整的原始价格并附带Adj Close列。返回字段包括Date, Open, High, Low, Close, Volume, Dividends, Stock Splits以及可选的Adj Close。结果会先执行reset_index(namesDate)再以 ISO 日期格式序列化为 JSON 数组。3.2 get_stock_price_by_date按单日取价的轻量替代当只需要某一天的价格时比拉取整段历史数据更高效ticker股票代码如AAPLdate目标日期格式YYYY-MM-DDfind_nearest默认为True。为True时若目标日期是周末/节假日无交易数据会以目标日期前后各 7 天的数据为范围找到绝对时间差最小的交易日并返回同时在结果中附加note字段说明请求日期非交易日已返回最近交易日为False时非交易日直接返回错误提示auto_adjust默认为True控制是否返回复权价格。返回 JSON 包含ticker、请求日期、实际交易日、open/high/low/close、volume、dividends、stock_splits等字段。源码还会拒绝未来日期返回错误信息。3.3 get_financial_statement六种报表类型financial_type参数由FinancialType枚举约束server.py合法取值枚举值含义income_stmt年度利润表quarterly_income_stmt季度利润表balance_sheet年度资产负债表quarterly_balance_sheet季度资产负债表cashflow年度现金流量表quarterly_cashflow季度现金流量表实现上按每列一个日期的方式遍历 DataFrame把每个报表期组织为一个{date: YYYY-MM-DD, 指标名: 值}对象NaN 值统一转为null最终返回 JSON 数组。3.4 get_holder_info六种股东/内幕信息holder_type参数由HolderType枚举约束server.py枚举值含义major_holders主要股东institutional_holders机构股东mutualfund_holders共同基金持仓insider_transactions内幕交易记录insider_purchases内幕买入记录insider_roster_holders内幕人员名册持仓3.5 期权工具get_option_expiration_dates(ticker)直接返回company.options可用到期日数组的 JSON 字符串get_option_chain(ticker, expiration_date, option_type)option_type仅接受calls或putsexpiration_date必须是get_option_expiration_dates返回的合法日期否则返回错误提示并指引先查询可用到期日server.py。3.6 get_recommendations分析师评级与调级历史recommendation_type由RecommendationType枚举约束取值recommendations分析师推荐汇总或upgrades_downgrades评级上调/下调历史months_back默认12仅对upgrades_downgrades生效。实现上按GradeDate 当前时间 - months_back过滤按GradeDate降序排序并按Firm去重保留每家机构最新的一次评级记录server.py。四、安装、运行与 Docker 部署4.1 环境要求Python 3.11 或更高版本Dockerfile 使用python:3.11-slim基础镜像依赖mcp[cli]1.6.0与yfinance0.2.62。4.2 本地安装uv 方式原文档推荐的安装流程uv 驱动uv venv source .venv/bin/activate # Windows: .venv\Scripts\activate uv pip install -e .本仓库中直接运行服务器uv run server.py从 server.py 的__main__入口块看直接执行该脚本会基于 Starlette uvicorn 启动一个 Streamable HTTP 服务MCP 端点挂载在/mcp路径监听0.0.0.0:5000端口适合作为 HTTP 服务接入远程调用场景。CLAUDE.md 中标注的开发期验证方式为 MCP Inspector 配合uv run server.py使用。4.3 Docker 部署仓库提供了现成的 Dockerfile其构建逻辑为基于python:3.11-slim安装requirements.txt中的依赖拷贝server.py到镜像内/app并通过CMD [python, server.py]启动服务器。可据此自行构建镜像docker build -f mcp_servers/yahoo_finance/Dockerfile -t yahoo-finance-mcp .4.4 代理支持源码级细节针对部分网络环境server.py 内置了代理配置逻辑通过环境变量PROXY_USERNAME、PROXY_PASSWORD必填、PROXY_HOST默认p.webshare.io、PROXY_SCHEME默认http、PROXY_PORT构建代理 URL并写入HTTP_PROXY/HTTPS_PROXY环境变量yfinance 底层使用的 requests/urllib3 会自动遵循这些变量。五、与 Claude Desktop 集成将本服务器接入 Claude Desktop 需要在本地编辑claude_desktop_config.json可用 VS Code 打开该文件在mcpServers下新增yfinance配置项。macOS 示例配置{ mcpServers: { yfinance: { command: uv, args: [ --directory, /ABSOLUTE/PATH/TO/PARENT/FOLDER/yahoo-finance-mcp, run, server.py ] } } }Windows 示例配置{ mcpServers: { yfinance: { command: uv, args: [ --directory, C:\\ABSOLUTE\\PATH\\TO\\PARENT\\FOLDER\\yahoo-finance-mcp, run, server.py ] } } }两个平台对应的配置文件位置macOS~/Library/Application Support/Claude/claude_desktop_config.jsonWindows$env:AppData\Claude\claude_desktop_config.json注意command字段可能需要填写 uv 可执行文件的完整路径在 macOS/Linux 上用which uv、在 Windows 上用where uv查询。保存配置后重启 Claude Desktop 即可生效。六、源码架构与实现要点结合 server.py 与 CLAUDE.md可以提炼出以下实现模式统一的服务初始化通过FastMCP(yfinance, instructions...)创建服务实例instructions中完整声明了各工具的名称与职责帮助 LLM 在调用时理解工具语义股票代码校验几乎所有工具都会先访问company.isin为空即返回Company ticker {ticker} not found.避免对无效代码继续请求数据枚举约束输入FinancialType、HolderType、RecommendationType三个枚举类集中定义了合法入参非法值会得到明确的错误提示与可选值列表JSON 化输出历史数据、分红拆股、股东信息等均通过 pandas 的to_json(orientrecords, date_formatiso)序列化保证日期格式统一错误兜底每个工具都用try/except包裹网络请求逻辑异常信息会以字符串形式返回给调用方而不是让 MCP 调用直接崩溃。七、实战用例用自然语言驱动金融分析README 给出了覆盖三大场景的提示词示例以下摘录并归类可直接在 Claude 等支持 MCP 的客户端中使用。股票分析价格分析Show me the historical stock prices for AAPL over the last 6 months with daily intervals.财务健康Get the quarterly balance sheet for Microsoft.业绩指标What are the key financial metrics for Tesla from the stock info?趋势分析Compare the quarterly income statements of Amazon and Google.现金流分析Show me the annual cash flow statement for NVIDIA.市场研究新闻分析Get the latest news articles about Meta Platforms.机构活动Show me the institutional holders of Apple stock.内幕交易What are the recent insider transactions for Tesla?期权分析Get the options chain for SPY with expiration date 2024-06-21 for calls.分析师覆盖What are the analyst recommendations for Amazon over the last 3 months?投资研究多工具组合Create a comprehensive analysis of Microsofts financial health using their latest quarterly financial statements.Compare the dividend history and stock splits of Coca-Cola and PepsiCo.Analyze the institutional ownership changes in Tesla over the past year.Generate a report on the options market activity for Apple stock with expiration in 30 days.Summarize the latest analyst upgrades and downgrades in the tech sector over the last 6 months.这类组合式提示词会驱动 Agent 依次调用多个 MCP 工具并汇总结果正是该服务器作为金融数据工具集的核心价值所在。八、开发辅助与许可证CLAUDE.md 额外记录了面向开发者的工具链约定代码格式化使用 Black行长 100、import 排序使用 isort、类型检查使用 mypy严格模式、安全扫描使用 bandit开发依赖通过uv pip install -e .[dev]安装。项目采用 MIT 许可证见 LICENSE可自由使用与二次开发。需要说明的是本文所有工具、参数与配置均以当前仓库 mcp_servers/yahoo_finance 目录中的实际代码与文档为准若上游版本更新参数取值与端点行为可能发生变化请以仓库内最新源码为准。【免费下载链接】klavisKlavis AI: MCP integration platforms that let AI agents use tools reliably at any scale项目地址: https://gitcode.com/GitHub_Trending/kl/klavis创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表