Reddit搜索浏览工具

一个用于搜索Reddit帖子、浏览子版块、阅读评论并通过OAuth2用户认证进行写作的服务器工具。

  • by daanrongen
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 daanrongen/reddit-mcp

使用说明

reddit mcp

MCP服务器 红迪 --通过stdio使用OAuth2用户身份验证搜索帖子、浏览子版块、阅读评论和写作。

安装

bunx @daanrongen/reddit-mcp

工具

域 工具 覆盖范围
搜索 search_posts, search_subreddits 全文帖子和subreddit搜索
浏览 get_subreddit_posts, get_post, get_comments, get_subreddit_info 阅读帖子、评论和subreddit信息
用户 get_user_profile, get_user_posts, get_user_comments 用户资料和活动历史
写 submit_post, submit_comment, vote, save_post 发布、评论、投票和保存(仅限OAuth)

配置

变量 必填 描述
REDDIT_CLIENT_ID 是 OAuth2应用程序客户端ID
REDDIT_CLIENT_SECRET 是 OAuth2应用程序客户端机密
REDDIT_REFRESH_TOKEN 用于写入工具 刷新用户级访问令牌
REDDIT_USERNAME 用于编写工具 Reddit用户名

只读工具(search_posts、浏览和用户工具)仅使用 REDDIT_CLIENT_ID 和 REDDIT_CLIENT_SECRET 使用仅限应用程序的身份验证。写入工具需要有效的刷新令牌。

OAuth2设置

  1. 首选 https://www.reddit.com/prefs/apps
  2. 创建一个 脚本 应用程序(供个人使用)或 Web 应用 (用于用户身份验证)
  3. 注意 客户端ID (显示在应用程序名称下)和 客户端密钥
  4. 对于写访问,运行OAuth2授权流以获取刷新令牌

设置

克劳德桌面版

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "reddit": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@daanrongen/reddit-mcp"],
      "env": {
        "REDDIT_CLIENT_ID": "your-client-id",
        "REDDIT_CLIENT_SECRET": "your-client-secret",
        "REDDIT_REFRESH_TOKEN": "your-refresh-token",
        "REDDIT_USERNAME": "your-username"
      }
    }
  }
}

克劳德代码CLI

claude mcp add reddit \
  -e REDDIT_CLIENT_ID=your-client-id \
  -e REDDIT_CLIENT_SECRET=your-client-secret \
  -- bunx @daanrongen/reddit-mcp

发展

bun install
bun run dev        # run with --watch
bun test           # run test suite
bun run typecheck  # type-check without emit
bun run lint       # biome lint
bun run format     # biome format
bun run build      # bundle to dist/main.js

就地检查

bun run inspect 启动 MCP检查员 反对当地建筑:

bun run build && bun run inspect

这将在浏览器中打开检查器UI,您可以在其中交互式调用任何工具并检查请求/响应形状。

建筑

src/
├── config.ts                  # Effect Config — REDDIT_CLIENT_ID, REDDIT_CLIENT_SECRET, …
├── main.ts                    # Entry point — ManagedRuntime + StdioServerTransport
├── domain/
│   ├── auth.test.ts           # RedditAuth unit tests
│   ├── client.test.ts         # RedditClient unit tests
│   ├── tools.test.ts          # Tool-level data shape tests
│   ├── errors.ts              # RedditError, AuthError
│   ├── models.ts              # Schema.Class models (Post, Comment, Subreddit, …)
│   ├── RedditAuth.ts          # Context.Tag auth service interface
│   └── RedditClient.ts        # Context.Tag client service interface
├── infra/
│   ├── RedditAuthLive.ts      # OAuth2 token management
│   ├── RedditClientLive.ts    # Layer.scoped — Reddit API adapter
│   └── RedditClientTest.ts    # In-memory test adapter
└── mcp/
    ├── server.ts              # McpServer wired to ManagedRuntime
    ├── utils.ts               # formatSuccess, formatError
    └── tools/                 # search.ts, browse.ts, user.ts, write.ts

许可证

麻省理工学院