AGILEX Docs

ai.agilex.service由 service.agilex.ai 发布官方发布者v1.2.1更新于 Nov 4, 2026

Official AGILEX robotics product docs: manuals, CAN protocol, firmware, FAQ. Read-only.

已验证Streamable HTTP可网页运行知识与记忆开发者工具

概览

AI 生成的概览

面向 AgileX 松灵机器人产品文档的只读远程 MCP 服务器,让助手检索手册、定位段落并以 Markdown 读取页面。

可以做什么
  • 按产品名与概念对官方 AgileX 文档做全文检索,返回摘要与原文链接
  • 在一本长手册内部定位具体段落、表格或错误码,并给出偏移量
  • 以 Markdown 读取文档页面,支持按偏移量和字符数分页
  • 列出某个空间内的文档页面,或列出所有公开空间及页面数量
适用场景
在为 piper、ranger、limo、scout 等 AgileX 硬件编写或讲解集成代码之前使用,让助手查阅真实手册中的波特率、CAN 报文格式、引脚定义、固件升级步骤和错误码,而不是凭猜测作答。也适合查询售后 FAQ 与故障排查流程。
运行要求
需要一个远程 Streamable HTTP 端点,无需 API 密钥、OAuth 或本地进程。仅支持 stdio 的客户端需通过 npx 运行 mcp-remote 之类的桥接。需要能访问该服务的网络,并按 IP 限流。
安装前请注意
只读:没有写入工具,也无法让机器人动作。检索为词面匹配而非语义检索,且仅覆盖公开共享的页面,内部空间被排除。图片与二进制附件不会返回,需打开引用的页面链接查看。带未发布标记的结果仍可能出现,不应视为定论。

安装

在 SourceWeft 中

  1. 打开 控制台中的 AGILEX Docs,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/ai.agilex.service%2Fdocs/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "agilex-docs": {
      "type": "http",
      "url": "https://service.agilex.ai/agilex-docs/mcp"
    }
  }
}

README

AGILEX Docs MCP

[MCP] [Registry] [License] [Auth]

Official product documentation for AgileX Robotics (松灵机器人) — user manuals, CAN 2.0B protocol references, firmware notes, SDK tech posts and after-sales FAQ for piper, pika, nero, ranger, limo, scout, bunker, hunter, tracer, umr, cobot_magic and aloha.

Point your AI coding assistant at this server before writing integration code for AgileX hardware, so it consults the real manual instead of guessing baud rates, frame formats or pinouts.

This repository documents the public interface. It covers the endpoint, the tool signatures and every client configuration. The indexing service that backs it is operated by AgileX and is not part of this repository.


Endpoint

MCP URLhttps://service.agilex.ai/agilex-docs/mcp
TransportStreamable HTTP — single endpoint, stateless
Protocol2025-11-25 (also answers 2025-06-18, 2025-03-26, 2024-11-05)
AuthNone. Read-only public docs, rate limited per IP
Registryai.agilex.service/docs
Docs pagehttps://service.agilex.ai/agilex-docs/
Healthhttps://service.agilex.ai/agilex-docs/health

No API key, no OAuth, no local process. If your client speaks Streamable HTTP, you only need the URL.


Quick start

Clients are listed in order of how common they are. Pick one.

#ClientSetup
1Claude Codeclaude mcp add --scope user --transport http agilex-docs https://service.agilex.ai/agilex-docs/mcp
2Codex CLIcodex mcp add agilex-docs --url https://service.agilex.ai/agilex-docs/mcp
3Cursorone-click install, or the JSON below
4VS Code / CopilotCtrl+Shift+P → MCP: Add Server → HTTP → paste the URL
5Anything stdio-onlynpx -y mcp-remote https://service.agilex.ai/agilex-docs/mcp
bash
# 1) Claude Code — all projectsclaude mcp add --scope user --transport http agilex-docs https://service.agilex.ai/agilex-docs/mcp
# 2) Codex CLI — writes ~/.codex/config.tomlcodex mcp add agilex-docs --url https://service.agilex.ai/agilex-docs/mcp

Cursor one-click:

cursor://anysphere.cursor-deeplink/mcp/install?name=agilex-docs&config=eyJ1cmwiOiJodHRwczovL3NlcnZpY2UuYWdpbGV4LmFpL2FnaWxleC1kb2NzL21jcCJ9

Any client that reads mcpServers (Cursor, Claude Desktop, Cline, Windsurf, Cherry Studio, Continue, Zed, LibreChat, Dify …):

json
{  "mcpServers": {    "agilex-docs": {      "url": "https://service.agilex.ai/agilex-docs/mcp"    }  }}

Full per-client instructions: docs/CLIENTS.md.


Tools

Five read-only tools. The names are deliberately verb_noun so a model can pick the right one without reading the schema first.

ToolPurposeParameters
search_docsFull-text search. Start here. Locate before reading.query (include the product name), limit (1–25, default 8), space (optional)
find_in_docLocate a passage inside one long manual; returns absolute offsetdoc_id, query, limit (1–10, default 5)
get_docRead one page as Markdown, paginateddoc_id, max_chars (default 20 000, honoured as requested, max 120 000), offset
list_docsInventory of a single spacespace (optional), limit (1–300, default 100), offset (≥0)
list_spacesAll public spaces with page counts—

search_docs returns doc_id, title, space, url, score, chars and a snippet. Then use find_in_doc to jump to the passage you need and read it with get_doc(doc_id, offset=…). If the response has truncated: true, call get_doc again with next_offset.

Manuals open with a cover page and preface, so reading from offset 0 rarely answers a specific question — that is why the search-then-locate-then-read path is the recommended one rather than get_doc alone.

max_chars is honoured as requested (1–120 000), and the applied value is echoed back as max_chars in the response. There used to be an undocumented 2000-character floor; a caller paging in 1000-character steps would then re-read overlapping text without any indication, so it was removed.

Field semantics

count means different things in different tools, deliberately:

ToolcountAlso returned
search_docsnumber of results in this replyresults[]
list_docsnumber of docs in this pageoffset, docs[] (no total — use list_spaces)
find_in_doctotal passages matchedreturned, matched_terms, missing_terms

find_in_doc(limit=1) can therefore return count: 24 with one hit — returned tells you what is in the array. matched_terms / missing_terms make partial matches explicit instead of silently ignoring words the page does not contain.

Numeric parameters declare their bounds in the schema: limit 1–25 (search), 1–10 (find_in_doc), 1–300 (list_docs); max_chars 1–120000; offset ≥ 0. An out-of-range value is a validation error, not a silent clamp.

A result whose title carries a 【未发】 / 【暂不对外】 marker is still searchable — whether it is published is the documentation owner's call, and the code does not blacklist by keyword — but the entry carries status_note so a model does not cite unreleased material as settled.

Why find_in_doc exists

13% of the corpus needs pagination and the longest page is 162 000 characters; locating one CAN frame table in that by paging with get_doc costs nine round trips. find_in_doc scores paragraphs and returns their absolute offsets, so a single get_doc(doc_id, offset=…) lands on the table.

Pass the concept as query, not the product name. Terms that already appear in the page title are ignored: search_docs picked the page by them, so repeating them only dilutes the ranking. This is measurable — on the RANGER MINI 3.0 manual, query="RANGER MINI 3.0 CAN 波特率" returned 44 passages with "1.1 产品列表" on top, while query="CAN 波特率" returned 2 with "3.2 CAN接口协议" on top.

Scoring is weighted by corpus-wide document frequency, not raw term count: can appears in 138 pages (weight 1.25) while 波特率 appears in 39 (weight 2.29). If the query contains a distinctive term that the page does not contain, the tool returns zero hits and says so — otherwise English manuals produced 76 meaningless can matches for the query "CAN 波特率". A query made only of generic terms (e.g. just CAN) still returns matches.

Response shape

jsonc
// search_docs("piper CAN 波特率"){  "query": "piper CAN 波特率",  "count": 3,  "results": [    {      "doc_id": "01a06659-2d4e-7029-bc64-63f9352b34a6",      "title": "PIPER X 用户手册(CN)",      "space": "AGX-机械臂产品手册",      "url": "https://kb.agilex.ai/s/agx-robot-arm-products-cn-en/p/pWVjLJsYc0",      "score": 18.42,      "chars": 13264,      "snippet": "...CAN通信标准采用的是CAN2.0B标准,通讯波特率为1000K..."    }  ]}
jsonc
// get_doc(doc_id="01a06659-…", max_chars=2000){  "doc_id": "01a06659-2d4e-7029-bc64-63f9352b34a6",  "title": "PIPER X 用户手册(CN)",  "url": "https://kb.agilex.ai/s/agx-robot-arm-products-cn-en/p/pWVjLJsYc0",  "chars": 13264,  "offset": 0,  "truncated": true,  "next_offset": 2000,  "content": "..."}
jsonc
// find_in_doc(doc_id="01a06659-…", query="波特率"){  "doc_id": "01a06659-2d4e-7029-bc64-63f9352b34a6",  "title": "PIPER X 用户手册(CN)",  "url": "https://kb.agilex.ai/s/agx-robot-arm-products-cn-en/p/pWVjLJsYc0",  "chars": 13264,  "query": "波特率",  "count": 1,  "hits": [    {      "offset": 12101,                // ← feed straight into get_doc      "heading": "6 机械臂CAN协议",      "score": 45.85,      "matched": ["波特", "特率"],      "excerpt": "…通讯波特率为1000K,报文格式采用MOTOROLA(MSB)格式…"    }  ],  "hint": "用 get_doc(doc_id, offset=hit.offset) 读这一段前后;offset 是全文绝对位置。"}

url always points at the original page — cite it so the user can verify.


Client configuration

Claude Code
bash
# all projectsclaude mcp add --scope user --transport http agilex-docs https://service.agilex.ai/agilex-docs/mcp
# this project only (writes .mcp.json, can be committed)claude mcp add --scope project --transport http agilex-docs https://service.agilex.ai/agilex-docs/mcp
claude mcp list
Codex CLI
bash
codex mcp add agilex-docs --url https://service.agilex.ai/agilex-docs/mcp

or ~/.codex/config.toml:

toml
[mcp_servers.agilex-docs]url = "https://service.agilex.ai/agilex-docs/mcp"

Inside Codex, /mcp lists active servers. Codex uses the server's instructions field as global guidance, so the search-then-read workflow is already in place.

Cursor

.cursor/mcp.json in the project, or ~/.cursor/mcp.json globally:

json
{  "mcpServers": {    "agilex-docs": {      "url": "https://service.agilex.ai/agilex-docs/mcp"    }  }}

Reload the window (Ctrl+Shift+P → Reload Window). Settings → MCP should list agilex-docs with 5 tools.

VS Code / Copilot

.vscode/mcp.json — note the top-level key here is servers, not mcpServers:

json
{  "servers": {    "agilex-docs": {      "type": "http",      "url": "https://service.agilex.ai/agilex-docs/mcp"    }  }}

Or Ctrl+Shift+P → MCP: Add Server → HTTP → paste the URL.

Claude Desktop (stdio bridge)

Claude Desktop only speaks stdio, so bridge the endpoint with mcp-remote:

json
{  "mcpServers": {    "agilex-docs": {      "command": "npx",      "args": ["-y", "mcp-remote", "https://service.agilex.ai/agilex-docs/mcp"]    }  }}

Quit and reopen the app completely after saving.

Cherry Studio

Settings → MCP Servers → Add → type streamableHttp, URL as above. Cherry Studio also accepts the mcpServers JSON directly.

DeepSeek Harness (DSH)

DSH connects through @deepseek-ai/dsh-mcp-client, configured as a Cordis overlay:

yaml
- insert:    - id: agilex-docs      name: '@deepseek-ai/dsh-mcp-client'      config:        serverName: agilex-docs        transport: streamable-http        url: https://service.agilex.ai/agilex-docs/mcp
bash
dsh web --patch "$PWD/examples/agilex-docs.cordis.yml"

Tools appear as mcp__agilex-docs__search_docs.

ChatGPT custom connector

Paid plan, web only: Settings → Connectors → Advanced → enable Developer mode → Create → URL above, authentication No authentication.


Example prompts

I need a CAN control script for the piper arm. First call search_docs with "piper CAN 报文", then get_doc on the best hit, and write the code using the frame format and baud rate from the manual. Cite the manual URL in a comment.

Our ranger mini throws a chassis error code. Search the after-sales FAQ for the code, quote the troubleshooting steps and link the page.

Because the server ships an instructions block telling the model to search first and cite URLs, the workflow usually happens without any extra prompting.


Scope and data

The corpus covers product documentation that is publicly accessible at https://kb.agilex.ai. Internal spaces are excluded: the service reads only publicly shared content and never authenticates, so internal documents cannot be reached through this endpoint.

MCP access therefore does not depend on the visitor login on the knowledge base. Search and reading work anonymously; only the human-facing page url redirects to a visitor login (that gate exists for access logging, not authorization).

When a query names a product (pika 固件升级, ranger CAN 波特率), results are restricted to that product's documents. If the product has not documented the topic, the reply is an empty result set with a hint saying so — it never falls back to another product's manual. Cross-product fallback is the dangerous failure mode here: a user could follow PiPER flashing steps on a PIKA.

Pages with content263
Of those, ≥500 chars of prose242 (substantial in /health; a length statistic, not a content check)
Container / empty entries84 (excluded from search)
Spaces26
Characters~3.0 M
Refreshdaily 05:20 Asia/Shanghai
LanguagesChinese and English

The knowledge base also contains folder pages and placeholder pages with no body text. These are excluded from search results: a folder titled "PIKA固件升级" would otherwise outrank real content for that query and return an empty page. They remain listable through list_docs, and get_doc on one returns empty: true with a hint rather than 0 characters.

New public spaces are added automatically; withdrawn shares are removed on the next refresh.


Rate limits

ScopeLimit
Per IP, per minute60 requests
Per IP, per day3 000 requests
Over limitHTTP 429 + Retry-After

Higher quota or a dedicated endpoint: contact AgileX (see Feedback).


Limits

  • Read-only. No write tools; nothing here can move a robot.
  • Images are not inlined. Attachment URLs on the source pages are signed with a short TTL, so images render as (图:caption); open the page url to view them.
  • Binary attachments (PDF/XLSX) in public spaces are not parsed — page bodies only.
  • Lexical matching, not semantic. Rephrase if a term misses.
  • One product family per query works best; cross-product questions need multiple searches.

Verify it works

bash
# healthcurl -s https://service.agilex.ai/agilex-docs/health | jq
# MCP handshake — the reply is text/event-stream, so strip the "data: " prefix# before piping to jq (piping SSE straight into jq fails with a parse error)curl -s -X POST https://service.agilex.ai/agilex-docs/mcp \  -H 'Content-Type: application/json' \  -H 'Accept: application/json, text/event-stream' \  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}' \  | sed -n 's/^data: //p' | jq '.result.serverInfo'
# full round trip (initialize → tools/list → search → find_in_doc → get_doc)./scripts/smoke-test.sh
# the Chinese README as plain text (same source as README.zh-CN.md)curl -s https://service.agilex.ai/agilex-docs/readme.md | head

Repository layout

README.md                    this fileREADME.zh-CN.md              Chinese version; also served at /agilex-docs/readme.mdserver.json                  official MCP Registry manifestLICENSE                      MIT (documentation + manifest)docs/CLIENTS.md              per-client setup, long formexamples/                    copy-paste configs per clientscripts/smoke-test.sh        end-to-end check against the live endpoint

Where to find it

DirectoryEntryLink
ModelScope 魔搭Chinese listing, Cursor one-click installhttps://modelscope.cn/mcp/servers/Vicious/agilex-docs
Official MCP Registryai.agilex.service/docs v1.2.1https://registry.modelcontextprotocol.io/?q=agilex
GlamaTDQS A (4.3/5)https://glama.ai/mcp/connectors/ai.agilex.service/docs
GitHubthis repository, MIThttps://github.com/wgjsg/agilex-docs-mcp

Search term inside any directory: agilex.

The endpoint is fixed, so no directory listing is required to use it.


Feedback

Missing or wrong document → contact AgileX support through https://www.agilex.ai/ and include the page URL.

Issues about this repository (manifest, docs, client configs) → open an issue here. Issues about document content → the support channel, since the docs live in the internal knowledge base and this repo cannot edit them.


License

MIT — see LICENSE. The license covers the documentation and manifest in this repository. The documentation content served over MCP remains the property of AgileX Robotics.

来源:README.md,提交 98f825a

工具

5

search_docs

Full-text search over the official AGILEX product documentation. Use this first for any question about AGILEX hardware: pinouts, CAN protocol details, baud rate, firmware upgrade, error codes, LED/beep meanings, installation, calibration, SDK usage. Args: query: Chinese or English keywords. Include the product name (piper / pika / nero / ranger / limo / scout / bunker / hunter / tracer / umr) plus the concept, e.g. "piper CAN 波特率". limit: 1-25 results, default 8. space: optional space slug or name fragment to narrow the search, e.g. "agx-chassis-manual-cn-en" or "底盘使用手册". Returns JSON: {query, count, results:[{doc_id,title,space,url,score,chars,snippet}]}. ``count`` is the number of results in this reply (0-``limit``). A result whose title carries 【未发】/【暂不对外】 includes ``status_note``. ``doc_id`` is what ``get_doc`` expects.

输入参数limitquery必填space

find_in_doc

Locate a passage *inside* one manual, without paging through it. Use this after ``search_docs`` whenever you need a specific table, command or error code rather than the whole page — including short documents, because manuals commonly open with a preamble and page 1 rarely answers a question. It returns the exact ``offset`` of each match, so one ``get_doc(doc_id, offset=...)`` lands on the right section. Prefer this over repeatedly calling ``get_doc`` with increasing offsets. Args: doc_id: id from ``search_docs`` (also accepts the page slug). query: the *concept*, not the product name — e.g. "波特率" or "急停 接线". Terms that already appear in this page's title are ignored, because ``search_docs`` picked the page by them; passing the product name again only adds noise. Generic words that appear in nearly every manual are down-weighted, so one distinctive term is enough. limit: 1-10 passages, default 5. Matching is OR, not AND: a passage is returned when it contains at least one term with enough weight. Terms that are absent from this page therefore do **not** force a zero result — check ``missing_terms`` to see which of your words this page never mentions, and ``matched_terms`` for the ones it does. A query made only of stop words (or nothing) returns ``count: 0`` with a hint. Returns JSON: {doc_id,title,space,url,chars,query,count,returned, matched_terms,missing_terms,hits:[{offset,heading,score,matched,excerpt}], hint}. ``count`` is the total number of matched passages; ``returned`` is how many are in ``hits`` (capped by ``limit``). ``heading`` is the nearest heading above the passage; ``offset`` is absolute in the page body.

输入参数limitquery必填doc_id必填

get_doc

Read one documentation page as Markdown. Call this with a ``doc_id`` returned by ``search_docs`` (or a slug such as ``ymZimX7JLe``). Manuals are often 20k-60k characters, so this tool paginates: if the reply has ``truncated: true`` and a ``next_offset``, call again with that ``offset`` to continue. Do not re-request the same offset. Args: doc_id: id from search_docs (also accepts the page slug). max_chars: characters per call, default 20000, max 120000. offset: start position, default 0. Returns JSON: {doc_id,title,space,url,chars,offset,returned,max_chars, truncated,next_offset,updated_at,content}. Always cite ``url``. If the page has no body (folder or unwritten page), the reply has ``empty: true`` and a hint — do not retry with other offsets.

输入参数doc_id必填offsetmax_chars

list_docs

List documented pages, optionally inside one space. Use when the caller wants an inventory ("what manuals exist for ranger") rather than an answer. Args: space: optional space slug or name fragment. limit: 1-300, default 100. offset: pagination offset, must be >= 0. Returns JSON: {space, count, offset, docs:[{doc_id,title,space,url,chars}]}. ``count`` is the number of docs in this page; there is no total field. ``count`` is the number of docs in this page; compare with ``limit`` to decide whether to request the next page. There is no total field — use ``list_spaces`` for per-space counts.

输入参数limitspaceoffset

list_spaces

List the public documentation spaces with page counts. Call this when the caller is unsure which product family a document belongs to, or to explain coverage. Returns JSON: {count, spaces:[{space,name,docs,chars}]}.

无需输入参数。

版本历史

3
  1. v1.2.1最新Nov 4, 2026
  2. v1.1.0Nov 4, 2026
  3. v1.0.2Nov 3, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分