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 分