Slack Pulse API

Slack Pulse API 是一个结合了 FastAPI 和 MCP 的服务,用于从 Slack 频道获取每日签到信息,对每条更新的质量进行分类,跟踪缺席者,并通过安全的 REST 端点和 MCP 工具向 AI 代理暴露结果。

  • by mayank-always
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mayank-always/SlackCheckIns-MCP

使用说明

Slack Pulse API

Slack Pulse API是一个结合了FastAPI和MCP服务的系统,用于接收每日签到信息 从Slack频道中,对每次更新的质量进行分类,追踪缺席人员, 并通过安全的REST端点和MCP工具为AI展示结果 代理。

关键特性

  • Slack 数据摄入 通过(某种方式/途径) conversations.history 带有分页和名单功能 通过水合作用 users.list。
  • 质量评分 使用启发式方法考虑长度、关键词和结构。
  • SQLite持久化 对于用户,签到、缺席人员以及汇总统计。
  • FastAPI 端点 用……保护 X-API-Key 头球
  • MCP工具 (slack-pulse)对于需要程序化访问的副驾驶来说 数据。
  • 已准备好在Replit上使用 一键部署的配置。

环境变量

变量 描述
SLACK_BOT_TOKEN 机器人令牌,带有 channels:history, channels:read, users:read。
CHANNEL_ID 要监控的Slack频道ID(例如。, C1234567890)。
API_KEY REST API访问的共享密钥X-API-Key 头球
DATABASE_URL SQLite 文件的可选路径(默认 slack_pulse.db)。
SYNC_INTERVAL_SECONDS 可选的轮询频率(默认300秒)。

A. .env.example 文件已包含。在本地运行时,请将其复制到 .env 或者 手动导出变量。

Slack 应用设置

  1. 访问 https://api.slack.com/apps 并创建一个新的应用程序 从头开始。
  2. 在 OAuth & 权限,添加机器人范围(或权限) channels:history, channels:read,以及 users:read。
  3. 将该应用程序安装到您的工作区,并复制 机器人用户OAuth令牌.
  4. 邀请机器人加入目标频道(例如。, /invite @Slack Pulse)。
  5. 获取频道ID(右键点击频道→ 复制频道ID)。

在Replit上一键部署

  1. 点击 创建副本 → 从GitHub导入 并指向这个存储库。
  2. Replit检测到 replit.nix 并自动提供 Python 3.11。
  3. 在Replit的左侧边栏中,打开 秘密 并补充:
    • SLACK_BOT_TOKEN
    • CHANNEL_ID
    • API_KEY
    • (可选) DATABASE_URL, SYNC_INTERVAL_SECONDS
  4. 新闻界(或“媒体”) 跑. 的 .replit 配置文件安装 requirements.txt 并且发射 uvicorn server:app --host=0.0.0.0 --port=8000。
  5. 一旦启动成功,请点击 在新标签页中打开 按钮用于查看服务。
  6. 验证部署:
    • GET https://<your-repl>.repl.co/healthz
    • GET https://<your-repl>.repl.co/api/daily-checkins 带有标题 X-API-Key: <API_KEY>

后台任务会自动同步Slack的每一条消息 SYNC_INTERVAL_SECONDS 秒。你可以通过(某种方式)强制刷新 POST /api/refresh.

本地开发

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn server:app --host=0.0.0.0 --port=8000

REST API 概述

方法 路径 描述
GET /healthz 服务就绪探针。
GET /api/daily-checkins 今天的签到。
GET /api/absentees?date=YYYY-MM-DD 缺席某日期的人员(默认为今天)。
GET /api/checkin?user=<id>&date=YYYY-MM-DD 特定用户的登录。
GET /api/summary/day 每日总量及良品率。
GET /api/summary/week 每周用户参与度统计数据。
GET /api/summary/month 30天趋势系列累计值。
POST /api/refresh 触发即时Slack同步。

全部 /api/* 路线需要 X-API-Key 头球

MCP 使用情况

MCP服务器在……中定义 server.py 使用 FastMCP("slack-pulse") 和 提供了以下工具:

  • get_daily_checkins()
  • get_absentees(date: str | None)
  • get_user_checkin(user_id: str, date: str)
  • get_cumulative_report(period: str)

用它来启动 mcp CLI:命令行界面(Command Line Interface)

mcp server server:mcp

Claude 桌面配置

{
  "mcpServers": {
    "slack-pulse": {
      "command": "python",
      "args": [
        "-m",
        "mcp",
        "server",
        "server:mcp"
      ],
      "env": {
        "SLACK_BOT_TOKEN": "${SLACK_BOT_TOKEN}",
        "CHANNEL_ID": "${CHANNEL_ID}",
        "API_KEY": "${API_KEY}",
        "DATABASE_URL": "${DATABASE_URL:-slack_pulse.db}",
        "SYNC_INTERVAL_SECONDS": "${SYNC_INTERVAL_SECONDS:-300}"
      }
    }
  }
}

数据模型

SQLite 表在启动时自动创建:

  • users – Slack 成员名单元数据。
  • checkins – 带有质量评分的个人签到记录。
  • absentees – 用户未在特定日期进行签到。
  • sync_state – 跟踪增量同步进度。

测试

对整个项目进行语法检查:

python -m compileall server.py

对于集成测试,请配置Slack凭证并测试REST接口 端点或MCP工具。