
用 MCP Agent 构建 Instagram 礼物推荐助手基于 Apify、Google 搜索与亚马逊真实商品链接的实战指南【免费下载链接】mcp-agentBuild effective agents using Model Context Protocol and simple workflow patterns项目地址: https://gitcode.com/GitHub_Trending/mc/mcp-agent本篇文章围绕开源仓库GitHub_Trending/mc/mcp-agent中的实战示例 Instagram Gift Advisor 展开讲解如何基于 Model Context ProtocolMCP聚合 Apify Instagram 爬虫、g-search 搜索引擎与网页抓取工具构建一个能够分析 Instagram 个人主页并输出带真实亚马逊商品链接的个性化礼物推荐 Agent。读完本文你将掌握 MCP 多服务器聚合、Agent 指令约束、工具强制调用、密钥安全托管等一整套可复制的开发模式并可直接运行该示例验证效果。示例概览从 Instagram 主页到个性化礼物清单Instagram Gift Advisor 是一个典型的 MCP Agent 应用它把数据分析爬取并理解 Instagram 主页与信息检索搜索真实亚马逊商品两步任务交给同一 Agent 依次完成最终产出一份按兴趣分类、带真实亚马逊链接、并附推荐理由的礼物报告。其完整工作链路为使用 Apify 的 Instagram Scraper 抓取目标主页的公开资料bio、关注/粉丝数、帖子数、帖子文案、话题标签、图片描述等由 LLM 分析内容中的视觉主题、话题标签、bio 信息与发帖规律推断人物兴趣、生活方式与审美偏好强制使用 g-search备选 fetch搜索site:amazon.com的真实商品页面提取真实 URL按兴趣类别如 Travel、Pet Care组织 8–12 条礼物推荐每条附为什么适合该用户的解释。示例在 examples/usecases/mcp_instagram_gift_advisor/main.py 中通过run_gift_advisor(username)把两步分析串成流水线先输出 PROFILE ANALYSIS 再输出 GIFT RECOMMENDATIONS 。核心功能特性该示例在 README.md 中明确了六项核心能力Profile Analysis通过 Apify 分析 Instagram 的 bio、帖子、话题标签与视觉主题Interest Identification识别兴趣爱好、生活方式模式与偏好Gift Recommendations生成具体、个性化的礼物创意Real Amazon Links通过 Google 搜索提供真实可用的亚马逊商品 URLCategory Organization按兴趣类别Travel、Pet Care 等组织礼物Detailed Explanations解释每条礼物与用户兴趣的匹配原因。其中真实链接是整个示例设计中最关键的一点Agent 被明确禁止编造亚马逊 URL所有商品链接必须来自搜索工具的实际返回结果。环境准备与安装前置条件Node.js用于运行基于 npx 的 MCP 服务器g-search、Apify 远程连接Python 3.10运行 mcp-agent 框架与示例脚本OpenAI API Key在 OpenAI 平台的 API Keys 页面申请Anthropic API Key在 Anthropic Console 申请配置中同时预置了 Claude 默认模型供切换使用Apify API Token在 Apify 账户的 Settings → Integrations → API tokens 页面获取官方提供约 1,000 次/月的免费运行额度。安装步骤示例依赖极简requirements.txt 中只需一行pip install -r requirements.txt随后初始化密钥文件cp mcp_agent.secrets.yaml.example mcp_agent.secrets.yaml # 编辑 mcp_agent.secrets.yaml填入你的 API keys配置文件逐段解析mcp_agent.config.yaml框架与服务器定义示例配置 采用仓库根目录的 schema/mcp-agent.config.schema.json 作为校验基准包含四个关键块1. 执行引擎与日志execution_engine: asyncio logger: transports: [console, file] level: info show_progress: true path: logs/instagram_gift_advisor.jsonl path_settings: path_pattern: logs/instagram_gift_advisor_{unique_id}.jsonl unique_id: timestamp timestamp_format: %Y%m%d_%H%M%S filters: - logger: root level: errorexecution_engine: asyncio声明使用异步执行引擎与 src/mcp_agent/app.py 中MCPApp的异步生命周期配套日志同时输出到控制台与文件path_pattern按%Y%m%d_%H%M%S时间戳生成唯一日志文件对应 README 中提到的logs/instagram_gift_advisor_[timestamp].jsonlfilters将 root logger 级别压到error避免第三方库刷屏。2. MCP 服务器声明mcp: servers: fetch: command: uvx args: [mcp-server-fetch] g-search: command: npx args: [-y, g-search-mcp]注意apify服务器不在主配置文件中因为它把 API token 拼进了连接 URLhttps://mcp.apify.com?token${APIFY_API_TOKEN}actorsapify/instagram-api-scraper必须放在会被 gitignore 的 secrets 文件中。配置注释也明确提示了这一点。3. 默认模型openai: default_model: gpt-4o-mini anthropic: default_model: claude-sonnet-4-20250514示例主程序使用OpenAIAugmentedLLM实际生效的是gpt-4o-miniAnthropic 模型作为可切换备选。若要在 generate 请求中覆盖默认模型可在RequestParams(model...)中显式指定。mcp_agent.secrets.yaml.example密钥与 Apify 服务器secrets 示例文件 展示了密钥托管方式openai: api_key: sk-your-openai-api-key-here anthropic: api_key: sk-ant-api03-your-anthropic-api-key-here mcp: servers: apify: command: npx args: [ mcp-remote, https://mcp.apify.com?token${APIFY_API_TOKEN}actorsapify/instagram-api-scraper, ]要点openai.api_key与anthropic.api_key对应 config.py 的密钥解析逻辑运行时通过环境变量/文件注入Apify 通过mcp-remote以 SSE 方式连接远程 MCP 服务器${APIFY_API_TOKEN}会被替换为 secrets 文件中的实际 tokenREADME 中给出的 SSE 地址为https://mcp.apify.com/sse连接方式二选一该文件复制为mcp_agent.secrets.yaml后必须加入.gitignore严禁提交到版本库。代码结构与源码级原理剖析异步生命周期MCPApp Agent 的上下文管理main.py 中InstagramGiftAdvisor实现了__aenter__/__aexit__上下文管理器self.app MCPApp(nameinstagram_gift_advisor) self.agent_app_cm self.app.run() await self.agent_app_cm.__aenter__()MCPApp(name...)是框架的应用入口见 src/mcp_agent/app.pyapp.run()返回异步上下文管理器负责加载配置、初始化连接池与日志/追踪子系统退出时依次__aexit__关闭应用上下文、agent.close()释放 Agent 资源保证无连接泄漏。Agent 定义instruction 与 server_namesself.agent Agent( nameinstagram_gift_advisor, instructiondedent(...), server_names[apify, fetch, g-search], )对照源码 src/mcp_agent/agents/agent.pyAgent是一个拥有 MCP 服务器访问权的实体核心字段包括nameAgent 名称instructionAgent 的岗位说明书可以是字符串或可调用对象Callable[[Dict], str]用于按上下文动态生成指令server_namesAgent 可访问的 MCP 服务器白名单这里绑定 apify、fetch、g-search 三个服务器工具即来自这些服务器的能力聚合。instruction是本示例的灵魂它用大量IMPORTANT/MANDATORY/FORBIDDEN规则约束模型行为例如必须使用 Apify 获取真实主页数据禁止编造或猜测亚马逊 URL每次推荐前必须调用 g-search 或 fetch 搜索至少 8–10 次只收录搜索结果中真实存在的链接。attach_llm把 LLM 挂载到 Agentself.llm await self.agent.attach_llm(OpenAIAugmentedLLM)对应源码 src/mcp_agent/agents/agent.pyattach_llm接受一个 LLM 工厂llm_factory(agentself)或现成实例将 LLM 绑定到 Agent 并返回。此处传入OpenAIAugmentedLLM见 src/mcp_agent/workflows/llm/augmented_llm_openai.py且 llm 会继承 Agent 的instruction。RequestParams生成请求参数两步分析均调用self.llm.generate_str(prompt, request_paramsRequestParams(use_historyTrue))。RequestParams定义于 src/mcp_agent/workflows/llm/augmented_llm.py继承自 MCP 的CreateMessageRequestParams关键参数包括maxTokens: int 2048单次生成的最大采样 token 数model: str | None None覆盖默认模型use_history: bool True是否携带消息历史本示例全程开启保证第二步能引用第一步的分析结果max_iterations: int 10LLM 最多执行多少轮工具调用迭代parallel_tool_calls: bool False是否允许单轮并行多次工具调用。use_historyTrue是两条 prompt 能接力的技术基础scrape_instagram_profile的产出被拼进generate_gift_recommendations的 prompt同时历史会话让模型始终记得自己做过哪些搜索、搜到了哪些 URL。两步核心方法第一步抓取与分析scrape_instagram_profile对应 main.py。prompt 要求 Apify 爬取 bio、粉丝数、帖子文案、话题标签、图片描述提炼兴趣/生活方式/年龄层/活动偏好/审美倾向并明确禁止在本阶段输出任何亚马逊链接、价格或具体商品只给兴趣类别建议——把洞察与商品严格分层避免早期幻觉污染最终结果。第二步礼物推荐generate_gift_recommendations对应 main.py。prompt 强制规定每个礼物的三步流程Step 1: 用 g-search 搜索 site:amazon.com [与兴趣相关的商品]失败则退回 fetch Step 2: 从搜索结果中提取真实亚马逊 URL Step 3: 输出产品名 真实链接 匹配理由同时列出一系列禁止项不得写请自行在亚马逊搜索、不得只给搜索词不给结果、不得编造 URL、不得猜测搜索结果中未明确展示的价格。最终要求 8–12 条按类别组织的推荐且必须在没有多次调用 g-search/fetch 拿到真实 URL 之前不得继续。运行方式在安装并配好密钥后直接传入不带的 Instagram 用户名即可python main.py username_to_analyze示例README 中的演示账号python main.py finnianthegoldie程序将按顺序执行连接并打印Connected! Starting profile analysis...→ 输出 PROFILE ANALYSIS → 打印Generating personalized gift recommendations...→ 输出 GIFT RECOMMENDATIONS → 打印Analysis complete!。若按下 CtrlC会捕获KeyboardInterrupt并提示Session terminated by user.后退出见 main.py。输出格式与示例Profile Analysis 部分包含三类信息Profile Overview用户名、bio、粉丝数等主页概览Key Interests Identified推断出的兴趣标签如 Travel and adventure、Service dog advocacyGift Category Suggestions仅类别建议不含具体商品与价格。Gift Recommendations 部分每条推荐包含产品名、真实亚马逊 URL、匹配理由并按兴趣类别分组。README 给出的输出样式如下 PROFILE ANALYSIS ### Profile Overview - Username: finnianthegoldie - Bio: the globetrotting dog ️⁀જ✈︎ nyc - Followers: 106,875 ### Key Interests Identified - Travel and adventure - Service dog advocacy - Community engagement - Urban lifestyle ### Gift Category Suggestions - Travel accessories for pets - Dog health and safety items - Educational materials about service dogs GIFT RECOMMENDATIONS ## Travel Adventure **Collapsible Dog Travel Bowl** - Amazon URL: link to amazon - Why it fits: Perfect for Finnians globetrotting lifestyle and travel adventures **Dog Car Safety Harness** - Amazon URL: link to amazon - Why it fits: Essential for safe travel with a service dogMCP 服务器选型与职责示例共接入三个 MCP 服务器各司其职服务器连接方式职责Apify Instagram Scrapermcp-remote连接https://mcp.apify.com或https://mcp.apify.com/ssetoken 走 secrets专业化 Instagram 主页抓取内置机器人检测与限流处理G-Searchnpx -y g-search-mcpGoogle 搜索用于定位真实亚马逊商品页Fetchuvx mcp-server-fetch网页内容抓取作为 g-search 失败时的兜底检索手段从源码 src/mcp_agent/mcp/mcp_aggregator.py 可以推断Agent 通过 MCP 聚合器统一管理多个服务器的连接与工具发现server_names白名单决定了聚合范围g-search 与 fetch 服务器会在首次运行时由 npx/uvx 自动下载安装。安全注意事项密钥保护mcp_agent.secrets.yaml内含 OpenAI、Anthropic、Apify 三类密钥严禁提交到版本库务必加入.gitignore环境变量引用Apify token 通过${APIFY_API_TOKEN}占位符在 secrets 中替换密钥不落入主配置文件外部服务合规Apify 负责处理机器检测与限流本工具仅限合法的礼物推荐用途不得用于违反平台规则或他人隐私的场景。故障排查与日志常见问题见 README.mdApify 连接失败检查 secrets 文件中的 API token 是否有效token 更换后需重新替换${APIFY_API_TOKEN}搜索结果异常g-search 与 fetch 服务器由 npx/uvx 自动安装若首次运行较慢或失败确认 Node.js 与网络环境正常。调试方面所有运行日志按时间戳写入logs/instagram_gift_advisor_[timestamp].jsonl可结合 scripts/event_viewer.py 等日志工具回放事件观察每一步工具调用与 LLM 输出。已知限制仅适用于公开Instagram 主页部分主页需要登录由 Apify 的 OAuth 机制处理礼物推荐依赖亚马逊商品的可售状态搜索结果随时间变化推荐链接可能失效搜索质量与 LLM 对工具调用的遵守程度直接相关建议保留 prompt 中的强制搜索与禁止编造规则。小结Instagram Gift Advisor 是 mcp-agent 仓库中多服务器聚合 强约束工具调用的典型示范它展示了如何用一份instruction把爬取、分析、搜索、推荐四个环节拧成一条可复用的异步流水线并通过 secrets 隔离、真实链接强制校验等手段保证输出的可信度。开发者可沿用此模式把 Apify 换成任意数据源服务器、把亚马逊搜索换成其他电商或知识库检索快速构建自己的洞察 → 检索 → 推荐类 Agent。更多上下文可参考仓库根目录的 README.md 与 examples/usecases 下的其他实战示例。【免费下载链接】mcp-agentBuild effective agents using Model Context Protocol and simple workflow patterns项目地址: https://gitcode.com/GitHub_Trending/mc/mcp-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考