Bundle
xby-vnstock
一个非官方的MCP服务器,提供访问越南股市数据的工具,包括实时和历史股票价格、公司财务数据、市场统计和基金信息等。
- Source
- xby-skill
- License
- MIT
- Updated
- Updated 4 days ago
Readme
# 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 直接安装(推荐)
```bash
# 格式: dsh plugin --profile <profile> add github:<owner>/<repo>
dsh plugin --profile web add github:xby_skill/xby-vnstock
```
### 方式二:从本地目录安装(开发模式)
```bash
# 仅用于本地开发调试
dsh plugin --profile web add /absolute/path/to/xby-vnstock
```
### 方式三:通过 cordis.patch.yml 开发调试
```bash
dsh web --profile web --patch /absolute/path/to/dsh-ocr-plugin/cordis.patch.yml
```
## 配置
### 获取 API 密钥
前往 [小笨羊官网](https://xiaobenyang.com) 注册并获取 API 密钥。
Install
dsh plugin --profile web add github:xby-skill/xby-vnstock#d980c5200b9c3cfdd537ea60f162821d1a6d29fe
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install xby-vnstock from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.