Skip to main content
Glama
mrelph

TeamSnap MCP Server

by mrelph

TeamSnap MCP Server

A Model Context Protocol (MCP) server that connects Claude to your TeamSnap account. Access your teams, rosters, events, and availability data directly from Claude Desktop or CLI.

Features

  • Teams: List and view all your TeamSnap teams

  • Rosters: Get player and coach information

  • Events: View games, practices, and other events

  • Availability: Check who's available for events

  • Secure: OAuth 2.0 authentication with encrypted token storage

  • AWS Deployment: Optional serverless deployment with permanent HTTPS callback URL

Quick Start

1. Get TeamSnap OAuth Credentials

  1. Go to TeamSnap Developer Portal

  2. Create a new application

  3. Set the redirect URI (see options below)

  4. Note your Client ID and Client Secret

2. Choose Your Deployment

Option A: Local MCP Server

For local development with a tunnel for OAuth callback.

git clone https://github.com/yourusername/TeamSnapMCP.git cd TeamSnapMCP npm install npm run build

Add to Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{ "mcpServers": { "teamsnap": { "command": "node", "args": ["/path/to/TeamSnapMCP/dist/index.js"], "env": { "TEAMSNAP_CLIENT_ID": "your-client-id", "TEAMSNAP_CLIENT_SECRET": "your-client-secret", "TEAMSNAP_REDIRECT_URI": "https://your-tunnel-url/callback" } } } }

Redirect URI: Use a tunnel like cloudflared tunnel --url http://localhost:8374 for HTTPS callback.

Deploy to AWS Lambda for a permanent HTTPS callback URL with no tunnels needed.

cd aws npm install

Set environment variables:

export AWS_ACCESS_KEY_ID=your-aws-key export AWS_SECRET_ACCESS_KEY=your-aws-secret export AWS_REGION=us-west-2 export TEAMSNAP_CLIENT_ID=your-client-id export TEAMSNAP_CLIENT_SECRET=your-client-secret

Deploy:

node scripts/deploy.cjs

This creates:

  • API Gateway with permanent HTTPS URL

  • Lambda function for MCP server

  • DynamoDB table for token storage

Then use the wrapper for Claude Desktop:

{ "mcpServers": { "teamsnap": { "command": "node", "args": ["/path/to/TeamSnapMCP/dist/wrapper.js"], "env": { "TEAMSNAP_MCP_ENDPOINT": "https://your-api-id.execute-api.us-west-2.amazonaws.com/mcp" } } } }

3. Authenticate

Tell Claude: "Connect to TeamSnap"

A browser will open for OAuth login. Once complete, you're connected!

Available Tools

Tool

Description

teamsnap_auth

Connect to TeamSnap

teamsnap_auth_status

Check connection status

teamsnap_logout

Disconnect from TeamSnap

teamsnap_list_teams

List all your teams

teamsnap_get_team

Get team details

teamsnap_get_roster

Get players and coaches

teamsnap_get_events

Get team events

teamsnap_get_event

Get event details

teamsnap_get_availability

Get event availability

Example Prompts

  • "What teams do I have in TeamSnap?"

  • "Show me the roster for the Jr Kraken"

  • "What games do we have scheduled this month?"

  • "Who's available for Saturday's game?"

Architecture

┌─────────────────────────────────────────────────────────────┐ │ AWS (Optional) │ │ ┌──────────────┐ ┌──────────────┐ ┌───────────────┐ │ │ │ API Gateway │───▶│ Lambda │───▶│ DynamoDB │ │ │ │ (HTTPS) │ │ (MCP Server) │ │ (Tokens) │ │ │ └──────────────┘ └──────────────┘ └───────────────┘ │ └─────────────────────────────────────────────────────────────┘ ▲ │ HTTP/SSE ▼ ┌───────────┐ ┌───────────────┐ │ Wrapper │◀───────▶│ Claude Desktop│ │ (stdio) │ │ │ └───────────┘ └───────────────┘

Security

  • OAuth tokens encrypted with AES-256-GCM (local) or stored in DynamoDB (AWS)

  • Only read access requested from TeamSnap

  • No credentials stored in code

Development

# Install dependencies npm install # Build npm run build # Run locally node dist/index.js # Run wrapper (connects to AWS) node dist/wrapper.js

License

MIT

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/mrelph/TeamSnapMCP'

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