Skip to main content

Vietnamese Stock Market MCP Server - FastMCP 2.0

Project description

VNStock MCP Server

The unofficial MCP server that provides Vietnamese stock market financial data, allowing you to interact with your Claude Desktop using natural language processing capabilities.

Features

  • ๐Ÿš€ Dual Transport Support: Auto-detects STDIO (local) or HTTP (cloud) transport
  • โ˜๏ธ Cloud Deployment: One-click deploy to Render.com free tier
  • ๐Ÿค– LLM-Powered: Natural language processing with Anthropic Claude
  • ๐Ÿ“Š Beautiful Output: Formatted tables, charts, and data visualization
  • ๐Ÿ”ง Tool Management: Automatic tool discovery and validation
  • ๐ŸŽฏ Smart Parsing: Vietnamese stock symbol and date format support
  • โšก Error Handling: Robust error recovery and user-friendly messages

Quick Start

1. Installation

For End Users (Recommended)

# Install from PyPI and run directly
uvx vnstock-mcp@latest

For Developers

# Clone the repository
git clone https://github.com/gahoccode/vnstock-mcp.git
cd vnstock-mcp

# Install uv if you don't have it
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install dependencies
uv sync

2. Run the Server

End Users (uvx method)

# Run directly from PyPI
uvx vnstock-mcp@latest

Developers (local development)

# Run from source
uv run python src/vnstock_mcp/server.py

Usage Examples

> Show me FPT's financial statements for 2024
> What are HPG's key financial ratios?
> Get VCB exchange rates for today

Project Structure

vnstock-mcp/
โ”œโ”€โ”€ pyproject.toml          # Project configuration and dependencies
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ vnstock_mcp/        # Python package
โ”‚       โ”œโ”€โ”€ __init__.py     # Package initialization
โ”‚       โ”œโ”€โ”€ server.py       # MCP server (API Layer)
โ”‚       โ”œโ”€โ”€ config.py       # Configuration constants
โ”‚       โ”œโ”€โ”€ exceptions.py   # Custom exceptions
โ”‚       โ”œโ”€โ”€ core/           # Service Layer (business logic)
โ”‚       โ”‚   โ”œโ”€โ”€ base.py     # BaseService with async patterns
โ”‚       โ”‚   โ”œโ”€โ”€ financial.py
โ”‚       โ”‚   โ”œโ”€โ”€ company.py
โ”‚       โ”‚   โ””โ”€โ”€ fund.py
โ”‚       โ”œโ”€โ”€ models/         # Model Layer (result types)
โ”‚       โ”‚   โ”œโ”€โ”€ base.py     # ServiceResult, DataFrameResult
โ”‚       โ”‚   โ”œโ”€โ”€ financial.py
โ”‚       โ”‚   โ”œโ”€โ”€ company.py
โ”‚       โ”‚   โ””โ”€โ”€ fund.py
โ”‚       โ””โ”€โ”€ utils/          # Utility functions
โ”‚           โ””โ”€โ”€ data_transform.py
โ”œโ”€โ”€ docs/                   # Architecture documentation
โ”‚   โ”œโ”€โ”€ ARCHITECTURE.md     # System architecture overview
โ”‚   โ””โ”€โ”€ adr/                # Architecture Decision Records
โ”‚       โ”œโ”€โ”€ 001-layered-architecture.md
โ”‚       โ”œโ”€โ”€ 002-result-objects.md
โ”‚       โ””โ”€โ”€ 003-lazy-imports.md
โ”œโ”€โ”€ tests/                  # Test suite
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ””โ”€โ”€ conftest.py         # Pytest configuration
โ”œโ”€โ”€ dist/                   # Built packages
โ”œโ”€โ”€ sample questions/       # Usage examples
โ”œโ”€โ”€ uv.lock                 # Dependency lock file
โ””โ”€โ”€ README.md               # This file

For detailed architecture documentation, see docs/ARCHITECTURE.md.

uv vs uvx: Which to Use?

uvx (Recommended for Users)

  • Purpose: Run Python packages directly from PyPI
  • Use case: End users who just want to use the MCP server
  • Command: uvx vnstock-mcp@latest
  • Benefits:
    • No local setup required
    • Automatic dependency management
    • Isolated execution environment

uv (Recommended for Developers)

  • Purpose: Python project and package management
  • Use case: Developers who want to modify/contribute to the code
  • Command: uv run python src/vnstock_mcp/server.py
  • Benefits:
    • Full source code access
    • Development workflow
    • Ability to make changes

Claude Desktop Integration

To use this MCP server with Claude Desktop, add the following configuration to your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

Method 1: Using uvx (if PATH configured)

{
  "mcpServers": {
    "vnstock-mcp": {
      "command": "uvx",
      "args": ["vnstock-mcp"]
    }
  }
}

Method 2: Using uvx (if PATH NOT configured)

{
  "mcpServers": {
    "vnstock-mcp": {
      "command": "/Users/YOUR_USERNAME/.local/bin/uvx",
      "args": ["vnstock-mcp"]
    }
  }
}

Method 3: Development from source (script path)

{
  "mcpServers": {
    "vnstock-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/USERNAME/PATH_TO/src/vnstock_mcp",
        "run",
        "server.py"
      ]
    }
  }
}

Method 4: Development from source (Python module)

{
  "mcpServers": {
    "vnstock-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/USERNAME/PATH_TO/vnstock-mcp",
        "run",
        "python",
        "-m",
        "vnstock_mcp.server"
      ]
    }
  }
}

Note:

  • Replace YOUR_USERNAME with your actual username in Method 2
  • Replace USERNAME and PATH_TO with your actual username and path in Method 3 and 4
  • After quitting and restarting Claude Desktop, if it still can't detect the mcp server, check if uvx is in your PATH. If not, add ~/.local/bin to your PATH:
# For zsh (macOS default)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

# For bash
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Publishing to PyPI

For maintainers, use the automated publish script:

# Set UV_PUBLISH_TOKEN in .env file, then run:
python dev/publish.py

Or publish manually:

uv publish --token $UV_PUBLISH_TOKEN

License

This project is part of the vnstock-mcp ecosystem. See the main repository for licensing information.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vnstock_mcp-0.3.0.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vnstock_mcp-0.3.0-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file vnstock_mcp-0.3.0.tar.gz.

File metadata

  • Download URL: vnstock_mcp-0.3.0.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.22

File hashes

Hashes for vnstock_mcp-0.3.0.tar.gz
Algorithm Hash digest
SHA256 813f763dac3fdc21a2b7c831166c5651d14add42190704b9f83c93bc4243cc9b
MD5 c643e55fa8ab9ab958ed9eac992afa0d
BLAKE2b-256 bd6467ced457b2a571102af0cdf3d073b4d1023fefc045f19f9996162b1df3b7

See more details on using hashes here.

File details

Details for the file vnstock_mcp-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for vnstock_mcp-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2a1f8d3f0b09ae2c7e83de2053c10609806208281dba7740368dc4e2422d982f
MD5 af603d6a3f11cdcc082e45cc4dacf1d5
BLAKE2b-256 47ce154b4e1d5bec75f09df20e87f986b2ba1cc2853d3966359b6bd5bc8addf3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page