Metadata-Version: 2.4
Name: speechwire-mcp
Version: 0.1.0
Summary: Model Context Protocol (MCP) server for interacting with SpeechWire tournament management
Project-URL: Homepage, https://github.com/jessica-writes-code/speechwire-mcp
Project-URL: Repository, https://github.com/jessica-writes-code/speechwire-mcp
Project-URL: Issues, https://github.com/jessica-writes-code/speechwire-mcp/issues
Author: Jessica Moore
License-Expression: MIT
License-File: LICENSE
Keywords: forensics,mcp,model-context-protocol,speech-and-debate,speechwire
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.11
Requires-Dist: beautifulsoup4<5.0,>=4.12.0
Requires-Dist: mcp<2.0,>=1.0.0
Requires-Dist: requests<3.0,>=2.32.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.4.0; extra == 'dev'
Description-Content-Type: text/markdown

# SpeechWire MCP Server

[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Python](https://img.shields.io/badge/python-3.11%2B-blue)](#) [![PyPI](https://img.shields.io/pypi/v/speechwire-mcp)](#)

A [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server that provides AI assistants with secure, authenticated access to [SpeechWire](https://www.speechwire.com/) tournament data for speech-and-debate (forensics) competitions.

The server scrapes manage.speechwire.com behind an authenticated session and exposes structured tournament data through MCP tools, enabling AI assistants to help tournament directors manage judge assignments, rooms, teams, entries, and round pairings.

## Features

- **Judge management** — list judges, contact info, availability, school associations, judge types, and add new judges
- **Team & entry data** — team rosters, entries by team, hybrid/cross-school entries
- **Room management** — room lists, usage grids, room-vs-section counts
- **Schematics** — event lists, round-by-round pairings with judges, rooms, and competitors
- **Tournament structure** — timeslots, competition groupings
- **Results** — tab sheets with round outcomes, speaker scores, and placements
- **Account discovery** — list and select accounts and tournaments interactively
- **Session management** — automatic re-authentication on session expiry

## Installation

```bash
pip install speechwire-mcp
```

Set your SpeechWire credentials as environment variables:

```bash
export SPEECHWIRE_EMAIL="your-email@example.com"
export SPEECHWIRE_PASSWORD="your-password"
```

## Available MCP Tools

| Tool | Description |
|------|-------------|
| `speechwire_list_user_accounts` | List accounts available after login |
| `speechwire_select_user_account` | Select an account to work with |
| `speechwire_list_user_tournaments` | List tournaments for the selected account |
| `speechwire_select_user_tournament` | Select a tournament to activate |
| `speechwire_list_judges` | List all judges with roster details |
| `speechwire_get_judge_contact` | Get judge email and phone |
| `speechwire_get_judge_availability` | Get judge availability by timeslot |
| `speechwire_get_judge_school` | Get judge's school association |
| `speechwire_add_judge` | Add a new judge to the tournament |
| `speechwire_update_judge_email` | Update a judge's email address |
| `speechwire_update_judge_availability` | Update a judge's availability slots |
| `speechwire_update_judge_school` | Update a judge's school/team affiliation |
| `speechwire_list_judge_types` | List configured judge types |
| `speechwire_list_rooms` | List tournament rooms |
| `speechwire_get_room_usage` | Get room time-slot usage grid |
| `speechwire_get_room_counts` | Get rooms vs. sections per grouping/round |
| `speechwire_list_teams` | List registered teams |
| `speechwire_get_team_entries` | Get entries for a specific team |
| `speechwire_list_hybrid_entries` | List cross-school hybrid entries |
| `speechwire_list_timeslots` | List tournament schedule timeslots |
| `speechwire_list_groupings` | List competition groupings |
| `speechwire_list_schematic_events` | List schematic events with available rounds |
| `speechwire_get_round_schematic` | Get pairings for a specific event round |
| `speechwire_get_tab_sheet` | Get results tab sheet for a grouping |

## License

[MIT](LICENSE)
