# Squad MCP Server
A remote MCP server that brings [Squad](https://meetsquad.ai) β the AI-powered product discovery and strategy platform β directly into your AI workflows. Connect Squad to Claude, ChatGPT, or any MCP-compatible AI assistant to research, ideate, and plan products without context switching.
## π Quick Start
### For Users
Connect Squad to your AI assistant in seconds:
**Claude Code:**
```bash
claude mcp add --transport http squad https://mcp.meetsquad.ai/mcp
```
On first use, you'll be prompted to authenticate via OAuth in your browser.
**Claude Connectors:**
- Coming soon to the Claude MCP directory
**ChatGPT:**
- Coming soon to the ChatGPT plugin store
**Other MCP Clients:**
Connect using `https://mcp.meetsquad.ai/mcp` - OAuth configuration is automatically discovered via the server's `.well-known/oauth-authorization-server` endpoint.
## β¨ Available Tools
The Squad MCP server provides 30+ tools across 6 categories:
| Category | Tools | Purpose |
| ----------------- | --------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
| **Opportunities** | `list_opportunities`, `get_opportunity`, `create_opportunity`, `update_opportunity`, `delete_opportunity` | Discover and refine product opportunities |
| **Solutions** | `list_solutions`, `get_solution`, `create_solution`, `update_solution`, `generate_solutions` | Generate and iterate on solution ideas |
| **Outcomes** | `list_outcomes`, `get_outcome`, `create_outcome`, `update_outcome` | Define and track desired business outcomes |
| **Knowledge** | `list_knowledge`, `get_knowledge`, `create_knowledge`, `delete_knowledge` | Store research, references, and insights |
| **Feedback** | `list_feedback`, `get_feedback`, `create_feedback`, `delete_feedback` | Manage customer and stakeholder feedback |
| **Workspace** | `get_workspace`, `update_workspace` | Configure workspace settings |
### Tool Capabilities
All tools include:
- β
Safety annotations (`readOnlyHint` / `destructiveHint`)
- β
Structured JSON schemas for inputs/outputs
- β
User-isolated data access via OAuth
- β
Relationship management between entities
## ποΈ Architecture
```
βββββββββββββββ OAuth ββββββββββββββββ
β Claude / β ββββββββββββββββββββββΊ β PropelAuth β
β ChatGPT β (Authentication) β (IdP) β
βββββββββββββββ ββββββββββββββββ
β
β HTTPS + Bearer Token
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββ
β Squad MCP Server β
β ββββββββββββββββββββββββββββββββββββββββββ β
β β OAuth Middleware β Validate Token β β
β β Session Store (Redis) β Manage State β β
β β MCP Handler β Execute Tools β β
β ββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββ
β
β Squad API Calls
βΌ
ββββββββββββββββ
β Squad API β
ββββββββββββββββ
```
## π¦ NPM Package
For programmatic access to Squad tools in your Node.js applications:
```bash
npm install @squadai/tools
```
```typescript
import { tools as squadTools } from "@squadai/tools";
// Use with Vercel AI SDK
const result = await generateText({
model: anthropic("claude-3-5-sonnet-20241022"),
tools: squadTools({
jwt: "YOUR_JWT_TOKEN",
orgId: "org-123",
workspaceId: "ws-456",
}),
prompt: "List my current product opportunities",
});
```
## π οΈ Development
This repository contains the source code for the Squad MCP remote server.
### Prerequisites
- Node.js 18+
- Yarn
- PropelAuth account (for OAuth2)
- Redis instance (optional for local development)
- Squad API credentials
### Local Setup
**Option 1: Quick Start (Local Node.js)**
```bash
# Clone repository
git clone https://github.com/the-basilisk-ai/squad-mcp.git
cd squad-mcp
# Install dependencies
yarn install
# Configure environment
cp .env.example .env
# Edit .env with your PropelAuth credentials
# Note: Redis is optional - omit REDIS_URL to use in-memory sessions
# Start development server with hot reload
yarn dev
# Server available at http://localhost:3232
```
**Option 2: Docker Compose (Production-like)**
```bash
# Configure environment
cp .env.example .env
# Edit .env with your PropelAuth credentials
# Note: REDIS_URL is automatically set by docker-compose
# Start server + Redis
docker-compose up
# Server available at http://localhost:3232
```
### Available Commands
```bash
yarn build # Compile TypeScript
yarn dev # Start dev server with hot reload
yarn start # Start production server
yarn openapi:squad # Regenerate API client from OpenAPI spec
yarn test # Run test suite
# Docker commands
docker-compose up # Start server + Redis
docker-compose down # Stop and remove containers
docker-compose logs -f # View logs
```
### Testing the Server
```bash
# Check health
curl http://localhost:3232/health
# Check OAuth discovery
curl http://localhost:3232/.well-known/oauth-authorization-server
# Test with MCP Inspector
npx @modelcontextprotocol/inspector
# Then connect to http://localhost:3232/mcp
```
### Running Tests
Tests run against the full HTTP server with Redis (via Docker Compose):
```bash
# Setup environment (if not already done)
cp .env.example .env
# Edit .env with your PropelAuth credentials and Squad API key
# Run tests (starts/stops Docker Compose automatically)
yarn test
# Watch mode for development
docker-compose up -d
yarn test:watch
# ... when done:
docker-compose down
```
**Note:** Tests use `SQUAD_API_KEY` from `.env` for authentication (not OAuth).
### Project Structure
```
squad-mcp/
βββ src/
β βββ http-server.ts # Express server + MCP endpoints
β βββ middleware/
β β βββ oauth.ts # PropelAuth OAuth validation
β βββ handlers/
β β βββ mcp.ts # MCP protocol handler
β βββ lib/
β β βββ session-store.ts # Redis session management
β β βββ clients/ # Squad API client
β βββ tools/ # Tool implementations
β βββ opportunity.ts
β βββ solution.ts
β βββ outcome.ts
β βββ ...
βββ 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):**
- Single-instance deployment on Railway
- Follows [MCP specification](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports) for stateful HTTP sessions
- In-memory transport storage (standard per MCP spec)
- Redis for session metadata persistence
## π€ Contributing
Contributions welcome! Please ensure:
- TypeScript builds without errors (`yarn build`)
- All tools include safety annotations
- OAuth context properly propagated
- Tests pass (when test suite is implemented)
## π License
MIT
## π Links
- [Squad Platform](https://meetsquad.ai)
- [MCP Specification](https://modelcontextprotocol.io)
- [Claude Desktop](https://claude.ai/download)
- [Issue Tracker](https://github.com/the-basilisk-ai/squad-mcp/issues)