加密货币讨论抓取服务

一个从Reddit的r/BitcoinMarkets和r/ethereum抓取高质量加密货币市场讨论的MCP服务器,部署在Netlify Edge Functions上。

  • by thorn0
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 thorn0/crypto-mcp-server

使用说明

Reddit每日线程MCP服务器

🚀 直接在ChatGPT中从r/BitcoinMarkets和r/ethereum获取加密货币市场讨论

一个最小的MCP服务器,提供经过过滤的每日讨论线程和高质量的评论,作为经济高效的Netlify边缘功能部署。

✨ 特性

  • 🔍 智能过滤:排除低质量评论(分数≤-10)和机器人
  • ⚡ 实时:获取包含最近评论的最新每日帖子
  • 💰 成本效益高:部署在Netlify Edge功能上(每月3M免费请求)
  • 🔗 易于集成:简单的ChatGPT连接器设置

🚀 快速开始

先决条件

  • Node.js 18+
  • 具有API访问权限的Reddit帐户
  • Netlify帐户(免费)

1.设置

# Clone and install
git clone <your-repo-url>
cd crypto-mcp-server
npm install

# Create environment file
cat > .env << 'EOF'
REDDIT_CLIENT_ID=your_client_id_here
REDDIT_CLIENT_SECRET=your_client_secret_here
REDDIT_USERNAME=your_reddit_username
REDDIT_PASSWORD=your_reddit_password
EOF

🔑 获取Reddit API证书:

  1. 首选https://www.reddit.com/prefs/apps
  2. 点击“创建应用”→ 选择“脚本”类型
  3. 将客户端ID和密码复制到您的 .env 文件

2.本地测试

# Start development server
npm run dev
# ✅ Server running at http://localhost:8888

# Test the MCP server
npm test
# ✅ All tests should pass

# Test individual components
npm run test:unit
# ✅ Unit tests should pass

3.部署到Netlify

选项A:Netlify CLI(推荐)

# Install Netlify CLI globally
npm install -g netlify-cli

# Login and deploy
netlify login
netlify init
netlify env:set REDDIT_CLIENT_ID "your_client_id"
netlify env:set REDDIT_CLIENT_SECRET "your_client_secret"
netlify env:set REDDIT_USERNAME "your_username"
netlify env:set REDDIT_PASSWORD "your_password"
netlify deploy --prod
# ✅ Deployed to https://your-site.netlify.app

选项B:GitHub集成

  1. 将代码推送到GitHub
  2. 导入到Netlify
  3. 在“站点设置”中设置环境变量→ 环境变量
  4. 推送时自动部署

4.连接到ChatGPT

  1. 打开ChatGPT → 设置 → 连接器 → 高级
  2. 启用开发者模式 ✅
  3. 创建连接器:
    • 姓名: Reddit Daily Threads
    • 网址: https://your-site.netlify.app/mcp
  4. 测试一下: 问 “从r/BitcoinMarkets获取最新的每日讨论”

📖 用法

工具: fetch_reddit_daily_threads

参数:

  • subreddit (必填): "BitcoinMarkets" 或 "ethereum"
  • intervalHours (可选):回顾时间(默认值:24)

示例提示:

  • "Fetch r/ethereum daily discussion for the last 12 hours"
  • "Get BitcoinMarkets daily thread from yesterday"
  • "Show me the latest crypto market discussion"

🔧 运作原理

  1. 🔐 验证 使用您的凭据使用Reddit OAuth2
  2. 📡 获取 来自subreddit的2个最新每日讨论帖子
  3. 🔍 过滤器 按分数(>-10)评论,不包括已知的机器人
  4. 📝 格式 带有时间戳、回复链和结构化标签
  5. 📤 退货 ChatGPT的干净、可读数据

💰 成本细分

Netlify边缘功能: 300万免费请求/月

使用水平 每日查询 每月成本
灯光 100 自由
中等 1000 自由
重型 10000 自由
企业 100000+ 2美元/百万请求

您需要每天100000多次查询才能超过免费级别!

📁 项目结构

crypto-mcp-server/
├── reddit.mjs                      # Core Reddit fetcher (Node & Deno compatible)
├── netlify/edge-functions/mcp.mjs  # MCP server (JSON-RPC 2.0)
├── test/reddit.test.mjs            # Unit tests
├── test/testMcp.mjs                # MCP integration tests
├── public/index.html               # Landing page for deployed site
├── netlify.toml                    # Netlify configuration
└── package.json                    # Dependencies and scripts

💻 CLI使用情况

# Export to file (Node.js only)
node reddit.mjs        # Export last 24h to file
node reddit.mjs 12     # Export last 12h to file

# Output: reddit_BitcoinMarkets_[timestamp]_daily_24h.md

🛠️ 故障排除

问题 症状 解决方案
身份验证失败 Error: No credentials found 检查 .env 文件存在并且具有正确的值
无法连接 ChatGPT显示连接错误 确保URL以结尾 /mcp 并且启用了开发人员模式
超时 请求时间过长 减少 intervalHours 参数(尝试6或12)
无结果 空响应 检查subreddit是否有最近的每日线程
速率限制 HTTP 429错误 请稍候几分钟,然后重试
部署失败 Deploy directory 'public' does not exist 确保 public/ 目录存在 index.html

🧪 测试

# Run all tests
npm test

# Run only unit tests
npm run test:unit

# Test against production URL
node test/testMcp.mjs https://your-site.netlify.app/mcp

🤝 贡献

  1. 分叉 存储库
  2. 创建 特征分支: git checkout -b feature/amazing-feature
  3. 制造 你的更改
  4. 测试 本地: npm run dev && npm test
  5. 提交 信息清晰: git commit -m "Add amazing feature"
  6. 推 到您的分行: git push origin feature/amazing-feature
  7. 打开 拉取请求

📄 许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。


🎯 成功指标:

  • ✅ npm test 通过
  • ✅ ChatGPT连接器显示“已连接”状态
  • ✅ 您可以在ChatGPT中获取每日线程
  • ✅ Netlify函数日志中没有错误