Token导航 LogoToken导航TokenDH.com
ava (Yutakobayashidev) logo
AI代理未说明官方级别未说明来源级核验

ava (Yutakobayashidev)

MCP Server

Ava是一个AI驱动的进度管理工具,通过自动向Slack报告任务进度、阻塞和完成情况,帮助开发者和团队保持沟通,同时不影响工作流程。

工具数

0

提示词数

0

GitHub Stars

9

资源数

0
团队协作TypeScriptClaudeSlackClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

yutakobayashidev

提供方

yutakobayashidev

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

艾娃

![MIT License](LICENSE) ](https://github.com/yutakobayashidev/ava/stargazers) ](https://github.com/yutakobayashidev/ava/issues) ![PRs Welcome](CONTRIBUTING.md) ![DeepWiki](https://deepwiki.com/yutakobayashidev/ava)

Ava 即使是不擅长共享进展和与团队交流的人AI 是创造自动帮助外部化和信息共享的世界的项目。

由于工作过于集中而忘记了进度报告,在堵塞却很难商量的定期进度确认会议上中断编码。有这样的烦恼吗?

Ava 能够

自动进度Slack报告

Claude Code 啊Cursor 等AI 在编码代理中工作时,自动Slack 的规格化距离的幂函数。

  • 任务开始:报告开始致力于什么
  • 进捗更新:随时共享工作进度
  • 封锁报告自动商量有困难的事情
  • 休止・再开:共享其他任务优先和暂停的情况
  • 完了报告:共享完成内容

隐私设计

Slack 中描述的场景,使用下列步骤创建明细表,以便在概念设计中分析体量的周长。不发送代码全文、私钥或令牌或错误日志详细信息。仅提交工作摘要、阻塞暂停原因摘要和完成摘要。

自动控制

什么时候报告,用哪个粒度说话,共享什么可以用自然语言控制。不是完全自动化的工具,根据提示自己控制例程也能得到安心感。

超焦点也可以放心

即使在集中工作的时候AI 取而代之的是和团队进行交流。不需要微管理,可以在保持信赖关系的同时集中精力开发。

______________________________________________________________________

主要功能

MCP 服务器

Model Context Protocol (MCP) 支持HTTP 打开服务器 /mcp 端点提供。AI Agents 中所述修改相应参数的值。

可用工具:

  • start_task -启动任务Slack 通知
  • update_task -更新进度(自动消除阻塞暂停)
  • report_blocked -报告封锁
  • pause_task -暂停任务
  • resume_task -继续暂停任务
  • complete_task -任务完成和PR 报告
  • list_tasks -获取任务列表

OAuth 2.1 + PKCE 认证

在安全认证流程中MCP 保护客户机:

  • 动态客户端注册(/api/oauth/register)
  • Authorization Code + PKCE 流程/oauth/authorize)
  • 访问令牌管理(/api/oauth/token)
  • Well-Known 元数据端点

Slack 统合

用户身份验证:

  • Slack OpenID Connect 无缝登录
  • 以工作区为单位安装机器人

实时通知:

  • 为每个任务创建专用线程
  • 实时发布开始、进度、阻塞、暂停、恢复和完成
  • 不发送代码和机密信息,只发送抽象摘要

每日报告:

  • /daily-report 通过命令AI 生成每日摘要
  • 仅对执行用户可见ephemeral message

Stripe 预订

Terraform 费用计划管理:

  • Infrastructure as Code 管理费用计划
  • dev/prod 每个环境的独立设置
  • lookup key 灵活的价格管理
  • Stripe Provider(lukasaron/stripe)を使用

预订API:

  • 检出 (POST /api/stripe/checkout:重定向至预订购买屏幕
  • 吊索入口 (POST /api/stripe/portal-session:重定向至预订管理屏幕
  • 预订获取 (GET /api/stripe/subscription:获取当前预订信息

Webhook 対応:

  • customer.subscription.created/updated/deleted:自动同步预订更改
  • customer.deleted:删除客户时的数据清理
  • 通过签名验证进行安全通信

费用计划:

  • Basic Plan: 500円/月
  • 查找关键字 basic_monthly 动态获取价格
  • 自动税计算对应(日本)

仪表板,仪表板

Web UI 任务可视化:

  • 按状态查看正在进行、封锁、暂停和完成
  • 任务详细历史记录(记录更新、阻止、暂停)
  • 查看整个团队的工作状态列表

開発者体験

  • 单点登岸(Slack协作→频道选择→MCP 设置)
  • .mcp.json 自动生成
  • 自签名证书开发服务器
  • TypeScript 完全支持

______________________________________________________________________

体系结构

Monorepo 构成

这个项目pnpm workspace 使用monorepo 配置:

ava/
├── apps/
│   └── www/              # Next.js アプリケーション (MCP サーバー、API、ダッシュボード)
├── packages/
│   ├── database/         # Drizzle ORM スキーマと DB ユーティリティ
│   └── integrations/     # 外部サービス連携 (Slack, Stripe など)
└── infra/                # Terraform による Infrastructure as Code

系统体系结构

┌─────────────────┐
│   AI Agents     │
│  (MCP Client)   │
└────────┬────────┘
         │ HTTPS + OAuth 2.1
         ▼
┌─────────────────────────────────────────────────┐
│            Ava (Next.js 16)                     │
│                                                 │
│  ┌──────────┐      ┌────────────┐              │
│  │   /mcp   │      │  /api/*    │              │
│  │  (Hono)  │      │  (Hono)    │              │
│  └──────────┘      └────────────┘              │
│                                                 │
│  ┌──────────────────────────────┐              │
│  │    Next.js App Router        │              │
│  │  (Dashboard, Onboarding)     │              │
│  └──────────────────────────────┘              │
│                                                 │
│  ┌──────────────────────────────┐              │
│  │   OpenTelemetry              │              │
│  │   (instrumentation.ts)       │              │
│  └──────────────────────────────┘              │
└────┬───────────┬───────────┬───────────┬────────┘
     │           │           │           │
     ▼           ▼           ▼           ▼
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│PostgreSQL│ │Slack API │ │Stripe API│ │  Axiom   │
│(Drizzle) │ │(Bot,OIDC)│ │(Payments)│ │ (Traces) │
└──────────┘ └──────────┘ └──────────┘ └──────────┘

路由配置:

  • /mcp - MCP 服务器(Hono,单独路由)
  • /api/* - API 端点(Hono、catch-all根)

- /api/oauth/* - OAuth 2.1 授权服务器 - /api/auth/* - Slack OIDC 认证 - /api/slack/* - Slack 协作(机器人安装、命令) - /api/stripe/* - Stripe 预订(检出、链接门户、Webhook) - /api/health -健康检查

  • 其他-Next.js App Router(仪表板,登入)

______________________________________________________________________

技术栈

|类别|技术| | ------------------ | ---------------------------------------- | | 框架结构 |Next.js 16(应用路由器),React 19| | API 是4.10。 | 数据库 |PostgreSQL+Drizzle ORM| | 认证 |Arctic(OAuth 2.1)、Slack OpenID Connect| | 主控程序 |@hono/mcp,@modelcontextprotocol/sdk| | 人工智能 |Vercel AI SDK+OpenAI| | 决済 |条纹| | 基础设施 |地形,条纹提供商(lukasaron)| | 可观测性 |开放遥测,Axiom| | 用户界面 |顺风CSS v4,Radix UI,shadcn/UI| | 型安全 |TypeScript 5,Zod| | 测试 |维特斯特,剧作家| | 开发工具 |pnpm、左撇子、ESLint、Prettier|

______________________________________________________________________

前提条件

必须

  • Node.js 18+ (corepack enable pnpm 推奨)
  • Docker&Docker编写 (PostgreSQL 用)
  • Slack 应用 -使用以下设置创建:

Slack 应用程序设置

方法 1: App Manifest を使用(推奨)

  1. 松弛API 从中选择“创建新应用程序”→“从应用程序管理器”
  1. 选择工作区
  1. 以下App Manifest 粘贴(`` 实际基础URL ):
{
  "display_information": {
    "name": "Ava"
  },
  "features": {
    "bot_user": {
      "display_name": "Ava",
      "always_online": false
    },
    "slash_commands": [
      {
        "command": "/daily-report",
        "url": "https:///api/slack/commands",
        "description": "本日のタスクサマリを生成",
        "usage_hint": "",
        "should_escape": false
      }
    ]
  },
  "oauth_config": {
    "redirect_urls": [
      "https:///api/auth/slack/callback",
      "https:///api/slack/install/callback"
    ],
    "scopes": {
      "user": ["openid", "profile", "email"],
      "bot": [
        "chat:write",
        "chat:write.public",
        "channels:read",
        "groups:read",
        "commands"
      ]
    }
  },
  "settings": {
    "interactivity": {
      "is_enabled": true,
      "request_url": "https:///api/slack/interactions"
    },
    "org_deploy_enabled": false,
    "socket_mode_enabled": false,
    "token_rotation_enabled": true
  }
}
  1. 应用程序凭据Client IDClient SecretSigning Secret 获得

方法2:手动设定

  1. 松弛API 从中选择“创建新应用程序”→“从scratch”
  1. OAuth和权限 的Bot Token Scopes 添加:

- chat:write -留言帖子 - chat:write.public -发布到公共频道 - channels:read -获取通道列表 - groups:read -获取专用频道列表 - commands - Slash Command 実行

  1. OAuth和权限 的User Token Scopes 添加:

- openid - OpenID Connect 认证 - profile -获取基本信息 - email -获取电子邮件地址

  1. OAuth和权限 的Redirect URLs 添加:
   https:///api/auth/slack/callback
   https:///api/slack/install/callback
  1. 斜杠命令/daily-report 创建:

- 请求URL: https:///api/slack/commands - 说明: 本日のタスクサマリを生成

  1. 应用程序凭据Client IDClient SecretSigning Secret 获得

- 在测试环境中开发时API 键和Webhook 使用密码 - Webhook 端点: https:///api/stripe/webhook - Webhook 事件: customer.subscription.created, customer.subscription.updated, customer.subscription.deleted, customer.deleted

______________________________________________________________________

设置环境变量

项目根目录 .env 请创建文件。.env.example 请参考:

cp .env.example .env

然后,设置以下环境变量。

环境变量说明

变数名说明必须
NEXT_PUBLIC_BASE_URL 应用程序基础URL。OAuth 元数据和Slack 重定向URL 用于构建Yes
NEXT_PUBLIC_SITE_NAME |站点名称(默认值:“Ava”)|否|
DATABASE_URLPostgreSQL 接続文字列Yes
SLACK_APP_CLIENT_IDSlack 应用程序Client IDYes
SLACK_APP_CLIENT_SECRETSlack 应用程序Client SecretYes
SLACK_SIGNING_SECRETSlack 应用程序Signing Secret(Slash Command 的签名验证使用)|Yes
OPENAI_API_KEYOpenAI API 键(用于每日报告功能)Yes
STRIPE_SECRET_KEYStripe API 密钥(测试环境: sk_test_、本番环境: sk_live_)
STRIPE_WEBHOOK_SECRETStripe Webhook 签名密码(用于验证Webhook事件)Yes
AXIOM_API_TOKENAxiom API 标记(用于发送OpenTelemetry跟踪,仅限于生产环境)No
AXIOM_DATASET_NAMEAxiom 数据集名称(OpenTelemetry跟踪目标,仅限于生产环境)No

______________________________________________________________________

本地开发

# corepack を有効化
$ npm run setup

# 依存関係をインストール
$ pnpm install

# .env としてコピー
$ cp .env.example .env

.env 请在文件中设置环境变量(请参阅前面的“设置环境变量”)。

# PostgreSQL コンテナを起動
$ pnpm db:up

# マイグレーションを実行
$ pnpm db:migrate

# 開発サーバーを起動
$ pnpm dev

在动态输入提示中单击https://localhost:3000中所述修改相应参数的值。

Stripe Webhook 本地测试

Stripe CLI 在本地环境中Webhook 可测试:

# Stripe CLI でローカルに Webhook を転送
$ pnpm dev:stripe

# 別のターミナルで開発サーバーを起動
$ pnpm dev

Stripe CLI 的 STRIPE_WEBHOOK_SECRET 进行动态观察时的轴心点.env 请设置为文件。

Terraform 在中部署费用计划

# Stripe API キーを環境変数に設定
$ export TF_VAR_stripe_api_key=sk_test_xxxxx

# dev 環境の場合
$ cd infra/enviroments/dev

# Terraform を初期化(初回のみ)
$ ../../../infra/tf.sh init

# 変更内容を確認
$ ../../../infra/tf.sh plan

# Stripe にデプロイ
$ ../../../infra/tf.sh apply

# Price ID などの出力を確認
$ ../../../infra/tf.sh output

注意: 本番环境(infra/enviroments/prod)中API 键(sk_live_),模板名称将采用不同的格式。

测试

单元测试

$ pnpm test
$ pnpm test:watch

E2E测试

$ pnpm exec playwright install chrome

$ pnpm build

$ pnpm test:e2e
$ pnpm test:e2e:ui

数据库

$ pnpm db:up        # PostgreSQL コンテナを起動
$ pnpm db:migrate   # マイグレーションを実行
$ pnpm db:studio    # Drizzle Studio を起動
$ pnpm db:down      # PostgreSQL コンテナを停止

______________________________________________________________________

入门设置

启动开发服务器后,按照以下步骤Slack 协作和MCP 完成设置。

第1步:Slack 登录到

  1. 在浏览器中https://localhost:3000访问
  2. 「Login with Slack」来修改标记元素的显示属性
  3. Slack 认证画面许可

第2步:Slack 在工作区中安装机器人

  1. 仪表板上的“滑动协作”或 /slack/install/start 访问
  2. 选择要安装机器人的工作区
  3. 确认所需权限并允许

步骤3:选择通知通道

  1. /onboarding/connect-slack 访问
  2. 选择要发布任务进度的通道
  3. 单击保存
注: 如果以后想变更的话 /settings/channel 中所述修改相应参数的值。

第4步:MCP 客户端设置

  1. /onboarding/setup-mcp 访问
  2. 复制显示的设置
注: 以后想确认设定的情况下 /settings 中所述修改相应参数的值。3.项目路线 .mcp.json 创建并粘贴文件:
{
  "mcpServers": {
    "ava": {
      "type": "http",
      "url": "https://localhost:3000/mcp"
    }
  }
}

步骤5:AI Agents 连接到

# 自己署名証明書を許可して AI Agent を起動
NODE_TLS_REJECT_UNAUTHORIZED=0 claude

初次连接时,在浏览器中OAuth 2.1 的规格化距离的幂函数。单击“允许”AI Agents 从Ava 的,之MCP 可以使用工具了。

______________________________________________________________________

MCP 工具详细信息

start_task

启动新任务。

参数:

  • issue.provider: "github""manual"
  • issue.id: GitHub Issue 编号(可选)
  • issue.title:任务标题
  • initial_summary:初始状态说明

动作:

  • 在数据库中创建新的任务会话
  • Slack 在的通知频道上创建新线程,发布开始消息
  • 保存线程信息

update_task

更新任务进度。

参数:

  • task_session_id:任务会话ID
  • summary:进度汇总
  • raw_context:详细上下文(仅数据库保存Slack ),模板名称将采用不同的格式

动作:

  • 打开 in_progress 返回到
  • 自动消除未解决的阻塞和暂停
  • Slack 向线程发布进度

report_blocked

报告任务发生阻塞。

参数:

  • task_session_id:任务会话ID
  • reason:阻塞原因
  • raw_context:详细上下文(可选)

动作:

  • 打开 blocked 更新为
  • Slack 通知线程封锁

pause_task

暂停任务。

参数:

  • task_session_id:任务会话ID
  • reason:暂停原因
  • raw_context:详细上下文(可选)

动作:

  • 打开 paused 更新为
  • Slack 通知线程暂停

resume_task

恢复暂停的任务。

参数:

  • task_session_id:任务会话ID
  • summary:恢复状态
  • raw_context:详细上下文(可选)

动作:

  • 打开 in_progress 返回到
  • 暂停报告 resumed_at 记录
  • Slack 通知线程重新启动

complete_task

完成任务。

参数:

  • task_session_id:任务会话ID
  • summary:完成摘要

动作:

  • 打开 completed 更新为
  • 完成信息upsert
  • Slack 向线程提交完成

list_tasks

获取任务列表。

参数:

  • status:按状态筛选in_progress, blocked, paused, completed)(可选)
  • limit:获取次数上限(可选)

返回值:

  • 验证用户任务列表(更新日期和时间降序)

______________________________________________________________________

每日报告功能

Slack 的 /daily-report 在您查看完详细信息后,单击AI 总结今天的任务。

目标任务

  • 本日 completed 已完成的任务
  • 今天更新了 in_progressblocked 任务

动作

  1. 从数据库检索目标任务
  2. OpenAI API 使用汇总任务
  3. 仅显示已运行的用户ephemeral message 回复

必要条件

  • OPENAI_API_KEY 设置环境变量
  • Slack 安装机器人

______________________________________________________________________

安全和隐私

存储在数据库中

  • 用户信息(Slack ID、邮箱地址)
  • 工作区信息和Bot 令牌
  • 任务会话、更新历史记录、阻塞报告、暂停报告
  • OAuth 客户端信息、授权代码和访问令牌

Slack 发送给

  • 任务抽象摘要(开始、进度、阻塞、暂停和完成)
  • 状态更改通知

Slack 未发送给

  • 代码全文和片段
  • 私钥、令牌和环境变量
  • 原始错误日志和堆栈跟踪
  • 存储库机密信息

raw_context 参数中指定的数据仅存储在数据库中Slack 中所述修改相应参数的值。

______________________________________________________________________

故障排除

AI Agents 无法连接

症状: MCP 从客户端Ava 挂牵

解决方法:

  1. 允许自签名证书启动:
   NODE_TLS_REJECT_UNAUTHORIZED=0 claude
  1. .mcp.json 的,之URL 确认是否正确
  2. 确认开发服务器是否启动(pnpm dev

Slack 通知不到

症状: 启动/更新任务Slack 未通知

解决方法:

  1. /settings/channel 确认、变更通知频道的设置
  2. Slack 机器人是否安装在工作区中 /settings 确认
  3. 确认机器人是否参加通知频道(应该是自动参加)

数据库连接错误

症状: ECONNREFUSEDdatabase "ava" does not exist 错误

解决方法:

# コンテナの状態を確認
docker compose ps

# コンテナを再起動
pnpm db:down
pnpm db:up

# マイグレーションを再実行
pnpm db:migrate

/daily-report 挂怀

症状: Slack 的 /daily-report 执行时返回错误

解决方法:

  1. OPENAI_API_KEY.env 查看项目中可用的所有族
  2. Slack 应用程序Slash Commands 确认设置
  3. Request URL 确认是否正确: /api/slack/commands

______________________________________________________________________

分发

欢迎分享!

  1. 分叉此存储库
  2. 创建特征分支(git checkout -b feature/amazing-feature)
  3. 提交更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. Pull Request 创建

了解更多信息 贡献.md 来修改标记元素的显示属性。

______________________________________________________________________

许可证

这个项目MIT 在许可证下公开。了解更多信息 许可证 请参见文件。

______________________________________________________________________

谢辞

目录标签

目录标签

团队协作TypeScriptClaudeSlackAI助手本地部署进度报告Slack集成任务管理

支持客户端

ClaudeCursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明oauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP