mcpField
F
FrancoLabs

FrancoLabs

Remote
francolabs.vercel.appData & Analytics0Updated 1w ago

About FrancoLabs

FrancoLabs is a UX research platform for teams managing studies and turning participant responses into insights and product opportunities. Its MCP server supports study operations, analytics, AI-grounded analysis, and contact management with scoped access.

Key features

  1. 01Create and manage studies
  2. 02Browse templates and projects
  3. 03Read responses and analytics
  4. 04Generate AI-grounded analysis
  5. 05Manage insights and opportunities
  6. 06Segment respondent contacts

Use cases

  1. 01Draft a study from a research objective
  2. 02Review survey quality and response analytics
  3. 03Turn insights into product opportunities
  4. 04Find and segment research participants

MCP support

Connects MCP clients to FrancoLabs over Streamable HTTP, with OAuth 2.1 or personal access tokens. It exposes study, response, analysis, project, contact, and opportunity tools, plus template and question-type resources; granted scopes control access.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://francolabs.vercel.app/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

Details

From the project 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

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.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.