ava
Automatically share development progress to Slack through AI. MCP-powered task reporting with privacy-first design.
Install / Use
claude mcp add yutakobayashidev -- npx -y github:yutakobayashidev/avaIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AutomationSupported Platforms
Skill content
View source on GitHubAva
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円/月
- lookup key
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 (App Router), React 19 | | API | Hono 4.10 | | データベース | PostgreSQL + Drizzle ORM | | 認証 | Arctic (OAuth 2.1), Slack OpenID Connect | | MCP | @hono/mcp, @modelcontextprotocol/sdk | | AI | Vercel AI SDK + OpenAI | | 決済 | Stripe | | Infrastructure | Terraform, Stripe Provider (lukasaron) | | Observability | OpenTelemetry, Axiom | | UI | Tailwind CSS v4, Radix UI, shadcn/ui | | 型安全 | TypeScript 5, Zod | | テスト | Vitest, Playwright | | 開発ツール | pnpm, Lefthook, ESLint, Prettier |
前提条件
必須
- Node.js 18+ (
corepack enable pnpm推奨) - Docker & Docker Compose (PostgreSQL 用)
- Slack アプリ - 以下の設定で作成:
Slack アプリの設定
方法 1: App Manifest を使用(推奨)
-
Slack API で「Create New App」→「From an app manifest」を選択
-
ワークスペースを選択
-
以下の App Manifest を貼り付け(
<YOUR_BASE_URL>を実際のベース URL に置き換えてください):
{
"display_information": {
"name": "Ava"
},
"features": {
"bot_user": {
"display_name": "Ava",
"always_online": false
},
"slash_commands": [
{
"command": "/daily-report",
"url": "https://<YOUR_BASE_URL>/api/slack/commands",
"description": "本日のタスクサマリを生成",
"usage_hint": "",
"should_escape": false
}
]
},
"oauth_config": {
"redirect_urls": [
"https://<YOUR_BASE_URL>/api/auth/slack/callback",
"https://<YOUR_BASE_URL>/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://<YOUR_BASE_URL>/api/slack/interactions"
},
"org_deploy_enabled": false,
"socket_mode_enabled": false,
"token_rotation_enabled": true
}
}
- App Credentials から
Client ID、Client Secret、Signing Secretを取得
方法 2: 手動設定
-
Slack API で「Create New App」→「From scratch」を選択
-
OAuth & Permissions で Bot Token Scopes を追加:
chat:write- メッセージ投稿chat:write.public- パブリックチャンネルへの投稿channels:read- チャンネル一覧取得groups:read- プライベートチャンネル一覧取得commands- Slash Command 実行
-
OAuth & Permissions で User Token Scopes を追加:
openid- OpenID Connect 認証profile- プロフィール情報取得email- メールアドレス取得
-
OAuth & Permissions で Redirect URLs を追加:
https://<YOUR_BASE_URL>/api/auth/slack/callback https://<YOUR_BASE_URL>/api/slack/install/callback -
Slash Commands で
/daily-reportを作成:- Request URL:
https://<YOUR_BASE_URL>/api/slack/commands - Description:
本日のタスクサマリを生成
- Request URL:
-
App Credentials から
Client ID、Client Secret、Signing Secretを取得
- OpenAI API キー - OpenAI Platform で取得
- Stripe アカウント - Stripe Dashboard でアカウントを作成
- テスト環境で開発する場合は、テストモードの API キーと Webhook シークレットを使用
- Webhook エンドポイント:
https://<YOUR_BASE_URL>/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") | No |
| DATABASE_URL | PostgreSQL 接続文字列 | Yes |
| SLACK_APP_CLIENT_ID | Slack アプリの Client ID | Yes |
| SLACK_APP_CLIENT_SECRET | Slack アプリの Client Secret | Yes |
| SLACK_SIGNING_SECRET | Slack アプリの Signing Secret(Slash Command の署名検証に使用) | Yes |
| OPENAI_API_KEY | OpenAI API キー(日次レポート機能に使用) | Yes |
| STRIPE_SECRET_KEY | Stripe API キー(テスト環境: sk_test_、本番環境: sk_live_) | Yes |
| STRIPE_WEBHOOK_SECRET | Stripe Webhook 署名シークレット(Webhook イベントの検証に使用) | Yes |
| AXIOM_API_TOKEN | Axiom API トークン(OpenTelemetry トレースの送信に使用、本番環境のみ) | No |
| AXIOM_DATASET_NAME | Axiom データセット名(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 のローカルテスト
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
84.7kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
73.5kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ruflo
73.1k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
CowAgent
47.1kOpen-source super AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
