FrancoLabs MCP Server
Connect AI assistants to the FrancoLabs UX research platform to create and manage studies, browse templates, read participant responses and analytics, and turn insights into product opportunities.
README
FrancoLabs MCP Server
Connect AI assistants to FrancoLabs — a UX research platform — over the Model Context Protocol. Let Claude, ChatGPT and other MCP clients create and manage studies, browse templates, read participant responses and analytics, run AI-grounded analysis, and turn insights into product opportunities on your behalf.
- Endpoint:
https://francolabs.vercel.app/mcp - Transport: Streamable HTTP (MCP protocol
2025-06-18) - Auth: OAuth 2.1 (Dynamic Client Registration + PKCE) or Personal Access Token
- Registry:
io.github.glauberfrancodesign/francolabs
Connect
Claude (claude.ai / Desktop)
Settings → Connectors → Add custom connector → URL:
https://francolabs.vercel.app/mcp
Complete the OAuth consent screen — you choose exactly which scopes to grant and can toggle read-only access.
ChatGPT
Enable Developer Mode, then Settings → Connectors → Add → same URL. Authenticate via the OAuth flow.
Claude Code / Cursor (manual token)
Generate a Personal Access Token in Settings → Integrations, then:
claude mcp add --transport http francolabs \
"https://francolabs.vercel.app/mcp" \
--header "Authorization: Bearer <your-token>"
Tools
| Tool | Scope | Description |
|---|---|---|
list_question_types |
templates:read |
List question/block types and their settings |
list_templates |
templates:read |
List study templates, optionally by category |
list_workspaces |
projects:read |
List the workspaces (teams) you belong to and your role in each |
list_projects |
projects:read |
List your projects |
get_project |
projects:read |
Get a single project by id |
create_project |
projects:write |
Create a new project (optionally in a specific workspace) |
list_studies |
studies:read |
List studies (filter by status/project) |
get_study |
studies:read |
Get a full study with blocks and settings |
create_study |
studies:write |
Create a study (auto-scaffolds welcome + thank-you) |
update_study |
studies:write |
Update title, blocks, settings or project |
set_study_status |
studies:write |
Launch / pause / resume / complete a study |
delete_study |
studies:write |
Permanently delete a study and its responses |
list_responses |
responses:read |
List participant responses (most recent first) |
get_study_analytics |
responses:read |
Aggregated KPIs: NPS, completion, distributions |
get_study_digest |
responses:read |
Deterministic, PII-free statistical digest of a study's results |
run_universal_analysis |
responses:read |
Run/refresh the full AI analysis (digest + grounded synthesis) |
analysis_chat |
responses:read |
Ask a natural-language question, grounded in the study's analysis |
get_insights |
responses:read |
List curated insight cards for a study |
upsert_insight |
studies:write |
Create or update a curated insight card |
generate_study_from_objective |
studies:read |
Turn a research objective into a typed study skeleton |
review_study_quality |
studies:read |
Review a study's questionnaire for survey-design issues |
list_opportunities |
responses:read |
List product opportunities distilled from a study's insights |
create_opportunity_from_insights |
studies:write |
Distill insights into decision-ready product opportunities |
create_project and create_study write into a workspace — pass workspaceId
(see list_workspaces), or omit it to use your oldest workspace by default.
Two resources are also exposed: francolabs://templates and
francolabs://question-types.
Scopes
templates:read · projects:read · projects:write · studies:read ·
studies:write · responses:read
Tools you didn't grant are hidden from tools/list. A read-only grant blocks
every write tool server-side, regardless of scopes.
Security
- Tokens are stored only as SHA-256 hashes — never in plaintext.
- Each request mints a short-lived (5 min) JWT so all data access runs under per-user row-level security; the service role is used only for the token lookup.
- Access is revocable anytime from Settings → Integrations.
- OAuth follows RFC 9728 (protected-resource discovery), RFC 8414 (AS metadata), RFC 7591 (dynamic client registration) and PKCE S256.
Source
This repository mirrors the server's source for transparency. The server runs as
a Supabase Edge Function (src/mcp, src/mcp-oauth, src/_shared).
© FrancoLabs. All rights reserved.
Recommended Servers
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.