A remote MCP server that brings Squad β the AI product feedback intelligence platform β directly into your AI workflows. Connect Squad to Claude, ChatGPT, or any MCP-compatible AI assistant to turn raw user feedback into signals, insights, actions, and briefs without context switching.
Squad continuously ingests feedback, clusters it into signals, distils it into insights, and links it to the actions and goals that move your product forward. The MCP server exposes that same intelligence β read the evidence behind a decision, capture new feedback, and generate briefs from your assistant.
Connect Squad to your AI assistant in seconds:
Claude Code:
claude mcp add --transport http squad https://mcp.meetsquad.ai/mcpOn first use, you'll be prompted to authenticate via OAuth in your browser.
Other MCP Clients:
Connect using https://mcp.meetsquad.ai/mcp β OAuth configuration is automatically discovered via the server's .well-known/oauth-protected-resource metadata (which points clients at PropelAuth as the authorization server).
See USAGE_EXAMPLES.md for detailed real-world examples. A few things you can ask:
- Triage feedback β "Capture this support ticket in Squad and tell me if it's a known theme."
- Weekly review β "Run my weekly product review: what changed and what needs deciding?"
- Ground the evidence β "Show me the customer signals behind insight IN-42."
- Draft a brief β "Generate a brief for action AC-12."
- Search everything β "Find all feedback related to onboarding friction."
- Ground a ticket β "Pull the customer evidence behind AC-7 before I build it."
Squad entities are referenced by short display IDs so the assistant can cite its evidence:
| Prefix | Entity | Prefix | Entity |
|---|---|---|---|
SI- |
Signal | GL- |
Goal |
IN- |
Insight | BR- |
Brief |
AC- |
Action | DC- |
Document |
CL- |
Cluster |
The server exposes ~35 tools. Write tools require a token minted with the write:workspace scope; read tools only need read:workspace.
| Category | Tools | Purpose |
|---|---|---|
| Workspace | list_workspaces, select_workspace, get_workspace_overview, update_workspace, list_members |
Orient in and configure a workspace |
| Search | search, get_entity |
Semantic search and fetch any entity by ID |
| Evidence | list_signals, find_similar_signals, list_clusters, get_cluster, list_insights |
Explore signals, clusters, and insights |
| Actions | list_actions, get_action_context, update_action, update_action_status |
Track and update product work |
| Strategy | list_goals, create_goal, update_goal, update_insight, dismiss_signal, get_activity |
Manage goals, insights, and activity |
| Knowledge | list_documents, create_document, update_document |
Store research, references, and notes |
| Briefs | list_briefs, generate_brief, update_brief_status |
Generate and manage briefs |
| Ingest | ingest_signal |
Capture new feedback as a signal (with dedup) |
| Integrations | list_integrations |
See connected feedback sources |
Ready-made workflows exposed as MCP prompts:
triage-feedbackβ check for duplicates, ingest a piece of feedback, and report where it landed.weekly-product-reviewβ what changed, what the evidence says, and what needs deciding.draft-decision-briefβ generate a brief from an action or insight and walk it to a readable draft.ground-this-ticketβ for coding agents: pull the customer evidence behind a piece of work before building it.
Pin these so strategy questions need no tool calls:
squad://workspace/contextβ the current workspace's mission and product context.squad://goalsβ the workspace's strategic goals with importance rankings.
- β
Safety annotations (
readOnlyHint/destructiveHint) on every tool - β Structured Zod input schemas
- β User- and workspace-isolated data access via OAuth
- β
Scope-gated writes (
write:workspace)
βββββββββββββββ OAuth ββββββββββββββββ
β Claude / β ββββββββββββββββββββββΊ β PropelAuth β
β ChatGPT β (Authentication) β (IdP) β
βββββββββββββββ ββββββββββββββββ
β
β HTTPS + Bearer Token
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββ
β Squad MCP Server β
β ββββββββββββββββββββββββββββββββββββββββββ β
β β OAuth β introspect + verify token β β
β β JWT minting β service credentials β β
β β Redis β workspace selection + tokens β β
β β MCP handler β tools / prompts / res. β β
β β PostHog β tool-call telemetry β β
β ββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββ
β
β Squad API Calls (minted JWT)
βΌ
ββββββββββββββββ
β Squad API β
ββββββββββββββββ
The server is built on mcp-use v2 and talks to the Squad platform API over GraphQL. Each request is served statelessly: the MCP layer holds no session, and every call re-introspects its own bearer token. Redis stores the durable per-user state (workspace selection and minted-token cache), so any instance can serve any request. Backend types are generated from a committed GraphQL schema snapshot (see GraphQL codegen).
This repository contains the source code for the Squad MCP remote server.
- Node.js 22+
- pnpm
- Nix (optional, for a reproducible dev environment via
flake.nix) - PropelAuth credentials (OAuth 2.1 client + backend API key)
- Redis (optional locally; workspace selection falls back to in-memory)
# Clone repository
git clone https://github.com/the-basilisk-ai/squad-mcp.git
cd squad-mcp
# Install dependencies
pnpm install
# Configure environment
cp .env.example .env
# Edit .env with your PropelAuth credentials (and SQUAD_ENV=dev to target the dev platform)
# Start development server with hot reload
pnpm dev
# Server available at http://localhost:3232| Variable | Required | Purpose |
|---|---|---|
PROPELAUTH_CLIENT_ID / PROPELAUTH_CLIENT_SECRET |
β | OAuth 2.1 client credentials for token introspection |
PROPELAUTH_API_KEY |
β | Backend integration key for minting service JWTs |
SQUAD_ENV |
dev or production (default production) β selects auth/API/app URLs |
|
PORT / MCP_URL / BASE_URI |
Server port and externally-advertised base URL | |
REDIS_URL |
Redis connection for deploy-safe workspace selection and token cache (in-memory if unset) | |
SQUAD_GRAPHQL_URL |
Override the Squad GraphQL endpoint (also used by codegen) | |
POSTHOG_API_KEY / POSTHOG_HOST |
Enable tool-call telemetry | |
LOG_LEVEL |
Logger verbosity |
pnpm dev # Start dev server with hot reload (mcp-use)
pnpm build # Build the server (mcp-use)
pnpm start # Start the built server
pnpm deploy # Deploy via mcp-use
pnpm test # Run unit tests (vitest)
pnpm format # Lint/format check (biome)
pnpm format:fix # Auto-fix lint/format issues
pnpm codegen # Regenerate GraphQL types from schema.graphql
pnpm codegen:check # Fail if generated GraphQL types are stale# Check health
curl http://localhost:3232/health
# Check OAuth discovery
curl http://localhost:3232/.well-known/oauth-protected-resource
# Test with the built-in inspector
pnpm dev # then open the inspector and connect to http://localhost:3232/mcpsquad-mcp/
βββ server.ts # MCP server entry point (OAuth, tool/prompt/resource registration)
βββ server.json # MCP registry metadata (see MCP_REGISTRY.md)
βββ schema.graphql # Committed snapshot of the Squad platform GraphQL schema
βββ codegen.ts # GraphQL Code Generator config
βββ src/
β βββ tools/ # Tool implementations, grouped by surface
β β βββ registry.ts # Single registration path (annotations, errors, telemetry)
β β βββ workspace.ts # list/select workspaces, overview, members
β β βββ search.ts # semantic search
β β βββ get-entity.ts # fetch any entity by display ID / UUID
β β βββ evidence.ts # signals, clusters, insights
β β βββ actions-read.ts # list actions, action context
β β βββ actions-write.ts # update actions + status
β β βββ strategy-read.ts # goals, activity
β β βββ strategy-write.ts # create/update goals, insights, dismiss signals
β β βββ knowledge.ts # documents + briefs
β β βββ ingest.ts # ingest new signals
β β βββ integrations.ts # list connected sources
β βββ prompts/ # MCP prompt workflows
β βββ resources/ # MCP resources (workspace context, goals)
β βββ gql/ # Generated GraphQL types (pnpm codegen)
β βββ graphql/ # GraphQL operation documents
β βββ helpers/ # OAuth provider, token minting, workspace selection, KV/Redis
β βββ lib/ # Squad API client, logger, telemetry
βββ railway.toml # Railway deployment config
βββ .env.example # Environment template
This is a hosted service maintained by Squad. Users connect via OAuth β no self-hosting required.
Architecture notes (for contributors):
- Deployed on Railway with a
/healthreadiness check - Stateless request handling, with Redis holding the per-user workspace selection and token cache, so instances scale horizontally
- Follows the MCP specification for streamable HTTP transport
Need help with the Squad MCP server?
- Email: support@meetsquad.ai
- Documentation:
- Squad MCP Guide β complete setup and integration guide
- USAGE_EXAMPLES.md β real-world usage examples
- Issues: GitHub Issues β bug reports and feature requests
- Privacy Policy: meetsquad.ai/privacy-policy
- Squad Platform: meetsquad.ai
Contributions welcome! Pre-commit hooks run biome and vitest automatically. Please ensure:
pnpm formatpasses (biome)pnpm buildcompiles without errorspnpm testpassespnpm codegen:checkpasses if you touched GraphQL operations- All tools include safety annotations
MIT
- Squad MCP Documentation β complete setup and integration guide
- Squad Platform
- MCP Specification
- Issue Tracker
Backend access is typed via GraphQL Code Generator. schema.graphql is a
committed snapshot of the Squad platform API schema; src/gql/ is generated
from it plus the operation documents in src/graphql/.
- Refresh the snapshot: copy
packages/graphql/src/schema/generated.graphqlfrom the API repo overschema.graphql(or setSQUAD_GRAPHQL_URLto introspect a live endpoint), then runpnpm codegen. - CI runs
pnpm codegen:checkand fails whensrc/gql/is stale.