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 应用设置
- 访问 并创建一个新的应用程序 从头开始。
- 在 OAuth & 权限,添加机器人范围(或权限)
channels:history,
channels:read,以及 users:read。
- 将该应用程序安装到您的工作区,并复制 机器人用户OAuth令牌.
- 邀请机器人加入目标频道(例如。,
/invite @Slack Pulse)。 - 获取频道ID(右键点击频道→ 复制频道ID)。
在Replit上一键部署
- 点击 创建副本 → 从GitHub导入 并指向这个存储库。
- Replit检测到
replit.nix并自动提供 Python 3.11。 - 在Replit的左侧边栏中,打开 秘密 并补充:
- SLACK_BOT_TOKEN - CHANNEL_ID - API_KEY - (可选) DATABASE_URL, SYNC_INTERVAL_SECONDS
- 新闻界(或“媒体”) 跑. 的
.replit配置文件安装requirements.txt并且发射
uvicorn server:app --host=0.0.0.0 --port=8000。
- 一旦启动成功,请点击 在新标签页中打开 按钮用于查看服务。
- 验证部署:
- GET https://.repl.co/healthz - GET https://.repl.co/api/daily-checkins 带有标题 X-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=8000REST API 概述
| 方法 | 路径 | 描述 |
|---|---|---|
GET | /healthz 服务就绪探针。 | |
GET | /api/daily-checkins | 今天的签到。 |
GET | /api/absentees?date=YYYY-MM-DD | 缺席某日期的人员(默认为今天)。 |
GET | /api/checkin?user=&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:mcpClaude 桌面配置
{
"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工具。
