关于 FrancoLabs
FrancoLabs 是面向 UX 研究团队的平台,用于管理研究并将参与者回答转化为洞察和产品机会。其 MCP 服务支持研究管理、分析、基于 AI 的分析及联系人管理,并通过授权范围控制访问。
主要功能
- 01创建和管理研究
- 02浏览模板与项目
- 03读取回答和分析数据
- 04生成基于 AI 的分析
- 05管理洞察与产品机会
- 06细分研究参与者联系人
适用场景
- 01根据研究目标起草研究方案
- 02检查问卷质量和回答分析
- 03将洞察转化为产品机会
- 04查找并细分研究参与者
MCP 相关
通过 Streamable HTTP 将 MCP 客户端连接到 FrancoLabs,支持 OAuth 2.1 或个人访问令牌。服务提供研究、回答、分析、项目、联系人和机会相关工具,以及模板和问题类型资源;访问受授权范围控制。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://francolabs.vercel.app/mcpclaude mcp add --transport http glauberfrancodesign-francolabs https://francolabs.vercel.app/mcp{"mcpServers":{"glauberfrancodesign-francolabs":{"type":"http","url":"https://francolabs.vercel.app/mcp"}}}在 Cursor 中打开{"servers":{"glauberfrancodesign-francolabs":{"type":"http","url":"https://francolabs.vercel.app/mcp"}}}在 VS Code 中打开{"mcpServers":{"glauberfrancodesign-francolabs":{"type":"http","url":"https://francolabs.vercel.app/mcp"}}}{"mcpServers":{"glauberfrancodesign-francolabs":{"serverUrl":"https://francolabs.vercel.app/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
FrancoLabs MCP Server
通过 Model Context Protocol,将 AI 助手连接到 FrancoLabs——一个 UX 研究平台。让 Claude、ChatGPT 和其他 MCP 客户端代表你创建和管理研究、浏览模板、查看参与者回复和分析数据、运行基于 AI 的分析,并将洞察转化为产品机会。
- 端点:
https://francolabs.vercel.app/mcp - 传输方式: Streamable HTTP(MCP 协议
2025-06-18) - 身份验证: OAuth 2.1(动态客户端注册 + PKCE)或个人访问令牌
- 注册表:
io.github.glauberfrancodesign/francolabs
连接
Claude(claude.ai / Desktop)
Settings → Connectors → Add custom connector → URL:
https://francolabs.vercel.app/mcp
完成 OAuth 授权页面——你可以准确选择要授予的权限范围,也可以切换为只读访问。
ChatGPT
启用 Developer Mode,然后依次选择 Settings → Connectors → Add → 输入相同的 URL。 通过 OAuth 流程进行身份验证。
Claude Code / Cursor(手动令牌)
在 Settings → Integrations 中生成个人访问令牌,然后:
claude mcp add --transport http francolabs \
"https://francolabs.vercel.app/mcp" \
--header "Authorization: Bearer <your-token>"
工具
需要两个权限范围的工具必须同时具备这两个范围。AI 表示该工具会调用大模型并使用 AI 积分;模型只能看到确定性摘要和精选洞察,且电子邮件地址和电话号码会先进行脱敏处理。
模板、工作区和项目
| 工具 | 权限范围 | 说明 |
|---|---|---|
list_question_types | templates:read | 问题/区块类型,包含准确的设置结构和有效示例 |
list_templates | templates:read | 研究模板,可按类别筛选 |
list_workspaces | projects:read | 你所属的工作区(团队)以及你在各工作区中的角色 |
list_projects | projects:read | 你的项目,可按状态筛选 |
get_project | projects:read | 按 ID 获取单个项目 |
get_plan | projects:read | 工作区方案和当前用量:限额、当前执行的限制、授权额度及扩展访问权限的到期时间,以及每人创建 AI 项目的上限 |
create_project | projects:write | 创建项目(可选择指定工作区) |
研究
| 工具 | 权限范围 | 说明 |
|---|---|---|
list_studies | studies:read | 研究,可按状态和/或项目筛选 |
get_study | studies:read | 包含区块和设置的完整研究 |
create_study | studies:write | 创建草稿研究;区块会根据 list_question_types 进行验证 |
update_study | studies:write | 更新标题、区块和项目;settings 为部分更新 |
set_study_status | studies:write | 发布草稿研究、暂停研究、恢复已暂停的研究,或完成研究 |
delete_study | studies:write | 永久删除研究及其回复 |
generate_study_from_objective | studies:read | AI — 将研究目标转化为带类型的研究框架 |
review_study_quality | studies:read | AI — 调查问卷设计评审,并为每个区块提供质量评分 |
回复、分析和洞察
| 工具 | 范围 | 说明 |
|---|---|---|
list_responses | responses:read | 原始参与者回复,按时间从新到旧排序——可能包含受访者填写的个人数据;传入 redact: true 可屏蔽电子邮件和电话号码 |
get_study_analytics | responses:read | 汇总 KPI:回复数、完成率、时长、NPS、分布情况 |
get_study_digest | responses:read | 涵盖每种问题类型的确定性、无 PII 统计摘要 |
run_universal_analysis | responses:read + studies:write | AI — 运行/刷新完整分析(替换未固定的 AI 洞察) |
analysis_chat | responses:read | AI — 提出基于摘要和缓存分析的问题 |
get_insights | responses:read | 精选洞察卡片,已固定的排在前面 |
upsert_insight | responses:read + studies:write | 创建或编辑精选洞察卡片 |
rate_insight | responses:read + studies:write | 记录对洞察的 👍/👎 反馈 |
suggest_tags | responses:read + studies:write | AI — 使用一致的产品分类体系为洞察添加标签 |
set_insight_tags | responses:read + studies:write | 替换某条洞察的标签 |
research_memory_query | responses:read + studies:write | AI — 基于过往精选洞察回答跨研究问题 |
机会与决策
| 工具 | 范围 | 说明 |
|---|---|---|
list_opportunities | responses:read | 从某项研究中提炼出的产品机会 |
create_opportunity_from_insights | responses:read + studies:write | AI — 将洞察提炼为机会草案 |
suggest_next_research_steps | responses:read | AI — 提出 3–5 项后续研究,以降低未解决机会的风险 |
generate_decision_packet | responses:read + studies:write | AI — 面向利益相关者的决策材料包(Markdown) |
list_decision_packets | responses:read | 已为某项研究生成的决策材料包 |
export_opportunity | responses:read + studies:write | 将机会导出到 Linear,作为 issue — 仅限内部用户 |
list_external_task_links | responses:read | 根据某项研究的机会创建的 Linear issue |
联系人(个人数据)
| 工具 | 范围 | 说明 |
|---|---|---|
list_contacts | contacts:read | 工作区内受访者的联系人信息——个人数据(电子邮件、姓名、地区/国家、研究同意、标签、回复数) |
get_contact | contacts:read | 单个联系人及其参与过的研究——个人数据 |
tag_contacts | contacts:write | 为联系人添加/移除标签,以细分受访者——切勿在标签中填写敏感信息 |
create_project 和 create_study 会在工作区中写入数据——传入 workspaceId
(参见 list_workspaces),或省略该参数以默认使用最早创建的工作区。
写入工具还要求用户在研究所属的工作区中具有编辑者角色(所有者、管理员或成员);查看者只能读取。
此外,还公开了两个资源:francolabs://templates 和
francolabs://question-types。
权限范围
templates:read · projects:read · projects:write · studies:read ·
studies:write · responses:read · contacts:read · contacts:write
contacts:read 和 contacts:write 可访问受访者的个人数据(电子邮件、姓名、地区/国家、研究同意、标签和回复历史)。这两个权限默认不启用:同意界面和 Read-only 令牌预设都会将其留空;仅向需要访问联系人库的助手授予这些权限。
responses:read 会返回原始回答,其中也可能包含受访者填写的个人数据。
未授予权限的工具不会显示在 tools/list 中。无论权限范围如何,只读授权都会在服务端禁用所有写入工具。
安全性
- 令牌仅以 SHA-256 哈希形式存储,绝不以明文存储。
- 每个请求都会签发一个短期(5 min)JWT,因此所有数据访问都在用户级行级安全策略下运行;服务角色仅用于查询令牌。
- OAuth 访问令牌和刷新令牌有效期为 30 天;连接有效期绝不会超过 90 天。可随时在「设置 → 集成」中撤销访问权限,客户端也可通过撤销端点(RFC 7009)撤销令牌。
- OAuth 遵循 RFC 9728(受保护资源发现)、RFC 8414(AS 元数据)、RFC 7591(动态客户端注册)和 PKCE S256。
源码
为提高透明度,本仓库镜像了服务端源码。服务以 Supabase Edge Function(src/mcp、src/mcp-oauth、src/_shared)的形式运行。
© FrancoLabs。保留所有权利。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。