xby-vnstock
其他 活跃维护

xby-vnstock

xby-skill/xby-vnstock

非官方MCP服务器,可对接调用获取越南股市实时及历史股票价格、公司财务数据、市场统计、基金信息等多类数据,开箱即用无需额外配置。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
TypeScript
主要语言
MIT
开源协议
11.1 MB
仓库大小
22 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:xby-skill/xby-vnstock
git clone https://github.com/xby-skill/xby-vnstock.git
git clone git@github.com:xby-skill/xby-vnstock.git
README.md master

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 密钥。