FrancoLabs

Official registry Search and web

UX research platform: manage studies, browse templates, read responses and analytics.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

Remote (streamable-http)
Claude Code
claude mcp add --transport http francolabs 'https://francolabs.vercel.app/mcp'
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "francolabs": {
            "type": "http",
            "url": "https://francolabs.vercel.app/mcp"
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. FrancoLabs MCP Server
  2. Connect
  3. Tools
  4. Scopes
  5. Security
  6. Source

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

A tool listed with two scopes needs both. AI marks tools that call a language model and use AI credits; the model only sees the deterministic digest and curated insights, with e-mail addresses and phone numbers masked first.

Templates, workspaces and projects
ToolScopeDescription
list_question_typestemplates:readQuestion/block types with the exact settings shape and a valid example
list_templatestemplates:readStudy templates, optionally by category
list_workspacesprojects:readWorkspaces (teams) you belong to and your role in each
list_projectsprojects:readYour projects, optionally by status
get_projectprojects:readA single project by id
get_planprojects:readThe workspace plan and current usage: limits, what is enforced now, grants and when extended access ends, and the per-person AI-create cap
create_projectprojects:writeCreate a project (optionally in a specific workspace)
Studies
ToolScopeDescription
list_studiesstudies:readStudies, filtered by status and/or project
get_studystudies:readA full study with blocks and settings
create_studystudies:writeCreate a Draft study; blocks are validated against list_question_types
update_studystudies:writeUpdate title, blocks, project; settings is a partial update
set_study_statusstudies:writeLaunch a Draft, pause, resume a Paused study, or complete it
delete_studystudies:writePermanently delete a study and its responses
generate_study_from_objectivestudies:readAI — turn a research objective into a typed study skeleton
review_study_qualitystudies:readAI — survey-design review with a quality score per block
Responses, analysis and insights
ToolScopeDescription
list_responsesresponses:readRaw participant responses, newest first — may contain personal data written by respondents; pass redact: true to mask e-mails and phones
get_study_analyticsresponses:readAggregated KPIs: responses, completion, duration, NPS, distributions
get_study_digestresponses:readDeterministic, PII-free statistical digest for every question type
run_universal_analysisresponses:read + studies:writeAI — run/refresh the full analysis (replaces non-pinned AI insights)
analysis_chatresponses:readAI — ask a question grounded in the digest and cached analysis
get_insightsresponses:readCurated insight cards, pinned first
upsert_insightresponses:read + studies:writeCreate or edit a curated insight card
rate_insightresponses:read + studies:writeRecord 👍/👎 feedback on an insight
suggest_tagsresponses:read + studies:writeAI — tag insights with a consistent product taxonomy
set_insight_tagsresponses:read + studies:writeReplace the tags of one insight
research_memory_queryresponses:read + studies:writeAI — cross-study question answered from past curated insights
Opportunities and decisions
ToolScopeDescription
list_opportunitiesresponses:readProduct opportunities distilled for a study
create_opportunity_from_insightsresponses:read + studies:writeAI — distill insights into draft opportunities
suggest_next_research_stepsresponses:readAI — 3–5 follow-up studies that de-risk open opportunities
generate_decision_packetresponses:read + studies:writeAI — stakeholder-ready decision package (Markdown)
list_decision_packetsresponses:readDecision packages already generated for a study
export_opportunityresponses:read + studies:writeExport an opportunity to Linear as an issue — internal users only
list_external_task_linksresponses:readLinear issues already created from a study's opportunities
Contacts (personal data)
ToolScopeDescription
list_contactscontacts:readRespondent contacts of the workspace — personal data (e-mail, name, locale/country, research consent, tags, response counts)
get_contactcontacts:readOne contact with the studies they answered — personal data
tag_contactscontacts:writeAdd/remove tags on contacts to segment respondents — never put sensitive information in tags

create_project and create_study write into a workspace — pass workspaceId (see list_workspaces), or omit it to use your oldest workspace by default. Write tools also require an editor role (owner, admin or member) in the study's workspace; viewers can only read.

Two resources are also exposed: francolabs://templates and francolabs://question-types.

Scopes

templates:read · projects:read · projects:write · studies:read · studies:write · responses:read · contacts:read · contacts:write

contacts:read and contacts:write give access to personal data of your respondents (e-mail, name, locale/country, research consent, tags and response history). They are opt-in: the consent screen and the Read-only token preset leave them unchecked; grant them only to assistants that need your contacts base. responses:read returns raw answers, which can also contain personal data typed by respondents.

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.
  • OAuth access and refresh tokens last 30 days; a connection never outlives 90 days. Access is revocable anytime from Settings → Integrations, and clients can revoke a token at the revocation endpoint (RFC 7009).
  • 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.

Frequently asked questions

What is FrancoLabs?

UX research platform: manage studies, browse templates, read responses and analytics.

How do I install FrancoLabs?

It runs as a remote server. In Claude Code: claude mcp add --transport http francolabs 'https://francolabs.vercel.app/mcp'. For other clients, paste the JSON configuration from this page into their MCP settings.

Does FrancoLabs need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is FrancoLabs open source?

Its code is public on GitHub, but the repository does not declare a standard license.

Who maintains FrancoLabs?

It is published by glauberfrancodesign. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.