Skip to main content
Glama
etweisberg

MLB Stats MCP Server

by etweisberg
README.md4.81 kB
# MLB Stats MCP Server [![Tests](https://github.com/etweisberg/mcp-baseball-stats/actions/workflows/test.yml/badge.svg)](https://github.com/etweisberg/baseball/mcp-baseball-stats/workflows/test.yml) [![Pre-commit](https://github.com/etweisberg/mcp-baseball-stats/actions/workflows/pre-commit.yml/badge.svg)](https://github.com/etweisberg/mcp-baseball-stats/actions/workflows/pre-commit.yml) [![smithery badge](https://smithery.ai/badge/@etweisberg/mlb-mcp)](https://smithery.ai/server/@etweisberg/mlb-mcp) A Python project that creates a Model Context Protocol (MCP) server for accessing MLB statistics data through the MLB Stats API and `pybaseball` library for statcast, fangraphs, and baseball reference statistics. This server provides structured API access to baseball statistics that can be used with MCP-compatible clients. ## Project Structure - `mlb_stats_mcp/` - Main package directory - `server.py` - Core MCP server implementation - `tools/` - MCP tool implementations - `mlb_statsapi_tools.py` - MLB StatsAPI tool definitions - `statcast_tools.py` - Statcast data tool definitions - `pybaseball_plotting_tools.py` - Additional `pybaseball` tools provided for generating matplotlib plots and returning base64 encoded images - `pybaseball_supp_tools.py` - Supplemental `pybaseball` functions for interfacing with fangraphs, baseball reference, and other data sources - `utils/` - Utility modules - `logging_config.py` - Logging configuration - `images.py` - functions related to handling plot images - `tests/` - Test suite for verifying server functionality - `pyproject.toml` - Project configuration and dependencies - `.pre-commit-config.yaml` - Pre-commit hooks configuration - `.github/` - GitHub Actions workflows ## Tools ## Setup 1. Install uv if you haven't already: ```bash curl -LsSf https://astral.sh/uv/install.sh | sh ``` 2. Create and activate a virtual environment: ```bash uv venv source .venv/bin/activate # On Unix/macOS # or .venv\Scripts\activate # On Windows ``` 3. Install dependencies: ```bash uv pip install -e . ``` ### Installing via Smithery To install MLB Stats Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@etweisberg/mlb-mcp): ```bash npx -y @smithery/cli install @etweisberg/mlb-mcp --client claude ``` ### Running Tests The project includes comprehensive pytest tests for the MCP server functionality: ```bash uv run pytest -v ``` Tests verify all MLB StatsAPI tools work correctly with the MCP protocol, establishing connections, making API calls, and processing responses. ## Environment Variables The project uses environment variables stored in `.env` to configure settings. Use `ANTHROPIC_API_KEY` to enable MCP Server. ### Logging Configuration The MLB Stats MCP Server supports configurable logging via environment variables: - `MLB_STATS_LOG_LEVEL` - Sets the logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) - `MLB_STATS_LOG_FILE` - Path to log file (if not set, logs to stdout) ## Claude Desktop Integration To connect this MCP server to Claude Desktop, add a configuration to your `claude_desktop_config.json` file. Here's a template configuration: ```json "mcp-baseball-stats": { "command": "{PATH_TO_UV}", "args": [ "--directory", "{PROJECT_DIRECTORY}", "run", "python", "-m", "mlb_stats_mcp.server" ], "env": { "MLB_STATS_LOG_FILE": "{LOG_FILE_PATH}", "MLB_STATS_LOG_LEVEL": "DEBUG" } } ``` Replace the following placeholders: - `{PATH_TO_UV}`: Path to your uv installation (e.g., `~/.local/bin/uv`) - `{PROJECT_DIRECTORY}`: Path to your project directory - `{LOG_FILE_PATH}`: Path where you want to store the log file ## Technologies Used - `mcp[cli]` - Machine-Learning Chat Protocol for tool definition - `mlb-statsapi` - Python wrapper for the MLB Stats API - `httpx` - HTTP client for making API requests - `pytest` and `pytest-asyncio` - Test frameworks - `uv` - Fast Python package manager and installer ## Linting This project uses [Ruff](https://github.com/astral-sh/ruff) for linting and code formatting, with pre-commit hooks to ensure code quality. ### Setup Pre-commit Hooks 1. Install pre-commit: ```bash pip install pre-commit ``` 2. Initialize pre-commit hooks: ```bash pre-commit install ``` Now, the linting checks will run automatically whenever you commit code. You can also run them manually: ```bash pre-commit run --all-files ``` ### Linting Configuration Linting rules are configured in the `pyproject.toml` file under the `[tool.ruff]` section. The project follows PEP 8 style guidelines with some customizations. ### CI Integration GitHub Actions workflows automatically run tests, linting, and pre-commit checks on all pull requests and pushes to the main branch.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/etweisberg/mlb-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server