squad-mcp
Remote Model Context Protocol (MCP) server for Squad AI. Manage your product strategy with your favourite AI agent.
Documentation
Squad MCP Server
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.
๐ Quick Start
For Users
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).
๐ Usage Examples
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 |
Tools
The server exposes 30 tools. Write tools require a token minted with the `write:workspace` scope; read tools only need `read:workspace`.
- `list_workspaces` โ List every organisation and workspace you can access, with the current selection marked.
- `select_workspace` โ Select which organisation and workspace subsequent tools operate on.
- `get_workspace_overview` โ One-call orientation: mission and description, top goals, recent signal activity, evidence-chain health, and open work counts.
- `update_workspace` โ Update the current workspace's name, description, mission statement or logo.
- `list_members` โ People in the current organisation with their user IDs.
- `search` โ Keyword search across signals, insights, actions, goals, documents and clusters.
- `get_entity` โ Fetch any entity by display ID (`SI-1`, `IN-1`, `AC-1`, `GL-1`, `BR-1`, `DC-1`, `CL-1`) or UUID. Also how you check on async work.
- `list_signals` โ Browse raw feedback signals with filters for source, type, sentiment, cluster and date range.
- `find_similar_signals` โ Semantically related signals for a given signal โ "has anyone else said this?".
- `list_clusters` โ Browse signal clusters (recurring themes in feedback) with sizes and labels.
- `get_cluster` โ A cluster's label, stats, member signals and linked insights.
- `list_insights` โ Browse distilled insights ranked by combined score, with category/score/status filters or scoped to a goal.
- `list_actions` โ Ranked actions (what the evidence says to do next) filtered by status, assignee, priority or parent insight.
- `get_action_context` โ Everything needed to execute an action in one call: the action, the parent insight, the customer evidence behind it, and the goals it serves.
- `update_action` โ Edit an action's priority, effort, category or notes; assign it; or link it to an insight or brief.
- `update_action_status` โ Move an action through its lifecycle: start, complete, dismiss or snooze.
- `list_goals` โ Strategic goals ordered by importance.
- `create_goal` โ Create a strategic goal.
- `update_goal` โ Update a goal's title, description or importance.
- `update_insight` โ Curate an insight: set category or status, and link/unlink the goal it supports.
- `dismiss_signal` โ Permanently remove a signal from the workspace (noise, spam, or mis-ingested content).
- `get_activity` โ The workspace change feed (humans and Squad agents), newest first.
- `list_documents` โ Browse workspace knowledge documents (and briefs) with their paths and tags.
- `create_document` โ Create a knowledge document from markdown (research summaries, meeting notes, analyses).
- `update_document` โ Replace a document's markdown body and/or title, and manage tags.
- `list_briefs` โ Briefs with their status (building/draft/in_review/finalised/failed) and recommendation.
- `generate_brief` โ Kick off AI generation of a brief from an action or insight.
- `update_brief_status` โ Move a brief through its review lifecycle: draft, in_review, or finalised.
- `ingest_signal` โ Pipe user feedback into the evidence chain (1โ50 items, deduplicated server-side).
- `list_integrations` โ Connected feedback sources for this workspace and their sync health.
Prompts
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.
Resources
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.
Tool Capabilities
- โ Safety annotations (`readOnlyHint` / `destructiveHint`) on every tool
- โ Structured Zod input schemas
- โ User- and workspace-isolated data access via OAuth
- โ Scope-gated writes (`write:workspace`)
๐๏ธ Architecture
โโโโโโโโโโโโโโโ 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).
๐ ๏ธ Development
This repository contains the source code for the Squad MCP remote server.
Prerequisites
- 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)
Local Setup
# 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:3232Environment Variables
| 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 |
Available Commands
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 staleTesting the Server
# 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/mcpProject Structure
squad-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๐ญ Production Deployment
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 `/health` readiness 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
๐ฌ Support
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
๐ค Contributing
Contributions welcome! Pre-commit hooks run biome and vitest automatically. Please ensure:
- `pnpm format` passes (biome)
- `pnpm build` compiles without errors
- `pnpm test` passes
- `pnpm codegen:check` passes if you touched GraphQL operations
- All tools include safety annotations
๐ License
MIT
๐ Links
- Squad MCP Documentation โ complete setup and integration guide
- Squad Platform
- MCP Specification
- Issue Tracker
GraphQL codegen
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.graphql`
from the API repo over `schema.graphql` (or set `SQUAD_GRAPHQL_URL` to
introspect a live endpoint), then run `pnpm codegen`.
- CI runs `pnpm codegen:check` and fails when `src/gql/` is stale.
Frequently asked questions
What is squad-mcp?
squad-mcp is Remote Model Context Protocol (MCP) server for Squad AI. Manage your product strategy with your favourite AI agent.
How do I install squad-mcp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is squad-mcp open source?
Yes โ it is hosted on GitHub at https://github.com/the-basilisk-ai/squad-mcp and has 2 stars.
Related MCP tools
Model Context Protocol Servers
The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra
A MCP for Claude Desktop / Claude Code / Windsurf / Cursor to build n8n workflows for you
MCP server to provide Figma layout information to AI coding agents like Cursor
The world's best AI personal assistant for email. Open source app to help you reach inbox zero fast.
Instant is the best backend for AI-coded apps. You get auth, permissions, storage, presence, and streams โ everything you need to ship apps your users will love.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP