mcpField
R
redis-docs-mcp

redis-docs-mcp

github.com/redis其他17411 次安装1 天前更新
代码仓库

关于 redis-docs-mcp

为 redis.io 文档查询工具提供使用指南,面向通过 Redis Docs MCP 查找 Redis 资料的用户。它解释索引标识符、元数据与文档覆盖范围,并说明搜索、获取和提问工具的使用边界。

主要功能

  1. 01解释文档分段标识符
  2. 02区分版本元数据的含义
  3. 03说明文档索引覆盖范围
  4. 04提供搜索与获取结果的处理建议
  5. 05说明 ask 的限流与回退方式

适用场景

  1. 01查找 Redis 命令或客户端文档
  2. 02区分同页搜索结果中的不同段落
  3. 03核实功能引入版本信息
  4. 04ask 受限或无结果时改用搜索获取

MCP 相关

该技能指导如何使用 redis-docs MCP 服务的 search、fetch 和 ask 工具。服务向 MCP 客户端提供 redis.io 文档查询与获取能力。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/redis/agent-skills --skill redis-docs-mcp

安装后在 Claude Code 中输入/redis-docs-mcp确认已加载。

详细介绍

Redis 文档 MCP

redis-docs 服务通过 MCP 提供 redis.io 文档,并提供 search、fetch 和 ask。这些工具各自带有说明;对于何时调用每个工具,说明是准确的——先用 search,再用 fetch 获取所需内容,只有涉及多个领域的问题才用 ask。本技能介绍这些说明中有误或未提及的内容。

适用场景

  • 你准备通过这些工具查找信息。
  • 返回结果与工具说明承诺的不符。
  • search 没有返回结果,或者 ask 遭遇速率限制或拒绝回答。

如果相关的 Redis 同级技能涵盖了该主题,请优先使用它们——其中包含原始文档页面没有的精选指南。使用这些工具核实具体信息并补充缺漏。

1. ID 指向的是章节,而不是页面

工具说明说 search 会返回“页面”,而 fetch 会返回“一页 Redis 文档”。索引按章节划分,ID 有四种形式:

形式示例fetch 返回的内容
裸页面commands/expire整个页面——EXPIRE 页面约 8.5 KB,包含示例和附录
命名锚点develop/using-commands/keyspace#sec:key-expiration该章节
序号窗口develop/ai/search-and-query/advanced-concepts/expiration#sec:w0该窗口,约 1–2 KB
锚点 + 窗口develop/clients/jedis/connect#sec:configure-a-connection-pool-w0该章节的窗口

由此可知:

  • 同一组结果中重复出现的 URL 并非重复结果。 多个命中项通常共享一个页面 URL,但 ID 不同——它们是同一页面中的不同章节。请根据摘要片段而非 URL 区分它们。
  • #sec:wN 序号表示索引窗口。 这些窗口按相关性排序返回,而非按 w0、w1、w2 排列。不要试图根据摘要片段重新拼出页面;请用 fetch 获取你真正需要的章节。
  • 切勿自行构造 ID。 有效 ID 来自 search 结果,或 ask 结果中的 sources[].id。猜测 commands/<name> 恰好可行,但对所有章节类 ID 都无效。
  • 摘要片段是正文开头被截断的部分,并非总结。 如果它恰好在关键信息处截断于某个单词中间,那么通过该 ID 使用 fetch 就一定能获取后续内容——无需换用其他词重新搜索。
  • 引用页面的 url,并在正文中注明章节。 #sec:w1 是索引地址,不是网页锚点。带命名锚点的 ID(#sec:<name> 或 #sec:<name>-wN)会返回带有可用片段的 URL;裸 #sec:wN ID 则不会。

返回文本中的链接指向源文件——[`DEL`](/content/commands/del.md)——它们既不是网页 URL,也不是 fetch ID。不要引用它们,也不要将其转换成 ID;应改为搜索相关词条。

2. metadata.version 表示“引入于”,而非“截至此版本”

fetch 会返回包含 topic、version 和 section 的 metadata。在 commands/* 页面中,version 是命令引入时对应的版本——commands/setex 显示 2.0.0,commands/hexpire 显示 7.4.0。这个字段只适用于回答“它是什么时候加入的”,除此之外没有其他用途:commands/expire 显示 1.0.0,但其正文记载了 2.1.3 中的行为变更,以及它与 Redis Search 在 Redis 8 中的交互。在 commands/* 之外,该字段通常根本不是版本号——Redis Search 页面会显示产品渠道 stack。

因此,切勿根据 metadata.version 回答“这个功能是否在 Redis N 中发生了变化?”。请从正文中读取明确说明的内容(例如“Redis 8 之前……”或“自 Redis 7.4 起”),并引用该内容。

3. 语料库涵盖的内容

索引仅包含 redis.io,但其范围比听起来更广。索引并会返回各语言客户端的使用指南(develop/clients/redis-py/connect#sec:…、develop/clients/jedis/connect#sec:…),以及 integrate/… 页面、operate/… 下的 Redis Software 和 Redis Cloud 运维文档,还有 Kubernetes operator 生成的 CRD 参考文档。因此请先搜索,包括客户端库和 Enterprise 相关问题。

详细信息往往不在摘要中。搜索 redis-py 的 max_connections 时,结果会返回 develop/clients/redis-py/async#sec:connection-pools,摘要中却完全没有提到它,但获取的章节对此有说明。对于库的完整签名,应以其自身的 API 参考或源代码为准。

确实不在索引中的内容包括:GitHub 问题和讨论、包管理器页面(PyPI、npm、Maven)以及第三方文章。

因此,在断定缺少内容之前,请先 fetch 相关结果;即便如此,也应表述为“在我检索到的结果中未找到”,绝不要说“redis.io 上没有”或“不存在”。

4. ask 的成本比看起来更高

  • 每个 IP 的每分钟调用额度较低,并由同一 NAT 后的所有人共享,因此办公室或 CI runner 可能会共同耗尽额度。遇到速率限制错误时,先等待一段时间再重试,不要立即重试;并且一次只问一个具体问题。
  • 如果收到拒绝,不要换种说法再试。“文档未涵盖此内容”是有依据的结果,不是解析失败。请改用 search + fetch。
  • 如果要查找综合回答背后的原始来源,请使用 ask → sources[].id → fetch。

每个工具的查询文本都会发送给 Redis;通过 ask 提交的查询还会发送给网关背后的模型提供商。因此,与其粘贴专有代码,不如提出关于 Redis 命令或行为的一般性问题。

评论

支持 Markdown