关于 Taste Overlap
Taste Overlap 是用于为两人规划夜晚行程的 MCP 服务。它依据 Qloo 的契合度为地点排序、说明推荐理由,并安排活动、餐饮和饮品。
主要功能
- 01按个人及共同口味排列地点
- 02依据 Qloo 契合度计算重合度
- 03用共同口味标签解释推荐
- 04安排活动、餐饮和饮品
适用场景
- 01根据两人的喜好规划城市夜晚行程
- 02查看地点为何符合双方口味
MCP 相关
通过 stdio 和远程 Streamable HTTP 端点提供 `plan_shared_evening` 工具,返回带解释的文本和结构化行程。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://taste-overlap.onrender.com/mcpclaude mcp add --transport http sooonic008-taste-overlap https://taste-overlap.onrender.com/mcp{"mcpServers":{"sooonic008-taste-overlap":{"type":"http","url":"https://taste-overlap.onrender.com/mcp"}}}在 Cursor 中打开{"servers":{"sooonic008-taste-overlap":{"type":"http","url":"https://taste-overlap.onrender.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"sooonic008-taste-overlap":{"type":"http","url":"https://taste-overlap.onrender.com/mcp"}}}{"mcpServers":{"sooonic008-taste-overlap":{"serverUrl":"https://taste-overlap.onrender.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
1| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| city | string | 是 | 城市,例如 Vienna |
| person_a | array | 是 | A 的喜好 |
| person_b | array | 是 | B 的喜好 |
详细介绍
口味重合
两个人,各自有几个喜爱的对象(艺人、电影、节目、书籍、地点)。Qloo 的品味图谱会为 A、B 两个人以及两人共同的口味,分别对你所在城市的地点进行排序。Taste Overlap 只保留两人都排名靠前的地点(取两种亲和度的调和平均值,因此只符合一方口味的选项会被剔除),并用共同的口味标签解释每个推荐,再将它们安排成一晚的行程:活动、用餐,然后小酌。
没有 Qloo 就无法提供结果:重合度是根据 Qloo 为每个人计算的亲和度得出的,而不是由 LLM 猜测。
运行
需要 Node.js 22.19+ 和官方 Qloo harness(受支持的事件接口):
npm install --global @qloo/qloo-harness # qloo --version >= 0.1.26
export QLOO_API_KEY=... # the hackathon key (or: qloo setup --qloo)
export QLOO_BASE_URL=https://hackathon.api.qloo.com
export QLOO_TRUSTED_BASE_URL=https://hackathon.api.qloo.com # the harness only sends a key to an approved endpoint
npm start # http://localhost:8787
无需凭据即可体验:QLOO_TRANSPORT=demo npm start 会通过相同代码重放真实录制的运行结果(demo/vienna.json,11 次 qloo exec 调用)。只有该示例可用(维也纳;Radiohead + Wes Anderson / Taylor Swift + Studio Ghibli);其他输入会返回错误,而不会编造地点。
可选:使用 QLOO_TRANSPORT=rest 和 QLOO_API_KEY 改用直接 REST 客户端(src/qloo.js);还可配置 QLOO_BASE、PORT。
在 Agent 中使用(MCP 工具)
**远程,无需安装:**在线演示也支持 MCP,地址为 https://taste-overlap.onrender.com/mcp(可流式传输的 HTTP,返回 JSON 答案)。在 claude.ai 或 Claude 应用中,前往 设置 → 连接器 → 添加自定义连接器,粘贴该 URL。工具调用受演示版的每位访客和每日限额约束。
本地(stdio):
Taste Overlap 也可作为 Agent 工具使用:mcp-server.js 是一个零依赖的 MCP stdio 服务,提供一个工具 plan_shared_evening(city、person_a[]、person_b[])。它会以文本和结构化内容的形式返回附有解释的晚间计划,任何 MCP 客户端都可以调用它:
claude mcp add taste-overlap -- node /path/to/taste-overlap/mcp-server.js # Claude Code
# or in claude_desktop_config.json / Cursor: {"command": "node", "args": ["/path/to/mcp-server.js"],
# "env": {"QLOO_API_KEY": "...", "QLOO_BASE_URL": "https://hackathon.api.qloo.com", "QLOO_TRUSTED_BASE_URL": "https://hackathon.api.qloo.com"}}
没有密钥时,QLOO_TRANSPORT=demo 会让该工具返回录制的维也纳示例。
测试
node --test
工作原理
src/mcp.js(默认传输方式)- 一个持续运行的qloo mcp进程(harness 的规范 MCP 适配器)为所有工作流提供qloo_<op>服务;在小型主机上,每次调用耗时约 0.5-1.2 秒,而启动新的qloo exec则需超过 30 秒。设置QLOO_TRANSPORT=exec可切换回每次调用执行一次qloo exec。src/harness.js- Qloo 工作流:分别为 A、B 和两人共同口味调用recommend(target_type: place,将喜爱对象作为signals,将所在城市设为filter_location);使用entity_tags获取解释每个推荐的标签。harness 会解析名称并在调用 Qloo 前验证输入;当名称存在歧义时(status: needs_input),客户端会选取 Qloo 排名最高的非专辑候选项,用其实体 ID 重试一次,并返回该选项。工作流名称是固定的,用户文本通过 stdin 传入。- 每个推荐的理由来自 Qloo 为每项结果提供的
explainability(signal.interests.entities):哪些喜爱对象影响了该地点,以及影响程度。 src/demo.js- 录制并重放真实的 harness 信封,供无需凭据的演示使用。src/qloo.js(备用方案)- 使用/search解析每个喜爱对象,并通过/v2/insights对地点排序(filter.type=urn:entity:place、signal.interests.entities、filter.location.query)。密钥作为标头由服务端发送,不会传到浏览器。src/overlap.js- 纯逻辑:共同推荐、理由、晚间行程顺序(经过单元测试)。Qloo 每次调用最多返回 20 个地点,而两种口味可能没有任何共同地点(实测案例:柏林,Daft Punk + Christopher Nolan 对比 Adele + Pixar)。优先显示真实的重合地点;其余位置从共同口味列表补充,并标记为“combined taste”。如果某地点在两份个人列表中都只符合一方口味,就不会以这种方式再次出现。src/plan.js- 三次 Qloo 调用(A、B、两人共同口味)-> 重合结果 -> 附有解释的计划。server.js- 零依赖的 Node 服务,提供public/和POST /api/plan。mcp-server.js- 将同一计划作为 MCP 工具提供给 Agent;src/transport.js为两者选择 Qloo 传输方式。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。