使用 Jina 远程 MCP 服务器的 Agentic 工作流
作者来自 Elastic https://jina.aiJina MCP 通过将我们的 API 连接到任意 LLM简化了 agent 开发减少了自定义代码并提升了工作流的可靠性。https://github.com/jina-ai/MCP我们在之前的一篇文章中向你展示了如何将 Jina AI 的 search 和 reader APIs 与 DeepSeek R1 集成来构建一个深度研究 agent但要让它正常工作需要大量的自定义代码和 prompt 工程。在这篇文章中我们将使用 Model Context Protocol MCP 来实现相同的功能它需要更少的自定义代码并且可以在不同的 LLM 之间移植但在过程中仍然存在一些需要注意的问题。为了构建我们的 agent我们将使用最近发布的 MCP 服务器它提供了对 Jina Reader、Embeddings 和 Reranker API 的访问以及 URL 转 markdown、网页搜索、图像搜索和 embeddings/reranker 工具。Agents 与 Model Context Protocol最近关于智能体和智能体人工智能的文章层出不穷既有对其的高度期待例如 Gartner 预测到 2028 年大约 15% 的日常工作决策将由 AI agent 自主完成也有质疑例如 Vortex 认为大多数 agentic AI 的提案缺乏显著价值或投资回报。但 agent 到底是什么一个较好的定义来自 Chip Huyen经由 Simon Willison 引用是[agent 是] 能够规划方法并循环调用工具直到实现目标的 LLM 系统这也是本文采用的定义。那么 agent 使用的这些工具呢它们通过 Model Context Protocol 进行连接。该协议最初由 Anthropic 开发正在成为连接 LLM 与外部工具和数据源的通用语言。这意味着 agent 可以在单个工作流中串联多个工具从而通过编排一组 API 来实现规划、推理和执行。https://www.anthropic.com/news/model-context-protocol例如我们可以构建一个价格优化 agent用于收集竞争对手的产品定价以进行比较和价格优化。然后我们可以为该 agent 配置 Jina AI 的 MCP 服务器、一个 prompt 以及一份竞争对手产品列表让它生成一份包含抓取数据和来源链接的可执行报告。通过使用额外的 MCP 服务器agent 还可以将该报告导出为 PDF 格式通过电子邮件发送给相关人员将其存储到内部知识库等。在这篇文章中我们将使用我们的 MCP 服务器构建三个示例 agent该服务器提供以下工具primer —— 获取当前上下文信息用于本地化和时间感知响应read_url —— 通过 Reader API 从网页中提取干净、结构化的 Markdown 内容也提供并行版本capture_screenshot_url —— 通过 Reader API 捕获高质量网页截图guess_datetime_url —— 分析网页的最后更新时间/发布时间并提供置信度评分search_web —— 通过 Reader API 在全网搜索当前信息和新闻也提供并行版本search_arxiv —— 通过 Reader API 搜索 arXiv 仓库中的学术论文和预印本也提供并行版本search_images —— 通过 Reader API 在全网搜索图片类似 Google Images expand_query —— 基于查询扩展模型通过 Reader API 扩展和重写搜索查询sort_by_relevance —— 通过 Reranker API 按与查询的相关性对文档重新排序deduplicate_strings —— 通过 Embeddings API 和子模优化submodular optimization获取语义上唯一的 top-k 字符串deduplicate_images —— 通过 Embeddings API 和子模优化获取语义上唯一的 top-k 图像我们还需要一个 MCP 客户端 VS Code 搭配 Copilot因为它免费且使用广泛以及一个 LLM Claude Sonnet 4因为它在我们的测试中表现最好。接下来为了简洁起见我们将把 MCP 客户端 LLM MCP 服务器们的组合称为“我们的 agent”。使用 Jina AI MCP 服务器MCP 被描述为一种通用插件系统支持多个程序例如 Claude Code、VS Code、Google Gemini CLI以及 Claude 和 ChatGPT 的桌面前端。连接 MCP 服务器通常只需要编辑你的设置文件并包含以下内容{ mcpServers: { jina-mcp-server: { url: https://mcp.jina.ai/sse, headers: { Authorization: Bearer ${JINA_API_KEY} // optional } } } }为了测试 MCP 服务器是否正常工作我们使用一个简单的 promptGive me a summary of the latest post on jina.ai news in the form of a single verse sea shanty我们的 agent 执行以下操作调用 read_url 抓取 https://jina.ai/news使用查询 “ site:jina.ai \Optimizing GGUFs for Decoder-Only Embedding Models\ August 2025 ” 调用 search_web调用 read_url 抓取该博客文章根据抓取的数据生成一段单节的海员号子one-verse sea shanty *To the tune of a traditional sea shanty* **The GGUF Sailors Tale** *Oh, they sailed with their embeddings, three billion strong and true,* *Through quantized waters deep and blue,* *With L4 GPU winds at their back,* *Four thousand tokens per second on their track!* *Heave away, me hearties, strip the vision tower down,* *For GGUF optimizations are the finest ports in town!*我们的 agent 通常会生成非常长的输出。为了避免在文章中全部展示我们会将其余内容链接到 GitHub gist。既然我们已经看到它在实践中可以正常工作接下来让我们通过构建一些有用的真实世界示例来真正测试它的能力。示例 1每日 arXiv 论文摘要阅读最新的学术论文是我们在 Jina AI 工作的一部分。但从中筛选出真正相关的论文并提取每篇论文中最重要的信息是一项相当繁琐的任务。因此在我们的第一个实验中我们将这项工作自动化创建了一个每日精选的最新相关论文摘要。以下是我们使用的 promptUsing only Jina tools, scrape arxiv for the papers about LLMs, reranking, and embeddings published in the past 24 hours, then deduplicate and rerank for relevance, outputting the top 10. For each one, scrape the PDF and extract the abstract. Then summarize it and organize the information you gathered into a daily update. Include a link and publication date for each paper.我们指定 “仅使用 Jina 工具”因为 VS Code 本身内置了搜索和抓取功能。在没有这些功能的模型中这一表述可以省略。我们的 agent使用查询字符串 large language models LLM、reranking information retrieval、embeddings vector representations、transformer neural networks 和 natural language processing NLP通过 parallel_search_arxiv 工具搜索相关的 arxiv.org 论文使用 deduplicate_strings 工具去重使用 sort_by_relevance 工具对结果进行重排序仅输出最相关的前 10 个结果通过 parallel_read_url 获取这些重排序结果对应的 PDF 链接并分成两批每批 5 个使用 read_url 工具逐个读取每个链接共调用 10 次生成一份详细报告包括摘要、总结、趋势与洞察、对未来研究的影响、研究空白以及结论https://gist.github.com/alexcg1/9bec8b86849d48d45a56add8a55061d0我们偶尔会遇到这样的问题agent 没有将结果限制在过去 24 小时内。再次提示它遵循该指令后才得到了上面的报告。示例 2市场研究 agent在下一个实验中我们将让 agent 为一家知名电子游戏公司名称已隐去撰写一份竞争情报报告。以下是我们的 promptCreate a comprehensive competitive intelligence report for $GAME_COMPANY focusing on their recent activities in retro indie games. Use Jina tools to search for the latest news, press releases, and announcements, then extract clean content from their official communications. Rank all findings by business relevance and remove any duplicate information. Present insights on their strategic direction, product launches, and market positioning changes over the past quarter我们的 agent多次循环执行 search_web 和 read_url 以收集研究资料使用 sort_by_relevance 对结果进行重排序输出前 10 个最相关结果生成一份市场情报报告包括执行摘要、关键商业动态按战略重要性排序、战略决策分析以及其他多个部分示例 3法律合规研究正如我们之前提到的MCP 的一个有用之处在于我们可以使用多个服务器来获得更复杂的输出。在这个案例中我们除了使用我们自己的 MCP 服务器之外还使用了 PDF Reader MCP 服务器以生成一份关于欧盟和美国当前 AI 法律合规状况的研究报告。我们使用的 prompt 是Develop a knowledge base section focused on AI legal compliance news and common pitfalls in the EU and USA as of this moment. Report should be aimed at AI startups in EU. Apply Jina MCP tools extensively: perform parallel web searches and URL reads to efficiently extract detailed content, deduplicate semantic overlaps, and rerank to surface the most authoritative information. Cite all sources with URLs and publication or update dates. Organize content clearly and produce a formatted PDF document ready for immediate use.我们的 agent对通用信息执行并行搜索操作使用 parallel_search查询包括 EU AI Act 2024 compliance requirements startups legal obligations August 2025、USA AI regulation Biden executive order compliance requirements 2024 2025、AI startup legal pitfalls Europe GDPR data protection compliance 2025、AI liability insurance compliance requirements EU USA startups 2024 2025 以及 AI ethics governance framework startups EU USA regulatory updates 2025每个查询返回 25 个结果。使用 deduplicate_strings 对返回的 URL 进行去重使用 parallel_read_url 读取其中 4 个 URL 的内容再次执行更具体信息的并行搜索查询包括 AI startup common compliance pitfalls mistakes EU USA 2025、AI liability insurance cybersecurity startup requirements 2025、AI bias discrimination testing requirements EU AI Act compliance startups、AI data protection GDPR violations penalties startups 2025使用 parallel_read_url 再读取 4 个 URL生成 Markdown 格式报告并将其转换为 18 页 PDFhttps://gist.github.com/alexcg1/0dd0b46f5a29564e65142cd1adea3664我们还需要进行一些额外的 prompt 调整以改进 PDF 的元数据和格式并使其更像一份正式报告而不是一份非常长的项目符号列表但这些内容可以在未来的报告中整合进 prompt。替代方案在选择 Claude Sonnet 4 之前我们尝试了多种支持 tools 的 Ollama 模型包括 Qwen3:30b、Qwen2.5:7b 和 llama3.3:70b。对于 MCP 客户端我们最初使用 ollmcp之后才切换到 VS Code。上述所有模型都以相同方式失败无论我们如何明确提示工具及其使用方式当被要求执行一个简单任务例如获取 Jina AI 的最新博客文章时每个模型无论规模或厂商都会持续表现出以下行为进入冗长的推理循环不断自我怀疑并消耗 token直到最终决定直接按指令执行调用 read_url 访问 https://jina.ai/news检查博客文章标题和摘要完全“幻觉”式地认为自己抓取了最新文章甚至没有真正对该页面调用 read_url基于搜索结果的摘要而非实际页面内容生成总结在被质疑时声称自己已严格遵循指令并抓取了页面Claude、GPT 和 Gemini 系列模型整体表现尚可但我们很快选择了 Claude Sonnet 4因为它更积极地使用工具经常使用并行工具而不是 GPT-4.1 偏好的串行方式并生成更长、更结构化的输出。结论关于 “agentic AI” 这一概念目前仍存在很多模糊性但 MCP 正在将其转变为一个更具体、更实用的方向。在我们的经验中agent 还没有完全达到生产可用的成熟阶段LLM 仍然是主要短板但通过一定的引导和实验已经可以获得不错的结果。也就是说当 prompt、LLM 和 MCP 服务器三者组合正确时agent 能够可靠地执行多步骤任务且无需自定义代码——这在之前的模型如不支持 tools 的 DeepSeek中是很难实现的因为那时需要更多手工工程且集成更脆弱。尽管当前仍存在局限性但整体发展趋势是积极的。MCP 生态正在快速增长带来了越来越多的集成和工具使得 API如 Jina 的可以更容易地组合使用也可以随着新 LLM 的出现灵活替换。随着底层模型能力的提升以及工具生态的成熟实验性 agent 与生产级 agentic AI 之间的差距正在持续缩小使得在真实世界应用中构建可靠系统变得越来越可行。原文https://jina.ai/news/agentic-workflow-with-jina-remote-mcp-server/