FrancoLabs
UX research platform: manage studies, browse templates, read responses and analytics.
Open source Repository Open in the app JSON README (API)
About
UX research platform: manage studies, browse templates, read responses and analytics.
Details
- Kind
- MCP servers
- Topic
- Marketing & analytics
- Publisher
- glauberfrancodesign
- Origin
- official
- Category
- ferramentas
- Transport
- http
- Version
- 1.0.0
- Last push
- 2026-06-12T00:13:44Z
- Repository state
- ativo
- Language
- TypeScript
- Added
- 2026-08-29 03:02:51
- Updated
- 2026-08-29 03:02:51
- Origin id
io.github.glauberfrancodesign/francolabs
README
# FrancoLabs MCP Server Connect AI assistants to [FrancoLabs](https://francolabs.vercel.app) — a UX research platform — over the [Model Context Protocol](https://modelcontextprotocol.io). 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](https://francolabs.vercel.app/settings/integrations), then: ```bash 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.