Skip to main content
Glama
a05031113

Yahoo Finance MCP Server

by a05031113
README.md
# Yahoo Finance MCP Server

This project provides a Model Context Protocol (MCP) server that exposes various functions from the `yfinance` library as individual tools. This allows an MCP client (like Claude Desktop) to query Yahoo Finance data.

## Prerequisites

*   **Python:** Ensure you have Python installed (Python 3.8+ recommended).
*   **uv:** This project uses `uv` for environment and package management. If you don't have it, install it following the instructions here: [https://github.com/astral-sh/uv](https://github.com/astral-sh/uv)

## Setup

1.  **Clone the repository:**
    ```bash
    git clone git@github.com:a05031113/yahoo-fianace-mcp.git
    cd yahoo-finance # Or your repository directory name
    ```

2.  **Create a virtual environment:**
    It's highly recommended to use a virtual environment. Create one using `uv`:
    ```bash
    uv venv
    ```
    This will create a `.venv` directory.

3.  **Activate the virtual environment:**
    *   On macOS/Linux:
        ```bash
        source .venv/bin/activate
        ```
    *   On Windows (Git Bash/WSL):
        ```bash
        source .venv/Scripts/activate
        ```
    *   On Windows (Command Prompt/PowerShell):
        ```bash
        .venv\Scripts\activate
        ```
    You should see `(.venv)` at the beginning of your terminal prompt.

4.  **Install dependencies:**
    Install the required Python packages using `uv`:
    ```bash
    uv pip install -r requirements.txt
    ```

## Running the Server

This server communicates via standard input/output (stdio) as expected by MCP. To run the server, simply execute the `main.py` script using the Python interpreter from your activated virtual environment:

```bash
python main.py
```

The server will start and print log messages to standard error (`stderr`), waiting for JSON-RPC requests on standard input (`stdin`).

You would typically configure your MCP client (e.g., in its settings JSON file) to run this command:

```json
{
  "mcpServers": {
    "yahoo_finance_engine": {
      "command": "/path/to/your/yahoo-finance/.venv/bin/python", // Adjust path accordingly
      "args": [
        "/path/to/your/yahoo-finance/main.py" // Adjust path accordingly
      ]
    }
    // ... other servers
  }
}
```

The MCP client will then manage starting and communicating with this server process.

## Available Tools

The server exposes the public methods of the `YahooFinance` class (defined in `src/tool.py`) as individual MCP tools. These include (but are not limited to):

*   `get_current_stock_price(symbol: str)`
*   `get_stock_price_by_date(symbol: str, date: str)`
*   `get_stock_price_date_range(symbol: str, start_date: str, end_date: str)`
*   `get_historical_stock_prices(symbol: str, period: str = "1mo", interval: str = "1d")`
*   `get_dividends(symbol: str)`
*   `get_income_statement(symbol: str, freq: str = "yearly")`
*   `get_cashflow(symbol: str, freq: str = "yearly")`
*   `get_balance_sheet(symbol: str, freq: str = "yearly")`
*   `get_earning_dates(symbol: str, limit: int = 12)`
*   `get_news(symbol: str)`
*   `get_company_info(symbol: str)`
*   `get_splits(symbol: str)`
*   `get_recommendations(symbol: str)`
*   `get_analyst_price_targets(symbol: str)`
*   `get_major_holders(symbol: str)`
*   `get_institutional_holders(symbol: str)`
*   `get_mutualfund_holders(symbol: str)`
*   `get_option_expiration_dates(symbol: str)`
*   `get_option_chain(symbol: str, date: str)`
*   `get_sustainability(symbol: str)`

Refer to the docstrings within `main.py` or `src/tool.py` for details on each tool's parameters.  

Certified by MCP Review. https://mcpreview.com/mcp-servers/a05031113/yahoo-fianace-mcp