MCP server for TeamSnap - access teams, rosters, and events from Claude
概览
A Model Context Protocol (MCP) server that connects Claude to your TeamSnap account. Read and manage teams, rosters, events, availability, volunteer sign-ups, and team communications directly from Claude Desktop or CLI. - — teams, rosters, events, availability, locations, contacts, announcements, assignments, opponents, standings, stats, forums, calendars, and custom fields - — set RSVPs, create/update/cancel events, create and assign tracked items (snacks, volunteers, carpools), send team messages, and send broadcast email/push announcements - — preview: true by default returns the payload without calling TeamSnap; destructive writes additionally require confirm: true; POST tools support an optional idempotency_key. See Write Tools & Safety. - — events always returned in their own timezone; optional viewer-timezone field for travel - — OAuth 2.0 with AES-256-GCM encrypted local storage or DynamoDB - — Run locally, via npx, or on AWS Lambda - Node.
README
以下为原文 README 节选,完整内容请查看原文。
TeamSnap MCP Server
A Model Context Protocol (MCP) server that connects Claude to your TeamSnap account. Read and manage teams, rosters, events, availability, volunteer sign-ups, and team communications directly from Claude Desktop or CLI.
Features
- 21 read tools — teams, rosters, events, availability, locations, contacts, announcements, assignments, opponents, standings, stats, forums, calendars, and custom fields
- 8 write tools — set RSVPs, create/update/cancel events, create and assign tracked items (snacks, volunteers, carpools), send team messages, and send broadcast email/push announcements
- Safety rails on every write —
preview: trueby default returns the payload without calling TeamSnap; destructive writes additionally requireconfirm: true; POST tools support an optionalidempotency_key. See Write Tools & Safety. - Localized event times — events always returned in their own timezone; optional viewer-timezone field for travel
- Secure — OAuth 2.0 with AES-256-GCM encrypted local storage or DynamoDB
- Flexible Deployment — Run locally, via npx, or on AWS Lambda
Prerequisites
- Node.js >= 18
- A TeamSnap Developer OAuth application (Client ID + Secret)
Quick Start
1. Get TeamSnap OAuth Credentials
- Go to TeamSnap Developer Portal
- Create a new application
- Set the redirect URI (see deployment options below)
- Note your Client ID and Client Secret
2. Choose Your Deployment
Option A: Local MCP Server
Best for development. Requires a tunnel (e.g., Cloudflare) for the OAuth callback.
git clone https://github.com/mrelph/TeamSnapMCP.git
cd TeamSnapMCP
cp .env.example .env # Add your credentials
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"
}
}
}
}
Tip: Use
cloudflared tunnel --url http://localhost:8374to create an HTTPS callback URL.
Option B: npx (Connects to AWS Deployment)
Easiest option if the AWS backend is already deployed. No local clone needed.
{
"mcpServers": {
"teamsnap": {
"command": "npx",
"args": ["-y", "teamsnap-mcp"],
"env": {
"TEAMSNAP_MCP_ENDPOINT": "https://your-api-id.execute-api.us-east-1.amazonaws.com/mcp"
}
}
}
}
Option C: AWS Serverless
Deploy to AWS Lambda for a permanent HTTPS callback URL — no tunnels needed.
cd aws
npm install
Set environment variables:
export AWS_ACCESS_KEY_ID=your-aws-key
安装
npx -y teamsnap-mcp配置
{
"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"
}
}
}
}