Productboard MCP — Curve & Flex

Productboard MCP — Curve & Flex

Enables reading and writing Productboard data via MCP tools, with Google OAuth login, per-user allowlist, and workspace binding for secure, audited access.

Category
Visit Server

README

Productboard MCP — Curve & Flex

Custom MCP server exposing read/write tools over the Productboard v2 API, with Google-OAuth 2.1 login, a per-email allowlist, and per-user workspace binding (Curve + Flex served from one Cloud Run service).

This is the canonical source. Baseline captured from the source of the May 26 2026 production deploy and committed as v1 (July 2026). Earlier local prototypes live in ../_Archive/ — do not edit those; they are pre-OAuth and out of date.

Layout

  • src/server.py — the MCP tools (the tool surface Claude sees)
  • src/productboard.py — Productboard v2 API client (auth, retries, pagination, notes)
  • src/auth.py — the MCP's own OAuth 2.1 (Google IDP + JWT). NOT Productboard auth.
  • src/allowlist.py — who may use the MCP + their workspace binding
  • Dockerfile, requirements.txt, deploy.sh — build & deploy
  • ROADMAP.md — forward plan

Deploy

./deploy.sh                  # READ_ONLY=true (write tools disabled) — default
READ_ONLY=false ./deploy.sh  # enable write tools

Target: project productboard-mcp, region us-central1, service productboard-mcp (gcloud run deploy --source=.). Secrets — the per-workspace Productboard API tokens, the OAuth client secret, and the JWT signing key — are mounted from Secret Manager. Never store them here.

Rules

  • No secrets in the repo. Tokens live in Secret Manager; src/allowlist.py is the only access config in-tree, and git history is its audit trail.
  • Safe surface by design: no create-feature tool, no permanent delete (soft-delete via archived). Keep it that way.
  • Write access is per-user: only allowlist entries with writer: True can call the write tools, even when the service runs READ_ONLY=false (the env var stays as the global kill switch). Currently: Luke only.

Revocation

  • One user, immediately: set tokens_valid_after on their allowlist entry (or remove the entry), commit, redeploy. Takes effect on their next request — permissions are re-derived from the allowlist on every call, not frozen into tokens.
  • Everyone at once (break-glass): bump the TOKEN_VERSION env var (gcloud run services update productboard-mcp --region=us-central1 --update-env-vars=TOKEN_VERSION=<n+1>). All outstanding tokens die instantly; users re-auth via Google. No code change, no key rotation.
  • Refresh tokens live 7 days; offboarding must still remove the allowlist entry (leaver-checklist item — disabling the Google account alone does NOT cut existing sessions).

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured