Provides tools for interacting with Fizzy, a project management tool by Basecamp, enabling management of boards, cards, card actions, comments, reactions, steps, columns, tags, users, and notifications.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Fizzy MCP Serverlist the cards in my 'Website Launch' board"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Fizzy MCP Server
A Model Context Protocol (MCP) server for Fizzy — the project management tool by Basecamp.
🚀 Try it live: https://fizzy.fabric.pro/mcp
📖 Fizzy API Documentation: github.com/basecamp/fizzy/blob/main/docs/API.md
This MCP server allows AI assistants like Claude, Cursor, and GitHub Copilot to interact with your Fizzy boards, cards, and projects through natural language.
Table of Contents
Features
Full Fizzy API Coverage: 44 tools covering Boards, Cards, Card Actions, Comments, Reactions, Steps, Columns, Tags, Users, and Notifications
Multiple Transport Protocols: Stdio (CLI/IDE), HTTP (Streamable), and SSE (deprecated)
Multi-User Support: HTTP and SSE transports support multiple users with per-user authentication
Flexible Deployment: Run locally (Node.js) or deploy globally (Cloudflare Workers)
IDE Integration: Works with Cursor, VS Code, Claude Desktop, and other MCP-compatible tools
Robust Error Handling: Structured error classes with detailed error messages
Automatic Retries: Exponential backoff retry logic for transient failures (5xx errors, timeouts, network issues)
Request Timeout: 30-second default timeout to prevent hanging requests
ETag Caching: Automatic HTTP caching using ETags to reduce bandwidth and improve response times (as per Fizzy API caching spec)
Fully Tested: Comprehensive test suite with 450+ test cases
Transport Support
The Fizzy MCP server supports multiple transport protocols depending on your deployment environment:
Transport Comparison
Transport | Protocol Version | Node.js | Cloudflare | Use Case | Authentication |
stdio | N/A | ✅ Yes | ❌ No | CLI/IDE integrations (Cursor, VS Code, Claude Desktop) | Single-user via |
HTTP (Streamable) | 2025-03-26 | ✅ Yes | ✅ Yes | Production deployments, multi-user applications | Multi-user via |
SSE | 2024-11-05 | ✅ Yes | ❌ No | ⚠️ Deprecated - backwards compatibility only | Multi-user via |
Deployment-Specific Support
Node.js Deployment
Supports all three transports:
stdio: For single-user CLI/IDE integrations (recommended for local development)
HTTP (Streamable): For multi-user web applications and production deployments (recommended)
SSE: Deprecated, maintained for backwards compatibility only
Cloudflare Workers Deployment
Supports HTTP transport only:
HTTP (Streamable): The only supported transport for Cloudflare Workers
Why no stdio? Cloudflare Workers cannot spawn processes
Why no SSE? SSE transport is deprecated and not supported on Cloudflare
Recommendations
For IDE integrations (Cursor, VS Code, Claude Desktop): Use stdio transport
For production deployments: Use HTTP (Streamable) transport
For multi-user applications: Use HTTP (Streamable) transport
For testing with MCP Inspector: Use HTTP (Streamable) transport
Avoid SSE: The SSE transport is deprecated and will be removed in a future version
Authentication Models
stdio Transport (Single-User)
Requires
FIZZY_ACCESS_TOKENenvironment variableOne user per server instance
Ideal for personal CLI/IDE use
HTTP/SSE Transports (Multi-User)
Each user provides their own Fizzy Personal Access Token via
Authorization: Bearer <token>headerMultiple users can connect simultaneously
Each session is isolated with its own FizzyClient instance
Sessions timeout after 30 minutes of inactivity
Optional server-level authentication via
MCP_AUTH_TOKENenvironment variable
Prerequisites
Node.js 18 or higher
A Fizzy account with API access
Quick Start
Get up and running in 3 steps:
Get your Fizzy access token from app.fizzy.do → Profile → API → Personal access tokens
Run with npx (no installation needed):
FIZZY_ACCESS_TOKEN="your-token-here" npx fizzy-mcpConfigure your IDE (e.g., Cursor):
Open Cursor Settings → Features → MCP Servers
Click "Edit in mcp.json" and add:
{ "mcpServers": { "fizzy": { "command": "npx", "args": ["-y", "fizzy-mcp"], "env": { "FIZZY_ACCESS_TOKEN": "your-token-here" } } } }Restart Cursor
That's it! You can now ask your AI assistant to interact with Fizzy.
💡 Note: This Quick Start uses stdio transport for single-user IDE integration. For production deployments or multi-user applications, see the HTTP Transport section.
For detailed installation options and configuration, see the sections below.
Installation
Option 1: Install from npm (recommended)
The fizzy-mcp command will be available globally.
Option 2: Use with npx (no installation required)
Option 3: Install from source
To verify the installation:
Getting Your Fizzy Access Token
Log in to your Fizzy account
Go to your Profile (click your avatar)
Navigate to the API section
Click on Personal access tokens
Click Generate new access token
Give it a description and select permissions:
Read: For read-only access
Read + Write: For full access (recommended)
Copy and save your token securely
⚠️ Important: Keep your access token secret! Anyone with your token can access your Fizzy account.
Configuration
For Cursor IDE
Cursor supports two connection methods: stdio (local process) and HTTP (remote server).
Option 1: Stdio Transport (Local Process - Recommended for Personal Use)
Open Cursor Settings (
Cmd/Ctrl + ,)Search for "MCP" or navigate to Features > MCP Servers
Click Edit in mcp.json or manually edit
~/.cursor/mcp.json:
Using npx (recommended):
If installed globally:
Restart Cursor for changes to take effect
Option 2: HTTP Transport (Remote Server - For Shared/Production Deployments)
Use this method to connect to a remote Fizzy MCP server (e.g., deployed on Cloudflare Workers or a shared Node.js server).
Open Cursor Settings and edit
~/.cursor/mcp.json:
For local HTTP server:
Restart Cursor for changes to take effect
💡 Tip: Use the live server at https://fizzy.fabric.pro/mcp to try Fizzy MCP without running your own server!
For VS Code with GitHub Copilot
Option 1: Stdio Transport (Local Process)
Create or edit .vscode/mcp.json in your workspace (or global settings):
Option 2: HTTP Transport (Remote Server)
For Claude Desktop
Claude Desktop supports stdio transport only.
Edit your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
For Other MCP-Compatible IDEs
Most MCP-compatible IDEs support HTTP transport. Use this configuration pattern:
Replace https://fizzy.fabric.pro/mcp with your own server URL if you're self-hosting.
Running the Server
Stdio Transport (default - for IDE integration)
SSE Transport (for web clients)
Connecting clients:
Streamable HTTP Transport (for production)
Connecting clients:
Cloudflare Workers (for edge deployment)
Deploy to Cloudflare Workers for global distribution with near-zero cold starts:
Important Notes:
Cloudflare Workers only supports HTTP transport (no stdio or SSE)
Multi-user authentication: Each user provides their own Fizzy token via
Authorization: Bearer <token>headerNo FIZZY_ACCESS_TOKEN needed: Unlike stdio transport, Cloudflare deployment uses per-user tokens
Durable Objects: Sessions are managed using Cloudflare Durable Objects for persistence
See the Cloudflare Deployment Guide for detailed instructions.
Environment Variables
Core Configuration
Variable | Required | Default | Description |
| stdio only | — | Your Fizzy API access token (required for stdio transport only). HTTP/SSE users provide tokens via Authorization header. |
| No |
| Fizzy API base URL |
| No |
| Port for HTTP/SSE transport |
| No |
| Default transport (stdio, sse, http) |
| No |
| Logging level (debug, info, warn, error) |
HTTP/SSE Transport Security
When using HTTP or SSE transports, additional security options are available:
Variable | Required | Default | Description |
| No |
| Allowed CORS origins (comma-separated or |
| No | — | Optional bearer token for Client Authentication (authenticates MCP clients connecting to this server) |
| No |
| Set to |
Multi-User Support:
SSE and HTTP transports support multiple users simultaneously:
Each user provides their own Fizzy Personal Access Token via
Authorization: Bearer <token>headerEach session is isolated with its own FizzyClient instance
Users cannot access each other's data
Sessions timeout after 30 minutes of inactivity
Security Model:
Localhost binding (default): Server binds to
127.0.0.1, preventing remote accessCORS origins: Controls which web origins can connect (default: all)
User Authentication: Each user provides their own Fizzy token via Authorization header
Client Authentication: Optional bearer token to authenticate MCP clients connecting to this server
⚠️ Authentication Types:
User Authentication (via
Authorizationheader): Required for SSE/HTTP transports. Each user provides their own Fizzy Personal Access Token.Client Authentication (
MCP_AUTH_TOKEN): Optional. Authenticates MCP clients (like IDE extensions) connecting to this server.Note: For stdio transport, use
FIZZY_ACCESS_TOKENenvironment variable (single-user mode for CLI/IDE integrations).
Available Tools (47 total)
Identity & Accounts (3)
Tool | Description |
| Get current user's identity and accounts |
| List all accessible accounts |
| Get details of a specific account |
Boards (5)
Tool | Description |
| List all boards in an account |
| Get details of a specific board |
| Create a new board |
| Update a board's name |
| Delete a board |
Cards (6)
Tool | Description |
| List cards with optional filters (status, column, assignees, tags, search) |
| Get card details including description, assignees, tags |
| Create a new card with title, description, status, column, assignees, tags, due date |
| Update any card property |
| Delete a card |
Card Actions (9)
Tool | Description |
| Close a card (mark as done) |
| Reopen a closed card |
| Move a card to "Not Now" triage |
| Move a card from triage to a specific column |
| Send a card back to triage (remove from column) |
| Toggle a tag on/off for a card |
| Toggle a user assignment on/off for a card |
| Subscribe to notifications for a card |
| Unsubscribe from notifications for a card |
Comments (5)
Tool | Description |
| List comments on a card |
| Get a specific comment |
| Add a comment to a card (supports HTML) |
| Update a comment |
| Delete a comment |
Reactions (3)
Tool | Description |
| Get all emoji reactions on a comment |
| Add an emoji reaction to a comment |
| Remove an emoji reaction from a comment |
Steps / To-dos (4)
Tool | Description |
| Get a specific to-do step on a card |
| Create a new to-do step on a card |
| Update a step (description or completion status) |
| Delete a step from a card |
Columns (5)
Tool | Description |
| List columns on a board |
| Get column details |
| Create a new column with name and color |
| Update column name/color |
| Delete a column |
Tags (1)
Tool | Description |
| List all tags in an account |
Users (4)
Tool | Description |
| List users in an account |
| Get user details |
| Update user's display name |
| Deactivate a user |
Notifications (4)
Tool | Description |
| List notifications for current user |
| Mark notification as read |
| Mark notification as unread |
| Mark all notifications as read |
Example Prompts
Once configured, you can ask your AI assistant things like:
"Show me all my Fizzy boards"
"What cards are on my Engineering board?"
"Create a new card called 'Fix login bug' on the Engineering board"
"What cards are assigned to me?"
"Move the 'Design review' card to the 'Done' column"
"Add a comment to the authentication card saying 'Ready for review'"
"Show me my unread notifications"
"List all users in my account"
"Create a new column called 'In Review' with blue color on the Engineering board"
Troubleshooting
"FIZZY_ACCESS_TOKEN environment variable is required"
Make sure you've set your access token in the MCP configuration's env section.
"fizzy-mcp: command not found"
Use
npx fizzy-mcpinstead offizzy-mcpOr install globally:
npm install -g fizzy-mcp
Server not appearing in Cursor/VS Code
Restart the IDE after configuration changes
Check the path to the executable is correct
Verify Node.js is installed:
node --versionCheck Cursor's MCP logs for errors
"Fizzy API error: 404 Not Found"
Verify your access token is valid
Check that you're using the correct account slug
Ensure you have permission to access the resource
Connection issues
Test your token directly:
FAQ
How do I get started quickly?
See the Quick Start section above for a 3-step setup guide.
Is my Fizzy access token secure?
Your access token is stored in your local IDE configuration and is never sent anywhere except directly to Fizzy's API. When using HTTP/SSE transports, the token is used server-side only. Always keep your token secret and never commit it to version control.
Can I use this with multiple Fizzy accounts?
Yes! You can configure multiple MCP server instances in your IDE, each with a different access token. Just give them different names in the configuration (e.g., "fizzy-personal", "fizzy-work").
What's the difference between the transport modes?
stdio (default): For single-user IDE integration (Cursor, VS Code, Claude Desktop). Communication happens via standard input/output. Requires
FIZZY_ACCESS_TOKENenvironment variable.http (Streamable HTTP): Recommended for production. Multi-user support with per-user authentication via Authorization headers. Runs an HTTP server with streamable endpoints and health checks. Supported on both Node.js and Cloudflare Workers.
sse (Server-Sent Events): ⚠️ Deprecated - maintained for backwards compatibility only. Multi-user support but uses older protocol version (2024-11-05). Only supported on Node.js. Use HTTP transport instead.
Which transport should I use?
For IDE integrations (Cursor, VS Code, Claude Desktop): Use stdio
For production deployments: Use HTTP (Streamable)
For multi-user applications: Use HTTP (Streamable)
For testing with MCP Inspector: Use HTTP (Streamable)
For Cloudflare Workers deployment: Use HTTP (Streamable) (only option)
How do I test with MCP Inspector?
MCP Inspector is a tool for testing MCP servers. Here's how to use it with Fizzy MCP:
1. Start the HTTP server:
2. Launch MCP Inspector:
3. Configure the connection:
Transport: Select "HTTP"
URL:
http://localhost:3000/mcpHeaders: Add
Authorization: Bearer YOUR_FIZZY_TOKEN
4. Test the connection:
Click "Connect"
You should see the list of 47 available tools
Try calling tools like
fizzy_get_identityorfizzy_get_boards
Note: MCP Inspector does not support the deprecated SSE transport. Always use HTTP transport for testing.
Does this work offline?
No, the server requires an internet connection to communicate with Fizzy's API at app.fizzy.do.
How do I update to the latest version?
If using npx, it will automatically use the latest version. If installed globally, run npm update -g fizzy-mcp. If installed from source, run git pull && npm install && npm run build.
Can I create tags via the API?
No, tag creation is not available via the Fizzy API. However, you can use fizzy_toggle_card_tag which will create a tag if it doesn't exist when toggling it on a card.
What happens if I hit rate limits?
The server includes automatic retry logic with exponential backoff for rate limit errors (429 status). It will retry up to 3 times before failing.
How does ETag caching work?
The server automatically caches GET requests using ETags. When you request the same resource again, it sends the ETag to Fizzy's API. If the resource hasn't changed, Fizzy returns a 304 Not Modified response, saving bandwidth and improving speed.
Can I use this in production?
Yes! You have two options:
Self-hosted: Use the HTTP transport mode with proper security settings (
MCP_AUTH_TOKEN,MCP_ALLOWED_ORIGINS, and considerMCP_BIND_ALL_INTERFACESfor Docker deployments).Cloudflare Workers: Deploy to the edge for global distribution, automatic scaling, and near-zero cold starts. See the Cloudflare Deployment Guide.
Where can I find the Fizzy API documentation?
Official Fizzy API docs: github.com/basecamp/fizzy/blob/main/docs/API.md
API Reference
This server implements all endpoints from the official Fizzy API Documentation:
Category | Endpoints Covered |
Identity | GET /my/identity |
Accounts | Embedded in identity |
Boards | GET, POST, PUT, DELETE |
Cards | GET (list, board, single), POST, PUT, DELETE + filtering |
Comments | GET, POST, DELETE |
Columns | GET (list, single), POST, PUT, DELETE |
Tags | GET (account, board), POST, DELETE |
Users | GET (list, single), PUT, DELETE |
Notifications | GET, POST reading, DELETE reading, POST bulk_reading |
Development
For contributors and developers:
License
MIT
Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch
Add tests for new functionality
Ensure all tests pass:
npm testSubmit a pull request
Author
Created by Preetham Reddy