TAS/CAS Jurisprudence MCP Server
Court of Arbitration for Sport (TAS/CAS) decision search and retrieval
Overview
This MCP server provides tools to search and retrieve arbitration decisions from the Court of Arbitration for Sport (CAS/TAS). It enables Claude to research sports law precedents, anti-doping cases, and commercial sports disputes.
Available Tools
cas_search
Search CAS/TAS arbitration decisions by keywords, sport, year range, or procedure type.
Parameters:
query(required): Search query for case content, parties, or keywordssport(optional): Filter by sport (e.g., "Football", "Cycling", "Athletics")year_from(optional): Filter decisions from this year (1984-2026)year_to(optional): Filter decisions until this year (1984-2026)procedure_type(optional): Filter by type - "Appeal", "Ordinary", "Anti-Doping", "Advisory"page(optional): Page number (default: 1)page_size(optional): Results per page, max 25 (default: 10)
cas_get_award
Retrieve detailed information about a specific CAS/TAS award.
Parameters:
case_number(optional): CAS case number (e.g., "CAS 2023/A/9876")url(optional): Direct URL to the award pageinclude_full_text(optional): Include full PDF text (default: false)
cas_recent
Get the most recent CAS/TAS arbitration decisions.
Parameters:
limit(optional): Maximum number of decisions (1-50, default: 10)
cas_by_sport
Browse CAS/TAS decisions by sport category.
Parameters:
sport(required): Sport to browse (e.g., "Football", "Cycling")page(optional): Page number (default: 1)
Installation
# Navigate to server directory
cd mcp-servers/tas-jurisprudence
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run locally
npm run dev
Deployment
Railway
This server is designed for Railway deployment with HTTP transport:
# From the tas-jurisprudence directory
railway up
Configuration:
- Set custom domain:
tas.bettercallclaude.ch - MCP endpoint:
https://tas.bettercallclaude.ch/tas-jurisprudence/mcp
Client Configuration
Claude Desktop
For local stdio transport (not recommended for this server): ``json { "mcpServers": { "tas-jurisprudence": { "command": "node", "args": ["/path/to/mcp-servers/tas-jurisprudence/dist/index.js"] } } } ``
Remote HTTP Transport
For Railway deployment: ``json { "mcpServers": { "tas-jurisprudence": { "url": "https://tas.bettercallclaude.ch/tas-jurisprudence/mcp", "transport": "http" } } } ``
Technical Details
Architecture
- Transport: Streamable HTTP (Express.js)
- Scraping: Playwright for JavaScript-rendered content
- Caching: In-memory LRU cache with configurable TTL
- Rate Limiting: 10-second crawl delay (respects robots.txt)
Cache TTLs
- Search results: 10 minutes
- Award details: 30 minutes
- Recent decisions: 5 minutes
- Sport browse: 15 minutes
Data Sources
- Main database:
jurisprudence.tas-cas.org(JavaScript-rendered) - Recent decisions:
tas-cas.org/en/jurisprudence/recent-decisions.html - PDF files:
tas-cas.org/files/decision/
Legal Notice
CAS awards are publicly accessible, but their content is subject to copyright. This server:
- Provides metadata and summaries by default
- Links to official PDF sources rather than redistributing content
- Respects robots.txt crawl-delay requirements
- Is intended for legitimate legal research purposes
For full award redistribution, CAS permission may be required.
Development
# Run tests
npm test
# Watch mode
npm run test:watch
# Clean build artifacts
npm run clean
Troubleshooting
No search results
- The CAS database requires JavaScript rendering
- Ensure Playwright/Chromium is properly installed
- Check rate limiter isn't blocking requests
Memory issues in production
- Single browser instance is reused
- Pages are closed after each operation
- Implement periodic browser restart for long-running instances
Rate limiting errors
- Default 10-second delay between requests
- Increase
CRAWL_DELAY_MSif getting blocked - Check CAS website status
License
MIT License - BetterCallClaude Project












