Skip to main content
Glama
OpenPowerlifting MCP

OpenPowerlifting MCP

openpowerlifting-mcp

An MCP server that lets an LLM query OpenPowerlifting meet results: about four million entries from raw and equipped meets worldwide, with every attempt recorded.

Ask things like "How has Taylor Atwood's raw total changed since 2015?" or "Where would a 600 kg total put a tested 93 kg raw lifter?" and the model answers from the actual data instead of from memory.

Tools

Tool

What it does

search_lifters

Find lifters by name. Handles the #2-style suffixes OpenPowerlifting uses for lifters who share a name.

lifter_history

Every meet for one lifter with each attempt. Missed attempts are negative; fourth attempts (records only) are kept apart.

percentile_for_total

Rank a total against each lifter's best total, filtered by sex, equipment, weight class, event and drug testing.

compare_lifters

Career bests side by side for 2 to 10 lifters.

Related MCP server: mcp-data-lens

Setup

Needs uv.

git clone https://github.com/sebastianpantin/openpowerlifting-mcp
cd openpowerlifting-mcp
uv sync
uv run python scripts/fetch_data.py

fetch_data.py downloads the latest bulk CSV (about 170 MB zipped, 830 MB unzipped) into raw/ and converts it once with DuckDB into data/openpowerlifting.parquet (about 150 MB). It takes under a minute on a decent connection. Run it again with --force to pick up a newer export.

Use it with Claude Desktop

uv run mcp install server.py --name openpowerlifting --with-editable .

Restart Claude Desktop and the tools show up. Any other MCP client can start the server over stdio with uv run --directory /path/to/openpowerlifting-mcp openpowerlifting-mcp.

The server looks for data/openpowerlifting.parquet in the repo. Set OPL_PARQUET to use a file somewhere else.

Development

uv run mcp dev server.py   # MCP Inspector in the browser
uv run pytest
uv run ruff check . && uv run ruff format .

Tests run against a nine-row CSV in tests/fixtures/ that uses the real column layout, so they don't need the full download.

Queries go straight to the Parquet file through DuckDB. Lookups take well under 100 ms on a laptop, so there is no database to run.

Data

This project uses data from the OpenPowerlifting project, https://www.openpowerlifting.org. You may download a copy of the data at https://data.openpowerlifting.org.

The data is in the public domain. This repository does not include it; fetch_data.py downloads it from OpenPowerlifting.

License

MIT for the code. See LICENSE.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language database operations and semantic document search through SQLite and vector database integration. Converts plain English instructions into SQL queries and provides RAG capabilities for uploaded documents.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables users to ask questions about their spreadsheets in plain English and receive instant answers using DuckDB-powered analytics, supporting multiple file formats like Excel, CSV, and Parquet.
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Query local CSV, Parquet, JSON and TSV files with real SQL via DuckDB. Gives your AI coding tool ground-truth data access instead of hallucinated answers.
    5
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    Enables querying and replaying deterministic market data for crypto and US equities from a local Parquet lake via natural language.
    57
    4
    Apache 2.0