xby-vnstock
DeepSeek Harness (DSH) 的插件:越南股市数据服务
一个非官方的MCP服务器,提供访问越南股市数据的工具,包括实时和历史股票价格、公司财务数据、市场统计和基金信息等。
功能
- set_xby_apikey — 在聊天中设置 API 密钥(自动持久化,重启有效)
- list_all_icb_industries — List all ICB industries from stock market
Args:
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- list_all_companies_with_details — List all companies from stock market with details
Args:
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_company_overview — Get company overview from stock market
Args:
symbol: str
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_company_news — Get company news from stock market
Args:
symbol: str
page_size: int = 10
page: int = 0
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_company_events — Get company events from stock market
Args:
symbol: str
page_size: int = 10
page: int = 0
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_company_shareholders — Get company shareholders from stock market
Args:
symbol: str
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_company_officers — Get company officers from stock market
Args:
symbol: str
filter_by: Literal['working', "all", 'resigned'] = 'working'
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_company_subsidiaries — Get company subsidiaries from stock market
Args:
symbol: str
filter_by: Literal["all", "subsidiary"] = "all"
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_company_reports — Get company reports from stock market
Args:
symbol: str
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_company_dividends — Get company dividends from stock market
Args:
symbol: str
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_company_insider_deals — Get company insider deals from stock market
Args:
symbol: str
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_company_ratio_summary — Get company ratio summary from stock market
Args:
symbol: str
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_company_trading_stats — Get company trading stats from stock market
Args:
symbol: str
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_all_symbol_groups — Get all symbol groups from stock market
Args:
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_all_symbols_by_group — Get all symbols from stock market
Args:
group: str (group name to get symbols)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_all_symbols_by_industry — Get all symbols from stock market
Args:
industry: str = None (if None, return all symbols)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame or json
- get_all_symbols — Get all symbols from stock market
Args:
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame or json
- get_all_symbols_detailed — Get all symbols detailed from stock market
Args:
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_income_statements — Get income statements of a company from stock market
Args:
symbol: str (symbol of the company to get income statements)
period: Literal['quarter', 'year'] = 'year' (period to get income statements)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_balance_sheets — Get balance sheets of a company from stock market
Args:
symbol: str (symbol of the company to get balance sheets)
period: Literal['quarter', 'year'] = 'year' (period to get balance sheets)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_cash_flows — Get cash flows of a company from stock market
Args:
symbol: str (symbol of the company to get cash flows)
period: Literal['quarter', 'year'] = 'year' (period to get cash flows)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_finance_ratios — Get finance ratios of a company from stock market
Args:
symbol: str (symbol of the company to get finance ratios)
period: Literal['quarter', 'year'] = 'year' (period to get finance ratios)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_raw_report — Get raw report of a company from stock market
Args:
symbol: str (symbol of the company to get raw report)
period: Literal['quarter', 'year'] = 'year' (period to get raw report)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- list_all_funds — List all funds from stock market
Args:
fund_type: Literal['BALANCED', 'BOND', 'STOCK', None ] = None (if None, return funds in all types)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- search_fund — Search fund by name from stock market
Args:
keyword: str (partial match for fund name to search)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_fund_nav_report — Get nav report of a fund from stock market
Args:
symbol: str (symbol of the fund to get nav report)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_fund_top_holding — Get top holding of a fund from stock market
Args:
symbol: str (symbol of the fund to get top holding)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_fund_industry_holding — Get industry holding of a fund from stock market
Args:
symbol: str (symbol of the fund to get industry holding)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_fund_asset_holding — Get asset holding of a fund from stock market
Args:
symbol: str (symbol of the fund to get asset holding)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_gold_price — Get gold price from stock market
Args:
date: str = None (if None, return today's price. Format: YYYY-MM-DD)
source: Literal['SJC', 'BTMC'] = 'SJC' (source to get gold price)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_exchange_rate — Get exchange rate of all currency pairs from stock market
Args:
date: str = None (if None, return today's price. Format: YYYY-MM-DD)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_quote_price_with_indicators — Get quote price with indicators of a symbol from stock market.
Indicators can be specified with or without parameters:
- Simple: "rsi", "macd", "stochastic"
- With params: "rsi(window=21)", "macd(fast=12, slow=26, signal=9)"
Args:
symbol: str (symbol to get price)
indicators: list[str] (list of indicators with optional parameters)
Examples:
- ["rsi", "macd"] - use default parameters
- ["rsi(window=21)", "macd(fast=12, slow=26)"] - custom parameters
- ["stochastic(k=14, d=3)", "cci(window=20)"] - mixed
start_date: str (format: YYYY-MM-DD)
end_date: str = None (end date to get price. None means today)
interval: Literal['1m', '5m', '15m', '30m', '1H', '1D', '1W', '1M'] = '1D' (interval to get price)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame with OHLCV data and requested indicator columns
- get_quote_history_price — Get quote price history of a symbol from stock market
Args:
symbol: str (symbol to get history price)
start_date: str (format: YYYY-MM-DD)
end_date: str = None (end date to get history price. None means today)
interval: Literal['1m', '5m', '15m', '30m', '1H', '1D', '1W', '1M'] = '1D' (interval to get history price)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_quote_intraday_price — Get quote intraday price from stock market
Args:
symbol: str (symbol to get intraday price)
page_size: int = 500 (max: 100000) (number of rows to return)
page: int = 1 (page number to get intraday price from)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_quote_price_depth — Get quote price depth from stock market
Args:
symbol: str (symbol to get price depth)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
- get_price_board — Get price board from stock market
Args:
symbols: list[str] (list of symbols to get price board)
output_format: Literal['json', 'dataframe', 'toon'] = 'toon' (output format, 'toon' is optimized for AI)
Returns:
pd.DataFrame
安装
方式一:从 GitHub 直接安装(推荐)
# 格式: dsh plugin --profile <profile> add github:<owner>/<repo>
dsh plugin --profile web add github:xby_skill/xby-vnstock
方式二:从本地目录安装(开发模式)
# 仅用于本地开发调试
dsh plugin --profile web add /absolute/path/to/xby-vnstock
方式三:通过 cordis.patch.yml 开发调试
dsh web --profile web --patch /absolute/path/to/dsh-ocr-plugin/cordis.patch.yml
配置
获取 API 密钥
前往 小笨羊官网 注册并获取 API 密钥。