1. 从 Elastic Agent Builder 到 MCP一个能跑起来的 Agentic 参考架构Elastic Agent Builder 是 Elasticsearch 9.2 之后以 tech preview 形式放出来的一组 AI 能力核心作用是让你用自然语言直接和索引里的数据对话同时支持自定义 tool、Elastic API、A2A 以及 MCP。MCPModel Context Protocol则是一个开放标准让 LLM 通过 tools 去调用外部系统。把这两者拼在一起就能得到一个 Agentic 参考架构Elasticsearch 当 vector store 和语义检索底座Agent Builder 暴露 MCP serverLangChain/LangGraph 这类框架当 MCP client 去编排工作流。这套架构适合谁适合已经在用 Elasticsearch 做知识库、又想接本地 AI 编码工具或 Agent 框架做联调的团队。真正卡人的地方往往不是架构本身而是工具侧的 Key 和 API 通道怎么统一。我这次的做法是用 TaoToken 做统一 Key 接入层把模型调用和 MCP 工具调用收敛到一套配置里下面把 settings.json / config.toml 骨架和连通性验证步骤完整给出来。整个参考架构分两层。Ingestion 层负责把数据写进 Elasticsearch通过 ingest pipeline 调用 ELSER 生成 embeddings落到semantic_text字段。Agent Builder 层负责把索引上的检索能力包装成 tool再通过 MCP server 暴露出去MCP client 拿到 tools 列表后交给 LLM 决策调用。安全漏洞 agent 就是个典型用例先在内部知识库做 semantic search再决定要不要去外部搜索最后让 LLM 关联两边发现并生成缓解建议。2. TaoToken 前置统一 Key 与 API 通道准备在动 Elasticsearch 之前先把模型侧的通道打通。TaoToken 在这里扮演的是统一 Key 网关你不需要在 settings.json、config.toml、环境变量里分别塞不同厂商的 Key而是拿一个 Key 走同一个 API 入口模型对话、coding plan、Agent 框架调用都复用。第一步去控制台创建 API Key。打开 https://taotoken.net/console 登录后在 API Keys 页面新建一个 Key复制出来先存到本地密码管理器。这个 Key 后面会同时出现在OPENAI_API_KEY和 MCP client 的 header 里。第二步确认你要用的模型名。在模型对话页面 https://taotoken.net/models 可以直接试跑确认模型可用再写进配置。这一步别省很多人配置写完报 404 就是因为模型名写错。第三步记下两个地址。API 基址是https://taotoken.net/api注意这个地址不带任何查询参数直接作为 base_url 用。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 需要看文档时从 https://taotoken.net/doc 进。注意API 基址和官网地址不要混用。base_url 只填https://taotoken.net/api多带路径会导致 404。如果你打算长期跑编码类 Agent建议顺手看一下 Coding Plan 页面 https://taotoken.net/coding-plan 它针对高频编码调用做了额度设计比按次调用更划算。这一步不是必须但联调阶段调用量大提前规划能省事。3. 可复制配置settings.json 与 config.toml 骨架工具侧接入的核心是把 MCP server 和模型通道都写进配置文件。下面给两份骨架一份给支持 settings.json 的编辑器类工具一份给支持 config.toml 的 Agent 框架。3.1 settings.json 骨架{ model: { provider: openai-compatible, base_url: https://taotoken.net/api, api_key: ${TAOTOKEN_API_KEY}, model: gpt-5.2-2025-12-11 }, mcpServers: { agent-builder: { transport: streamable_http, url: ${KIBANA_URL}/api/agent_builder/mcp, headers: { Authorization: ApiKey ${ELASTICSEARCH_API_KEY}, kbn-xsrf: true } } } }这里有两个占位符要替换TAOTOKEN_API_KEY是你上一步创建的 KeyELASTICSEARCH_API_KEY是 Elasticsearch 的 API Key。KIBANA_URL指向你的 Kibana 实例如果你用了自定义 spaceMCP 地址要改成{KIBANA_URL}/s/{SPACE_NAME}/api/agent_builder/mcp。3.2 config.toml 骨架[model] provider openai-compatible base_url https://taotoken.net/api api_key ${TAOTOKEN_API_KEY} model gpt-5.2-2025-12-11 reasoning_effort low [mcp.agent_builder] transport streamable_http url ${KIBANA_URL}/api/agent_builder/mcp [mcp.agent_builder.headers] Authorization ApiKey ${ELASTICSEARCH_API_KEY} kbn-xsrf truereasoning_effort设成 low 是为了让响应更快同时保留模型能力。如果你做的是复杂安全分析可以调到 medium但联调阶段先用 low 验证连通性。3.3 环境变量占位配置文件里全部用${}占位实际值走环境变量避免 Key 进版本库。export TAOTOKEN_API_KEYsk-你的TaoTokenKey export ELASTICSEARCH_ENDPOINThttps://your-es-endpoint:9200 export ELASTICSEARCH_API_KEY你的ElasticsearchApiKey export KIBANA_URLhttps://your-kibana-url export INDEX_NAMEsecurity-vulnerabilitiesPython 侧用load_dotenv()加载然后os.getenv读取。Kibana 请求头里kbn-xsrf必须带否则 Agent Builder 的 tools API 会拒绝。4. 验证请求从 MCP tools 列表到一次最小语义检索配置写完别急着跑完整工作流先做三步验证。4.1 验证模型通道curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: gpt-5.2-2025-12-11, messages: [{role: user, content: ping}] }返回里有choices字段就说明模型通道通了。如果返回 401检查 Key 是否复制完整返回 404检查 base_url 是不是多带了路径。4.2 验证 MCP tools 列表from langchain_mcp_adapters.client import MultiServerMCPClient client MultiServerMCPClient( { agent-builder: { transport: streamable_http, url: f{KIBANA_URL}/api/agent_builder/mcp, headers: {Authorization: fApiKey {ELASTICSEARCH_API_KEY}}, } } ) tools await client.get_tools() print([t.name for t in tools])正常会打印出[platform_core_search, ..., security-semantic-search]。如果列表为空说明 Agent Builder 没启用或者 tool 还没创建。4.3 创建 semantic search tool 并验证import requests security_search_tool { id: security-semantic-search, type: index_search, description: Search internal security documents including incident reports, pentests, internal CVEs, security guidelines., tags: [security, semantic, vulnerabilities], configuration: {pattern: INDEX_NAME}, } resp requests.post( f{KIBANA_URL}/api/agent_builder/tools, headers{ kbn-xsrf: true, Content-Type: application/json, Authorization: fApiKey {ELASTICSEARCH_API_KEY}, }, jsonsecurity_search_tool, ) print(resp.status_code, resp.text)返回 200 后这个 tool 会出现在 Kibana UI 里也会出现在上一步的 MCP tools 列表中。索引 mapping 里记得加semantic_text字段并把 title、content、doc_type、severity 用copy_to指过去否则语义检索拿不到内容。index_mapping { mappings: { properties: { title: {type: text, copy_to: semantic_field}, content: {type: text, copy_to: semantic_field}, doc_type: {type: keyword, copy_to: semantic_field}, severity: {type: keyword, copy_to: semantic_field}, date: {type: date}, semantic_field: {type: semantic_text}, } } }数据用 bulk API 写入refreshTrue保证立即可检索。跑一次查询We are using Node.js with Express 4.17 for our API gateway. Are there known prototype pollution vulnerabilities?如果返回里带 severity 和 affected_systems说明整条链路通了。5. 本篇常见错排查MCP 连接返回 401九成是Authorization头格式不对。Elasticsearch 用的是ApiKey xxx不是Bearer xxx。TaoToken 那边才是Bearer。两个 Key 别搞混。tools 列表为空先确认 Agent Builder 已启用再确认 tool 创建请求返回 200。如果 Kibana 用了自定义 spaceMCP 地址必须带/s/{SPACE_NAME}否则连到默认 space 找不到 tool。semantic search 返回空结果检查 mapping 里semantic_field是不是semantic_text类型检查copy_to有没有漏字段。ELSER 模型需要先在集群里部署没部署的话semantic_text字段不会生成 embeddings。模型调用 404base_url 写成https://taotoken.net/api/v1会 404正确写法是https://taotoken.net/api路径由 SDK 自己拼。模型名也要和模型对话页面里列出的完全一致。配置文件里 Key 不生效${}占位符依赖运行环境支持变量展开。如果你的工具不支持就改成直接读环境变量的写法别把 Key 硬编码进文件。LangGraph 工作流卡住decide_internet_search节点如果一直返回需要外部搜索检查 Serper API Key 是否配置。外部搜索是可选项联调阶段可以先跳过只验证内部 semantic search。6. 把通道固定下来再谈扩展这套参考架构的价值在于模块化Elasticsearch 管数据Agent Builder 管 tool 暴露MCP 管协议TaoToken 管模型通道。任何一层都能单独替换。你可以在同一个 MCP client 下挂第二个 agent也可以把 ingestion 换成 Logstash 或 Kafka模型侧换模型只需要改配置里的 model 字段Key 和 base_url 不用动。联调阶段建议先把reasoning_effort设低、只跑内部检索确认 MCP tools 列表和 semantic search 都正常再逐步加外部搜索和复杂工作流。需要长期跑编码类 Agent 的话Coding Plan 页面 https://taotoken.net/coding-plan 有额度方案接入文档在 https://taotoken.net/doc API Key 管理在 https://taotoken.net/api-keys 。把这几处收藏好下次换工具时直接复用同一套 Key 和配置骨架就行。
企业数字化 ERP 产品动态
相关推荐
基于 Spring Boot 的二手车交易网站的设计与实现 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!
1. 项目背景与意义
随着汽车保有量的持续增长和消费观念的转变,二手车交易市场呈现出快速发展的态势。传统的线下二手车交易存在信息不对称、车源分散、交易… · 2026/9/25 16:23:56
GEOFlow知识库搭建完整指南:pgvector向量检索让AI内容生产有据可依 GEOFlow知识库搭建完整指南:pgvector向量检索让AI内容生产有据可依 【免费下载链接】GEOFlow Open-source GEO content engineering and multi-site distribution platform with AI quality inspection, illustrated admin help, hosted sites, browser-assisted pu… · 2026/9/25 16:23:31
Agent Skills 实用指南:构建可复用智能体技能体系 "agent-skills"这个词,最近在AI圈子里被反复提起。我做智能体开发也有两三年了,从最早的提示词堆砌,到后来的函数调用,再到现在围绕技能(skills)来构建智能体,最大的感受是࿱… · 2026/9/25 16:23:31
Atlas 300V 24G推理加速卡上部署YOLO:从模型转换到性能调优全攻略 1. Atlas 300V 24G到底是个什么卡1.1 它就是热搜里问的那张“运算加速卡”先说结论:是的,Atlas 300V 24G就是一张标准的运算加速卡,但你要注意它并不是显卡,更不是用来打游戏的。它是昇腾生态里面向数据中心和边缘侧推理场景的PCI… · 2026/9/25 16:23:13
AI Agent工程化:分层交付架构设计与落地实践 1. 为什么“分层交付”是 AI Agent 工程化的第一道生死线做 AI Agent 项目最怕什么?不是模型不够聪明,而是你把所有逻辑——意图识别、工具调用、状态管理、结果渲染——全塞进一个巨大的提示词或者一个巨型函数里。我见过太多团队,Demo 阶段… · 2026/9/25 16:23:07
昇腾Atlas 300V 24G部署YOLOv8推理实战与排障 1. 先搞明白Atlas 300V 24G到底是什么1.1 一张“推理加速卡”而不是“图形卡”我最初拿到Atlas 300V 24G这张卡的时候,也跟不少刚接触昇腾生态的朋友一样,第一反应是“它是不是跟游戏显卡一样,插上去就能跑图形渲染”。这个理解其实是错的&am… · 2026/9/25 16:23:00
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37