valorant-mcp
valorant-mcp
An always-available, private MCP server that gives its owner’s LLM client factual VALORANT account and match data through HenrikDev’s API.
OAuth 2.1-authenticated, multi-user MCP server (Streamable HTTP)
Invite-based consent model — no player is ever looked up without explicit consent
Per-user-scoped Postgres cache, fail-open by design
Strict TypeScript, zod-validated boundaries, 100+ tests
Quick start
The project targets Node.js 24.x and pnpm 10.x. M1–M4 are complete and deployed (see ARCHITECTURE.md); BACKLOG.md tracks any active near-term work.
pnpm install
pnpm devVerify
sh scripts/check-agent-docs.shNormal use
Any OAuth-authenticated, consented user asks an MCP client (e.g. Claude) for VALORANT data via eight tools: get_profile, get_recent_matches, get_match_detail, get_player_stats, get_rank_history, compare_match, compare_rank, and search_match_history. Most accept optional target_name/target_tag to look up a consented friend's data instead of the caller's own. See ARCHITECTURE.md for the full tool table and consent model.
Onboarding a new user
Access is invite-only (M4's two-list consent model — see ARCHITECTURE.md). To invite someone, call the admin endpoint with their Riot ID (name#tag):
curl -X POST https://valorant-mcp.vercel.app/api/admin/invite \
-H "Authorization: Bearer <ADMIN_API_KEY>" \
-H "Content-Type: application/json" \
-d '{"name": "friend", "tag": "1234"}'This resolves the Riot ID via HenrikDev, adds them to consented_profiles, and mints a one-time invite code. The response is {"code": "...", "claim_url": "..."} — send claim_url to the person being invited. They open it, sign in via Supabase magic link with whatever email they want, and that email becomes their mcp_users row (their MCP client should then point at https://valorant-mcp.vercel.app/api/mcp, same as any other user). ADMIN_API_KEY lives in Vercel's Preview/Production env vars and the owner's local .env — never commit or share it.
Project documents
ARCHITECTURE.md: boundaries, data flow, and public contracts.
CONTRIBUTING.md: development and release workflow.
BACKLOG.md: bounded near-term work.
ROADMAP.md: optional longer-term direction.