尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

AI侍酒师:用MCP协议将专业葡萄酒配对API集成到Claude与Cursor

AI侍酒师:用MCP协议将专业葡萄酒配对API集成到Claude与Cursor 1. 项目概述当AI助手化身侍酒师如果你和我一样既是个技术爱好者又对美食美酒有点讲究那你肯定遇到过这样的场景周末想在家做顿大餐食材都买好了却对着酒柜犯了难——这块牛排到底该配赤霞珠还是西拉朋友聚会要做个海鲜意面该开瓶白葡萄酒还是桃红以前我们得翻书、查资料或者干脆凭感觉。现在有了sommelierx/mcp-server这个项目你可以直接问你的AI助手比如Claude、Cursor让它调用专业的侍酒师算法来给你答案。这本质上是一个模型上下文协议Model Context Protocol MCP服务器它把复杂的葡萄酒配餐知识封装成了AI助手可以轻松调用的工具。简单来说它让你的AI从一个“码农”或“文案写手”瞬间变成了一个随叫随到的“数字侍酒师”。这个项目的核心价值在于专业化与场景化。它没有尝试让AI去学习所有关于葡萄酒的浩如烟海的知识而是通过MCP这个标准接口连接到了一个经过专业训练的、基于“食物DNA”和“葡萄酒DNA”维度进行匹配的算法引擎。这意味着你得到的建议不是AI根据网络文本随机生成的而是基于一套科学的、可量化的配对逻辑。对于开发者而言它展示了如何将一个垂直领域的专业服务SommelierX的葡萄酒配对API无缝集成到日益流行的AI智能体工作流中对于普通用户它则提供了一种极其便捷的、对话式的专业生活顾问体验。接下来我将从技术实现、实操配置、核心原理到应用技巧为你完整拆解这个有趣的“AI美食”跨界项目。2. MCP架构与SommelierX服务深度解析2.1 模型上下文协议MCP是什么为什么是它在深入SommelierX之前我们必须先理解它所依赖的基石——MCP。你可以把MCP想象成AI世界里的“USB-C接口”标准。在MCP出现之前每个AI应用如Claude Desktop、Cursor如果想接入外部工具如数据库、计算器、专业API都需要开发者为其编写特定的、紧耦合的插件或适配器工作量大且难以复用。MCP由Anthropic提出旨在标准化AI应用与外部资源和工具之间的通信方式。它定义了一套简单的协议工具Tools提供能力资源Resources提供信息提示Prompts提供对话模板。一个MCP服务器就像本项目就是一个实现了该协议的程序它向兼容MCP的客户端如Claude Desktop宣告“嗨我这里有这些工具可用。” 客户端则负责在用户对话中根据上下文智能地调用这些工具。选择MCP来实现SommelierX服务是一个极具前瞻性的决策原因有三一次开发多处运行只要客户端支持MCP目前包括Claude Desktop、Cursor、Windsurf、Continue.dev等你的侍酒师工具就能立即生效无需为每个平台单独开发插件。降低AI幻觉葡萄酒配对涉及大量精确的、结构化的知识如葡萄品种、产区、风味特征。通过MCP将查询导向专业的API而非依赖AI大模型自身可能不准确或过时的知识库能极大提升回答的可靠性和专业性。实现复杂逻辑像group_pairing为多道菜选酒这样的功能需要复杂的跨菜品权衡计算这远超出当前大模型通过简单推理就能完成的范围。MCP将复杂逻辑后置到专用服务器AI助手只需负责自然的语言交互和结果呈现。2.2 SommelierX API藏在幕后的“味觉大脑”sommelierx/mcp-server本身并不包含配对算法它是一个精巧的适配器或桥接器。它的核心工作是接收来自AI助手的自然语言请求将其转换为对api.sommelierx.com的标准化API调用再将结构化的API响应返回给AI助手由助手以友好的对话形式呈现给用户。根据其文档和公开信息SommelierX API的配对算法是其核心竞争力。它宣称基于“17种食物DNA维度”和“19种葡萄酒DNA维度”进行计算。这听起来很抽象我来尝试用更易懂的方式解读食物DNA维度可能包括口感油腻、清爽、酥脆、风味强度清淡、浓郁、主要味觉甜、酸、苦、咸、鲜、烹饪方式烤、煎、炖、主要成分肉类、海鲜、奶酪、香料等。例如“烤肋眼牛排”的DNA可能被编码为【高脂肪、高蛋白、浓郁、咸鲜、经过美拉德反应焦香】。葡萄酒DNA维度可能包括酒体轻盈、中等、饱满、单宁低、中、高、酸度低、中、高、甜度干型、半干、甜型、主要风味红色水果、黑色水果、柑橘、热带水果、草本、香料等。例如“巴罗洛Barolo”的DNA可能被编码为【高单宁、高酸度、饱满酒体、风味红色水果、玫瑰、焦油、泥土】。配对算法的工作就是计算这两组多维向量之间的“相容性分数”。高脂肪的食物如牛排需要高单宁的葡萄酒来“切割”油腻感酸度高的食物如柠檬汁腌鱼需要酸度匹配或更高的葡萄酒来平衡甜味的食物如巧克力慕斯则需要更甜的葡萄酒否则酒会显得苦涩。注意虽然项目文档没有公开具体的维度定义和算法细节但作为使用者我们不必深究其数学模型。关键在于理解其输出——它提供的不是模糊的“红酒配红肉白酒配白肉”而是针对具体菜品、带有匹配分数和详细理由的推荐列表这才是其专业价值的体现。3. 从零开始全平台配置与深度使用指南3.1 环境准备与基础配置首先你需要一个兼容MCP的客户端。目前最主流、对个人用户最友好的是Claude Desktop应用。以下配置以macOS为例Windows和Linux用户路径不同但逻辑一致。安装Node.js确保系统已安装Node.js 18.0.0或更高版本。在终端输入node -v检查。定位配置文件Claude Desktop的MCP配置文件通常位于macOS:~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:%APPDATA%\Claude\claude_desktop_config.jsonLinux:~/.config/Claude/claude_desktop_config.json如果文件或目录不存在需要手动创建。编写基础配置用任何文本编辑器打开或创建上述JSON文件。初始内容可能为空或已有其他MCP服务器配置。我们需要添加sommelierx服务器。{ mcpServers: { sommelierx: { command: npx, args: [sommelierx/mcp-server] } } }这个配置告诉Claude“当需要葡萄酒配对时去执行npx sommelierx/mcp-server命令启动一个本地服务器并通过MCP协议与之通信。”npx是Node.js的包执行器它会自动下载并运行指定的npm包你无需手动全局安装。重启与验证保存配置文件后完全退出并重启Claude Desktop应用。这是关键一步因为配置只在启动时被读取。重启后在Claude的聊天界面你可以尝试问“What wine goes with grilled salmon?”什么酒配烤三文鱼。如果配置成功Claude会在后台调用工具并给出一个结构化的、带有具体酒款建议的答案而不再是泛泛而谈。3.2 进阶配置解锁专业功能与支付方式基础配置使用的是SommelierX的免费层每日50次调用。要使用pair_wine_with_recipe_url根据食谱链接配酒或group_pairing为整套菜单配酒等专业工具你需要进行身份验证。项目提供了两种非常有趣的方案方案一API密钥订阅制这是最传统的方式。你需要去 api.sommelierx.com 注册并获取一个格式为sk_live_...的API密钥。Pro套餐月费49美元提供每月500次调用。然后将配置更新为{ mcpServers: { sommelierx: { command: npx, args: [sommelierx/mcp-server], env: { SOMMELIERX_API_KEY: sk_live_your_actual_key_here } } } }实操心得将API密钥放在环境变量(env)中而不是硬编码在命令行参数里是更安全、更标准的做法。这避免了密钥可能出现在进程列表或日志中。方案二x402支付按次付费这是本项目最具创新性的特性之一。x402是一个由Coinbase推出的协议允许AI智能体代表用户直接支付小额费用来使用服务。你不需要配置API密钥。当AI助手发起一个需要付费的调用时SommelierX服务器会返回一个402 Payment Required的响应其中包含支付金额如0.02 USDC和收款地址。一个兼容x402的AI助手或钱包插件会自动处理这笔微支付。这种模式非常适合低频、尝鲜用户不想订阅只想偶尔用几次。AI智能体经济设想一个为你管理晚餐的AI管家它有自己的钱包可以自主决策并支付这类专业服务费用。去中心化应用服务的使用和支付完全在链上完成无需注册账户。重要提示截至当前主流的Claude Desktop、Cursor等客户端尚未原生集成x402支付处理器。因此对于大多数个人用户如果没有自己构建集成x402的AI代理方案一API密钥是唯一可立即使用的付费方式。方案二更多展示了未来AI代理自主服务消费的一种可能性。3.3 在Cursor、Windsurf等开发工具中的配置对于开发者常用的AI编码助手Cursor或Windsurf配置逻辑完全相同只是配置文件的存放位置不同。Cursor配置文件通常位于~/.cursor/mcp.json。你需要在此文件中以类似的JSON结构定义MCP服务器。Windsurf / Continue.dev它们通常有图形化的设置界面或在特定配置文件中如~/.continue/config.json支持MCP服务器配置。核心原则不变在对应客户端的配置中指定启动sommelierx/mcp-server的命令和必要的环境变量。4. 核心工具详解与实战对话技巧配置完成后你就可以在对话中尽情使用这位“数字侍酒师”了。理解每个工具的特性和最佳使用场景能让你的提问更精准获得更满意的答案。4.1 六大工具场景化应用指南下表详细拆解了每个工具的能力、适用场景和提问技巧工具名称核心能力最佳使用场景提问技巧与示例pair_wine_with_ingredients根据一组食材推荐葡萄酒。当你手头有具体食材但还没想好怎么做或者想做一道融合菜时。技巧列出核心、风味强烈的食材。避免“盐、胡椒”等通用调料。示例“我有羊排、迷迭香和大蒜该配什么酒” -[lamb chop, rosemary, garlic]pair_wine_with_meal根据一道菜的名称推荐葡萄酒。最常见场景。已知要做的经典菜式。技巧使用准确的、通用的菜名。对于地方特色菜可附加简短描述。示例“今晚做‘勃艮第红酒炖牛肉’(Boeuf Bourguignon)配什么酒”find_meals_for_wine“反向配对”。根据已有的葡萄酒推荐菜肴。朋友送了一瓶好酒你想做顿饭来搭配它。技巧提供尽可能具体的酒款信息品种、产区、风格。示例“我有一瓶新西兰马尔堡(Marlborough)的长相思(Sauvignon Blanc)适合搭配哪些菜肴”search_ingredients/search_meals在数据库内搜索食材或菜品。用于确认配对工具是否能正确识别你输入的食材或菜名。技巧当配对结果不理想时可先用此工具查询官方数据库使用的标准术语。示例“搜索‘和牛’(Wagyu)”pair_wine_with_recipe_url(Pro)分析在线食谱网页提取食材并配对。看到网上心仪的食谱想一键获得配酒方案。技巧确保链接是公开可访问的、主流的食谱网站如AllRecipes, BBC Good Food成功率更高。示例“分析这个食谱并推荐酒[食谱链接]”group_pairing(Pro)为包含多道菜的完整菜单推荐一款“百搭酒”。策划晚宴菜单时希望有一款酒能从开胃菜贯穿到甜品。技巧清晰列出菜单中的每一道菜。算法会寻找能平衡所有菜肴风味的折中选择。示例“我的菜单是生蚝、烤鸡、芝士拼盘。选一款酒搭配全部。”4.2 高阶对话模式与思维链引导要让AI助手更好地利用这些工具你需要用自然语言清晰地表达需求。AI会根据你的问题类型自动选择最合适的工具。以下是一些高阶对话模式1. 复杂场景拆解用户“我周末要请客主菜是香煎鸭胸配橙子酱前菜是山羊奶酪沙拉甜品是焦糖布丁。帮我规划一下酒水最好能有一款红酒贯穿主菜和奶酪再为甜品选个搭配。”AI思维链识别出这是一个多道菜的宴请。它可能会先调用group_pairing看看有没有一款酒能兼顾鸭胸和沙拉。然后针对风格特殊的甜品甜单独调用pair_wine_with_meal为“焦糖布丁”推荐一款甜酒如苏玳或托卡伊。最后在回复中整合两个建议。2. 探索与比较用户“‘番茄罗勒意面’配灰皮诺(Pinot Grigio)和配基安蒂(Chianti)有什么不同哪个更合适”AI思维链虽然工具不直接提供“比较”功能但AI可以分别调用pair_wine_with_meal工具查询“番茄罗勒意面”与这两款酒的配对结果理论上两款酒都会出现在推荐列表中但分数不同然后根据返回的匹配分数和理由描述为你合成一个对比分析。3. 结合其他知识用户“我想做一道适合夏天户外聚餐、容易准备、且能搭配清爽白葡萄酒的菜。”AI思维链这是一个综合请求。AI首先需要理解“清爽白葡萄酒”的风格可能是长相思、灰皮诺、阿尔巴利诺等。它可能会先调用search_meals或结合其自身的烹饪知识生成一些适合夏季的轻食菜谱建议如鲜虾沙拉、冷汤。然后针对这些候选菜谱再调用pair_wine_with_meal来验证和推荐具体的酒款。注意事项AI助手调用MCP工具是基于其对用户意图的理解。提问越精准意图越明确它选择正确工具的概率就越高。如果发现AI没有调用侍酒师工具可以尝试更直接地提问例如“使用SommelierX工具为烤羊排推荐一款葡萄酒。”5. 开发与集成从使用者到贡献者如果你不满足于仅仅使用这个MCP服务器还想深入了解其运作机制甚至进行二次开发或集成那么这部分内容将为你提供指引。5.1 本地开发环境搭建与代码走读首先将项目克隆到本地git clone https://github.com/rogertheunissenmerge-oss/mcp-server.git cd mcp-server npm install项目结构通常包含以下几个关键部分src/index.ts这是MCP服务器的入口文件。它使用modelcontextprotocol/sdk来创建服务器定义工具Tools并处理来自客户端的请求。src/tools/目录下可能包含了各个配对工具的具体实现文件。每个工具文件会定义输入参数如ingredients: string[]、调用逻辑即如何构造请求到SommelierX API和输出格式。package.json定义了依赖主要是modelcontextprotocol/sdk和用于HTTP请求的库如axios或node-fetch。运行开发模式可以实时看到日志方便调试npm run dev在开发模式下你可以修改代码并观察MCP服务器的重新加载。要测试你的修改你需要一个MCP客户端。一个简单的方法是使用MCP Inspector或MCP CLI工具它们可以让你直接向本地服务器发送请求而无需通过Claude Desktop。5.2 核心调用流程源码级解析让我们以pair_wine_with_meal工具为例推测其内部实现逻辑基于标准MCP模式工具注册在index.ts中服务器启动时会向客户端宣告自己提供的工具列表。每个工具都有唯一的name、description和inputSchema定义参数格式。// 伪代码示例 server.setRequestHandler(ServerMethods.INITIALIZE, async (request) { return { protocolVersion: 2024-11-05, capabilities: { tools: [{ name: pair_wine_with_meal, description: Find wines that pair well with a given meal or dish., inputSchema: { type: object, properties: { meal: { type: string, description: Name of the meal/dish } }, required: [meal] } }] } }; });请求处理当用户在Claude中提问“What wine with beef stew?”Claude识别意图后会向MCP服务器发送一个tools/call请求。{ method: tools/call, params: { name: pair_wine_with_meal, arguments: { meal: beef stew } } }API桥接服务器收到请求后在对应的工具处理函数中会构建一个到https://api.sommelierx.com/v1/pairings/meal的HTTP POST请求。请求体中包含meal参数并在请求头中带上Authorization: Bearer ${API_KEY}如果配置了的话。// 伪代码示例 async function handlePairWineWithMeal(args: { meal: string }) { const response await fetch(${API_BASE_URL}/pairings/meal, { method: POST, headers: { Authorization: Bearer ${process.env.SOMMELIERX_API_KEY} }, body: JSON.stringify({ query: args.meal }) }); const data await response.json(); return data; // 包含推荐酒款列表、分数等信息 }响应返回服务器将SommelierX API返回的结构化数据JSON格式包装后返回给Claude客户端。{ content: [{ type: text, text: For beef stew, here are the top pairing recommendations:\n1. **Syrah/Shiraz** (Score: 95/100) - ...\n2. **Cabernet Sauvignon** (Score: 92/100) - ... }] }结果呈现Claude接收到这个结构化内容后将其转化为流畅的自然语言回复呈现给用户。5.3 扩展思路构建你自己的“专业顾问”MCP服务器这个项目是一个完美的范本展示了如何将任何专业领域的API“MCP化”。假设你有一个“咖啡烘焙曲线推荐API”或“健身动作纠错API”你可以遵循同样的模式构建自己的MCP服务器定义工具你的API提供哪些核心功能每个功能就是一个MCP工具。例如suggest_roast_profile根据咖啡豆产地建议烘焙曲线、analyze_squat_form根据描述分析深蹲姿势问题。实现桥接使用modelcontextprotocol/sdk创建服务器为每个工具编写处理函数在函数内调用你的后端API。处理认证参考本项目支持环境变量API密钥或创新的支付方式。配置与分享用户只需在他们的MCP客户端配置中指向你的服务器可以是本地命令也可以是远程部署的服务器地址即可获得一个专属的“咖啡烘焙师”或“健身教练”AI助手。这种模式极大地降低了专业服务接入AI生态的门槛让垂直领域的专业知识能够以最自然的方式——对话提供给终端用户。6. 常见问题、排查与性能优化在实际使用和开发过程中你可能会遇到一些问题。以下是一些常见情况的排查思路和解决方案。6.1 配置与连接问题问题现象可能原因排查步骤与解决方案Claude完全无视葡萄酒相关问题不调用工具。1. 配置文件路径错误。2. 配置文件格式错误JSON语法错误。3. Claude Desktop未重启。1.检查路径确认配置文件在正确的操作系统路径下。2.验证JSON使用在线JSON校验工具或jq . config.json检查语法。3.彻底重启完全退出Claude Desktop包括任务栏/托盘图标再重新打开。Claude提示“无法连接到MCP服务器”或“工具调用失败”。1.npx命令执行失败网络问题或包名错误。2. Node.js版本过低。3. 服务器启动后立即崩溃。1.手动测试在终端运行npx sommelierx/mcp-server看能否正常启动并输出日志。如果失败检查网络或包名。2.检查版本运行node -v确保 18.0.0。3.查看日志在Claude Desktop的设置中或系统控制台查找更详细的错误信息。工具被调用但返回“认证失败”或“额度不足”。1. API密钥未设置或设置错误。2. 免费额度50次/日已用尽。3. 环境变量未生效。1.核对密钥确认SOMMELIERX_API_KEY的值正确无误没有多余空格。2.等待重置免费额度每日重置。如需更多调用考虑升级Pro套餐。3.验证环境在配置中确保env字段的语法正确。重启客户端使环境变量生效。6.2 使用与结果问题问题现象可能原因排查步骤与解决方案对于某些非常地方化或生僻的菜名配对结果不理想或无法识别。SommelierX的菜品数据库可能未收录该条目或使用了非标准名称。1.使用通用名尝试使用更国际化的菜名或主要食材来描述。2.反向查询使用search_meals工具输入关键词查看数据库中匹配的标准名称是什么。3.分解食材使用pair_wine_with_ingredients工具直接列出这道菜的核心食材。pair_wine_with_recipe_url工具提取食材失败。1. 食谱网站结构不被支持。2. 网页需要登录或包含大量干扰元素。3. 链接无法访问。1.更换网站尝试使用更主流、结构清晰的食谱网站如AllRecipes, Food Network。2.手动输入如果自动提取失败可以手动阅读食谱列出主要食材然后使用pair_wine_with_ingredients。AI助手在某些复杂问题中选择了“错误”的工具。AI对用户意图的理解存在偏差。明确指令在提问时更直接地指定你希望使用的工具。例如“请使用group_pairing工具为以下三道菜推荐一款酒...”6.3 性能与高级技巧调用延迟感知MCP调用涉及本地服务器启动、网络请求到SommelierX API因此响应会比AI直接生成文本稍慢一些通常多出1-3秒。这是正常现象。免费额度规划免费层每日50次调用对于日常偶尔咨询完全足够。但如果你在密集规划一场大型晚宴频繁测试不同组合可能会很快用完。建议在Pro套餐试用期或确认高频使用后再付费。结果解读算法给出的匹配分数如95/100是一个很好的参考但葡萄酒配餐本身也是一门艺术涉及个人口味偏好。将AI的建议视为一位资深顾问的推荐而不是绝对真理。你可以结合分数和描述的理由如“高单宁可以化解脂肪”来理解其背后的配餐逻辑这本身就是一个学习过程。结合其他AI能力你可以让AI助手将SommelierX的配酒结果与你其他的需求结合。例如“根据SommelierX推荐的这款黑皮诺再帮我生成一份适合搭配它的、适合家庭烹饪的晚餐食谱。” 这样AI会先调用MCP工具获得酒款再利用其自身的文本生成能力为你创作食谱实现能力的串联。这个项目巧妙地站在了AI应用化和专业服务API化的交叉点上。它没有尝试去替代专业的侍酒师而是通过技术手段将专业服务变得触手可及无缝融入我们与AI的日常对话中。无论是用于提升生活情趣还是作为开发者学习MCP集成的案例sommelierx/mcp-server都提供了一个清晰、实用且充满想象力的范本。
返回列表