内容
# redlib-mcp
一款私有的、自我托管的窗口,用于为您的 AI 代理提供公共 Reddit 内容 —— 无需登录,无需跟踪,只需一个命令,即可在 Claude Code、Codex、Cursor 和 Gemini CLI 中运行。
`redlib-mcp` 是一个模型上下文协议(MCP)服务器,允许 AI 代理通过自我托管的 [Redlib](https://github.com/redlib-org/redlib) 实例读取公共 Reddit 内容。 它包含三个部分,它们一起工作:
- 一个 **MCP 服务器**(读取器 —— 四种工具),
- 一个 **跨平台 CLI**(`redlib-mcp setup | restart | update | doctor`),用于安装和操作 Redlib 后端,
- 一个 **设置技能**,用于从您的代理驱动 CLI。
Redlib 本身从不捆绑 —— CLI 从您的机器上的固定、审查的上游提交克隆并构建它。
**要求:** Docker 或 Podman,以及 Node.js(MCP 服务器和 CLI 通过 `npx` 运行;CI 在 Node 20 上测试)。
## 安装
**Claude Code — 作为插件安装**(技能 + MCP 服务器合二为一):
```bash
/plugin marketplace add grazomarin/redlib-mcp
/plugin install redlib-mcp@redlib-mcp
```
插件安装后**启用**,因此 `redlib` MCP 服务器和 `setup-redlib` 技能立即连接。**MCP 工具在您一次性构建后端之前不起作用** —— 启用插件只会加载连接,而不是工具读取的 Redlib 实例。 运行:
```bash
redlib-mcp setup # 克隆 + 构建 Redlib 容器;`serve` MCP 已经由插件连接
```
在第一次构建完成之前(一个多分钟的编译),`redlib` MCP 显示连接但每个工具都返回 `REDLIB_DOWN`。设置完成后,请运行 `/reload-plugins`(或启动新会话)。
**其他客户端(Codex / Cursor / Gemini CLI)- 安装技能:**
```bash
# 在您的代理中安装设置技能
npx skills add grazomarin/redlib-mcp
# 然后让您的代理运行它,或直接运行 CLI:
npx -y redlib-mcp@1.0.1 setup
```
`setup` 解析 docker 或 podman,从源代码克隆并构建 Redlib,绑定到 `127.0.0.1:8080`,验证它,并(在您确认后)将其注册到您的客户端配置中。插件和 CLI 都以端口 `8080` 为目标;如果您运行 `setup --port <n>`,请在 MCP 条目中设置 `REDLIB_URL`。如果有问题,请参见 `redlib-mcp doctor`。
## CLI
`redlib-mcp` 命令**可由人类直接从终端使用**,也可由 AI 代理驱动 —— 相同的命令。运行 `redlib-mcp` 获取命令列表,或运行 `redlib-mcp <command> --help` 获取命令的标志。
| 命令 | 功能 |
| --- | --- |
| `setup` | 解析 docker/podman,从固定的提交中构建 Redlib,在 `127.0.0.1:8080` 上运行它,验证它,并注册 MCP |
| `restart` | 重启后端以重新获取过时的 Reddit token(读取失败,而容器保持运行)- 在任一引擎上查找它 |
| `update` | 在固定的提交中重建;仅在验证后升级(从不跟踪上游 HEAD) |
| `doctor` | 检查引擎、守护进程、容器、健康状态 + 内容,并打印修复每个问题的步骤 |
| `serve` | 通过 stdio 运行 MCP 服务器(您的客户端启动此进程) |
`doctor` 打印一个颜色编码的检查清单,并附有每个失败行的修复步骤,因此人员无需代理即可进行自我诊断:
```text
OK 引擎:podman (/usr/bin/podman) — 主机后端
OK 守护进程:可达
FAIL 容器在 :8080: 未运行
-> 运行 `redlib-mcp setup` 以构建和启动 Redlib 后端。
```
命令在 **docker 或 podman** 下运行,自动选择(覆盖 `--engine docker|podman`);`restart`、`doctor` 和 `update` 定位在任一引擎上运行的后端。
## 工具
| 工具 | 读取内容 |
| --- | --- |
| `search_reddit` | 搜索结果(短关键词查询) |
| `get_subreddit_posts` | 子版块的帖子(热门/置顶/新/正在上涨)+ 分页 |
| `get_post` | 一个帖子及其线程评论 |
| `get_user_activity` | 用户最近的提交(源验证) |
## 用例
用自然语言向您的代理提出一个实际问题 —— 它会搜索、读取相关线程并综合社区的实际发言。您不需要指定工具;它会选择。
- **小众推荐** — “Reddit 用户推荐哪些 CLI 文件管理器,为什么?” 代理运行 `search_reddit`,打开顶级线程与 `get_post`,并返回共识选择(yazi、ranger、nnn 等)以及人们引用的权衡取舍 —— 社区的答案,而非某篇博客的答案。
- **比较和权衡观点** — “人们如何比较 Chakra UI 和 shadcn/ui,哪一个更受欢迎,为什么?” 它拉取子版块的讨论并总结两方的论点:开发者体验参数、“拥有自己的组件”案例、迁移抱怨。
- **深入研究一个线程** — “总结这个帖子的讨论:`<reddit-url>`” 拉取 `get_post` 及其线程评论,供代理提炼。
- **验证来源** — “`u/<name>` 最近发布了什么?” 运行 `get_user_activity`,在您信任一个热门观点之前非常有用。
所有内容都是只读的,从您的 loopback Redlib 提供;代理永远不会直接联系 reddit.com。
## 限制
- **仅限公共、只读内容。**帖子、评论和用户提交 — 它无法发布、投票、发送消息或访问登录保护的内容。
- **跟随上游 Redlib.** Reddit 会定期更改其数据服务方式,这可能会导致读取失败,而容器保持运行。`redlib-mcp restart` 重新获取并通常恢复;`redlib-mcp update` 移动到新审查的 Redlib 版本。如果它在当前的固定版本中持续存在,则是上游问题,而不是您的设置问题。
- **按设计限速.** 保守的请求上限(`REDLIB_MIN_INTERVAL_MS`,默认为 300 毫秒)间隔您的后端请求。
## 配置
| 变量 | 默认值 | 备注 |
| --- | --- | --- |
| `REDLIB_URL` | `http://127.0.0.1:8080` | 您的 Redlib 实例。使用 `127.0.0.1` 而不是 `localhost`(双栈主机可能会将 `localhost` 解析为 `::1` 并错过 loopback-only 绑定)。 |
| `REDLIB_MIN_INTERVAL_MS` | `300` | 后端请求的最小间隔。 |
| `REDLIB_ALLOW_REMOTE` | (未设置) | 设置为 `1` 以允许非 loopback `REDLIB_URL`(默认关闭)。 |
| `REDLIB_MCP_CLIENT_CONFIG` | (未设置) | `setup` 将服务器注册到的 MCP 客户端配置文件路径。 |
| `REDLIB_ENGINE` | (自动) | 强制引擎的 `docker`/`podman` 二进制文件的绝对路径(不接受裸露或相对名称)。 |
MCP 仅与您自己的 loopback Redlib 通信,从不直接联系 reddit.com;它应用保守的请求速率上限。
**HTTP 传输(高级)。** 默认情况下,服务器通过 stdio 使用 MCP。设置 `USE_HTTP=true` 以在 `127.0.0.1`(loopback)上的 `PORT`(默认为 `3000`)上通过 HTTP 提供服务;设置 `REDLIB_MCP_TOKEN` 以需要 bearer token(推荐 — 没有它,端点是未经身份验证的)。启用了 DNS 重新绑定保护。
**CLI 退出代码**(`setup`/`restart`/`update`/`doctor`):`0` 成功 · `2` 错误标志/未知命令 · `3` 容器引擎/守护进程无法访问 · `4` 容器已启动但不健康 · `5` 验证失败(构建丢弃) · `6` 验证不确定(保留当前镜像)。
## 平台支持
| 操作系统 | 状态 |
| --- | --- |
| Linux | 已测试(参考平台) |
| macOS | 实验性,直到验证 |
| Windows | 实验性,直到验证 — 需要帮助 |
代码针对这三个平台(Node + Docker Desktop / Podman);标签反映测试覆盖范围,而非意图。
## 支持
`redlib-mcp` 免费且开源。如果它为您节省了时间,您可以支持它的维护:
[](https://buymeacoffee.com/grazomarin)
## 您的责任
您在自己的机器上运行和控制 Redlib 后端。您负责您的使用以及遵守您访问的服务的条款。本项目不托管任何实例,也不提供凭证。
## 许可证和归属
- 此包装器是 **MIT**(见 `LICENSE`),源自 [devthatdoes/redlib-mcp-server](https://github.com/Devthatdoes/redlib-mcp-server)。
- [Redlib](https://github.com/redlib-org/redlib) 是一个单独的程序,位于 **AGPL-3.0** 下,在您的机器上克隆和构建 — 见 `NOTICE`。
- 不隶属于或得到 Reddit, Inc. 的认可。“Reddit”仅用于描述此工具读取的公共内容。