Skip to main content
Glama
mrgoonie

VNStock Agent MCP Server

by mrgoonie
README.md
# VNStock Agent

MCP server and CLI for Vietnamese stock market data. Integrates [vnstock](https://github.com/thinh-vu/vnstock) with AI tools via Model Context Protocol (MCP).

## Features

- **21 MCP tools** for AI assistants (Claude, GPT, etc.)
- **22 CLI commands** for terminal use
- **3 MCP transports**: stdio, SSE, Streamable HTTP
- Vietnamese stocks, forex, crypto, world indices, mutual funds
- Historical prices, financials, company info, trading data

## Quick Start

### Install

```bash
pip install vnstock-agent
```

Or from source:

```bash
git clone https://github.com/mrgoonie/vnstock-agent.git
cd vnstock-agent
pip install -e .
```

### Set API Key

```bash
export VNSTOCK_API_KEY=your_api_key_here
```

Get a free API key at [vnstocks.com/login](https://vnstocks.com/login).

## CLI Usage

```bash
# Stock history
vnstock-agent history VNM --start 2025-01-01 --end 2025-03-31

# Company overview
vnstock-agent overview FPT

# Financial statements
vnstock-agent balance-sheet VCB --period quarter
vnstock-agent income VCB --period annual
vnstock-agent cashflow VCB
vnstock-agent ratio VCB

# Market data
vnstock-agent symbols                    # All listed symbols
vnstock-agent group --group VN30         # VN30 stocks
vnstock-agent board "VNM,FPT,ACB,VCB"   # Price board
vnstock-agent industries                 # ICB industries

# Company details
vnstock-agent shareholders FPT
vnstock-agent officers FPT
vnstock-agent news FPT
vnstock-agent events FPT

# Intraday & depth
vnstock-agent intraday VNM --page-size 200

# Global markets
vnstock-agent fx EURUSD --start 2025-01-01
vnstock-agent crypto BTC --start 2025-01-01
vnstock-agent index DJI --start 2025-01-01

# Mutual funds
vnstock-agent funds

# JSON output
vnstock-agent --format json history VNM
```

## MCP Server

### stdio (for Claude Desktop, Cursor, etc.)

Add to your MCP client config:

```json
{
  "mcpServers": {
    "vnstock": {
      "command": "vnstock-mcp",
      "env": {
        "VNSTOCK_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

### SSE Transport

```bash
VNSTOCK_MCP_TRANSPORT=sse VNSTOCK_MCP_PORT=8000 vnstock-mcp
```

### Streamable HTTP Transport

```bash
VNSTOCK_MCP_TRANSPORT=http VNSTOCK_MCP_PORT=8000 vnstock-mcp
```

Or via CLI:

```bash
vnstock-agent serve --transport sse --port 8000
vnstock-agent serve --transport http --port 8000
```

## MCP Tools

| Tool | Description |
|------|-------------|
| `stock_history` | Historical OHLCV price data |
| `stock_intraday` | Today's intraday trading data |
| `stock_price_depth` | Order book / bid-ask data |
| `company_overview` | Company overview info |
| `company_shareholders` | Major shareholders |
| `company_officers` | Management team |
| `company_news` | Company news |
| `company_events` | Dividends, AGM, etc. |
| `financial_balance_sheet` | Balance sheet |
| `financial_income_statement` | Income statement |
| `financial_cash_flow` | Cash flow statement |
| `financial_ratio` | P/E, P/B, ROE, ROA, etc. |
| `listing_all_symbols` | All listed symbols |
| `listing_symbols_by_group` | VN30, HNX30, etc. |
| `listing_symbols_by_exchange` | By exchange (HOSE, HNX, UPCOM) |
| `listing_industries` | ICB industry classification |
| `trading_price_board` | Real-time price board |
| `fx_history` | Forex historical data |
| `crypto_history` | Cryptocurrency data |
| `world_index_history` | World market indices |
| `fund_listing` | Mutual fund listing |

## Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `VNSTOCK_API_KEY` | (none) | VNStock API key |
| `VNSTOCK_SOURCE` | `VCI` | Default data source (VCI, KBS) |
| `VNSTOCK_MCP_TRANSPORT` | `stdio` | MCP transport (stdio, sse, http) |
| `VNSTOCK_MCP_HOST` | `0.0.0.0` | Server host |
| `VNSTOCK_MCP_PORT` | `8000` | Server port |

## Development

```bash
git clone https://github.com/mrgoonie/vnstock-agent.git
cd vnstock-agent
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

# Run tests
pytest

# Lint
ruff check src/
```

## License

MIT

TDQS

B3.3/5.0

Scored across 21 tools

Disambiguation3/5

Most tools are clearly separated by domain (company, stock, financial, listing, etc.), but the three listing tools (all_symbols, by_group, by_exchange) overlap heavily and could cause misselection. Stock history, intraday, and price board also have related purposes, though descriptions help distinguish them.

Naming Consistency4/5

All names use lowercase snake_case with a domain prefix, which is predictable. The pattern is not strictly verb_noun (some are noun_noun like 'company_events', some gerund-based like 'listing_all_symbols'), but within each domain the style is uniform and readable.

Tool Count4/5

21 tools is slightly above the typical comfortable range, but the server covers a broad domain (Vietnamese equities, forex, crypto, world indices, funds) and each tool addresses a distinct data need. The count feels justified rather than bloated.

Completeness4/5

The toolset covers the core lifecycle of market data: company fundamentals, financial statements, price history, intraday data, depth, listings, and news. It also extends to other asset classes. Minor gaps like missing specific company dividend details (subsumed by events) or quote snapshot endpoint are workarounds.

Maintenance

ActivityInactive
ResponsivenessNo issues