MCP server
Connect Align to ChatGPT, Claude, Cursor and other MCP clients. Endpoint, sign-in flow and tool reference.
Align runs an MCP server, so AI assistants can read a signed-in user's meetings, decisions and tasks.
https://api.meet-align.com/mcpConnect a client
| Client | How |
|---|---|
| ChatGPT | Settings → Apps & Connectors → Advanced settings → Developer mode on → Create → paste the URL, auth OAuth |
| Claude (web/desktop) | Settings → Connectors → Add custom connector → paste the URL |
| Claude Code | claude mcp add --transport http align https://api.meet-align.com/mcp, then /mcp → Authenticate |
| Cursor | ~/.cursor/mcp.json → {"mcpServers": {"align": {"url": "https://api.meet-align.com/mcp"}}} |
| VS Code | .vscode/mcp.json → {"servers": {"align": {"type": "http", "url": "https://api.meet-align.com/mcp"}}} |
The first call opens a browser to sign in to Align and approve the client.
Tools
Reading tools are marked readOnlyHint: true. The four task tools change work items only, as the signed-in user, and never delete. Every tool returns both text and structuredContent. When a project syncs with Jira or Linear, task changes reach the issue there within seconds.
| Tool | Arguments | Returns |
|---|---|---|
ask_align | question | A cited answer from meetings, decisions, docs, chat and tasks (same engine as Ask Align) |
list_meetings | limit (1–50, default 10) | Recent meetings: id, title, date, participants, summary, decision/action counts |
get_meeting | meeting_id, include_transcript | Summary, decisions + rationale, action items (owner, due, status), risks, optional transcript |
list_decisions | query, status, limit | Decisions: statement, status, rationale, owner, project, date |
my_standup | refresh | Today's standup: what you got done (from commits, PRs and tickets), what's on today, what's blocked |
list_my_tasks | scope (today / open / all), limit | Tasks: key, title, status, priority, due, assignee, project |
get_task | key (e.g. ALI-12) | One work item: stage, owner, description, recent comments, the synced Jira/Linear issue |
update_task | key, stage, title, description, priority, due | The updated item (write) |
comment_task | key, body | Adds a progress note, also posted to the synced issue (write) |
create_task | title, description, project, stage, priority, due | The new item, assigned to you (write) |
Anything an AI app writes through these tools is credited to it, the way a git trailer would be: comments and descriptions end with a line such as Co-authored by Claude (or Cursor, ChatGPT, Windsurf…, detected from the connecting app). The sign-in consent page shows the app's mark and lists the write permissions it is asking for.
Auth
- Transport: Streamable HTTP, stateless, JSON responses. One JSON-RPC message per
POST /mcp;GET /mcpreturns 405 (no server stream). - Discovery: an unauthenticated call gets
401withWWW-Authenticate: Bearer resource_metadata="https://api.meet-align.com/.well-known/oauth-protected-resource/mcp". That RFC 9728 document names Supabase Auth as the authorization server. - Sign-in: Supabase Auth's OAuth 2.1 server (dynamic client registration + PKCE). Its consent page is
https://auth.meet-align.com/oauth/consent. - Tokens: a normal Supabase access token for the user. Each tool calls the matching
/api/me/*route in-process with that token, so an assistant sees exactly what the user sees in the apps, under their plan's history limit.
Source: apps/api/hudl/api/routers/mcp.py (server), apps/auth/app/oauth/consent (consent page).
Last updated on
