Reddit MCP服务器

一个支持通过OAuth刷新令牌进行读写操作的Reddit API MCP服务器,无需用户名和密码。

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

使用说明

Reddit MCP服务器

Reddit API的MCP服务器,通过OAuth刷新令牌提供完全读/写支持。无需用户名或密码——使用Reddit的标准OAuth 2.0 web应用程序流。

为什么存在

现有的Reddit MCP服务器需要用户名/密码才能进行写入操作。这个使用Reddit的OAuth刷新令牌流——在浏览器中授权一次,服务器自动处理令牌刷新。

可用工具

阅读

工具 说明
reddit_get_post 获取带有评论的帖子
reddit_get_top_posts 来自subreddit的热门帖子
reddit_search 搜索Reddit
reddit_get_subreddit_info 子涡流元数据
reddit_get_user_info 用户资料信息

写

工具 说明
reddit_create_post 创建文本或链接帖子
reddit_reply 回复帖子或评论
reddit_edit 编辑您自己的帖子或评论
reddit_delete 删除您自己的帖子或评论
reddit_vote 投票赞成、投票反对或未投票

先决条件

  1. Node.js 18+
  2. Reddit“网络应用程序” --创建一个 reddit.com/prefs/apps
    • 类型: Web 应用
    • 重定向URI: http://localhost:48820/callback
    • 注意你的 客户端ID (在应用程序名称下)和 客户端密钥

设置

选项1:OAuth(推荐)

添加到您的MCP客户端配置中(例如Claude Desktop):

{
  "mcpServers": {
    "reddit": {
      "command": "npx",
      "args": ["-y", "@pegasusheavy/reddit-mcp-server"],
      "env": {
        "REDDIT_CLIENT_ID": "your-client-id",
        "REDDIT_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

首次运行时,会打开一个浏览器进行Reddit授权。批准后,刷新令牌将保存到 .reddit-token.json 并在后续启动时自动刷新。

选项2:手动令牌

如果您已经拥有OAuth访问令牌:

{
  "mcpServers": {
    "reddit": {
      "command": "npx",
      "args": ["-y", "@pegasusheavy/reddit-mcp-server"],
      "env": {
        "REDDIT_ACCESS_TOKEN": "your-token"
      }
    }
  }
}

环境变量

变量 必填 描述
REDDIT_CLIENT_ID 是* Reddit应用程序客户端ID
REDDIT_CLIENT_SECRET 是* Reddit应用程序客户端机密
REDDIT_ACCESS_TOKEN 否 手动令牌回退(OAuth的替代方案)
REDDIT_USER_AGENT 否 自定义用户代理(默认为 linux:@pegasusheavy/reddit-mcp:v1.0.0 by PegasusHeavy)

*除非使用 REDDIT_ACCESS_TOKEN.

工具调用示例

搜索Reddit

{
  "name": "reddit_search",
  "arguments": {
    "query": "rust programming",
    "subreddit": "programming",
    "sort": "top",
    "time": "week",
    "limit": 5
  }
}

创建帖子

{
  "name": "reddit_create_post",
  "arguments": {
    "subreddit": "test",
    "title": "Hello from MCP",
    "text": "Posted via the Reddit MCP server."
  }
}

对评论的回复

{
  "name": "reddit_reply",
  "arguments": {
    "thingId": "t1_abc123",
    "text": "Great point! Here's my take..."
  }
}

发展

git clone https://github.com/pegasusheavy/reddit-mcp.git
cd reddit-mcp
pnpm install
pnpm build
pnpm test

脚本

pnpm build          # Compile TypeScript
pnpm dev            # Run from source with tsx
pnpm test           # Run tests
pnpm lint           # ESLint
pnpm format:check   # Prettier check

项目结构

src/
├── index.ts              # Entry point — env check, auth, server launch
├── server.ts             # MCP server with tool registration
├── auth/
│   ├── oauth.ts          # RedditOAuth + TokenManager classes
│   └── oauth-server.ts   # Local HTTP callback server (port 48820)
├── client/
│   └── reddit-client.ts  # Axios-based Reddit API client
└── types/
    └── reddit.ts         # Zod schemas and TypeScript types

贡献

  1. 分叉回购
  2. 创建要素分支(git checkout -b feature/my-feature 关 develop)
  3. 用常规承诺进行承诺(feat:, fix:, chore:等等)
  4. 打开一个PR develop

许可证

麻省理工学院——见 许可证 了解详情。

版权所有(c)2025飞马重工业有限公司