Slack MCP Agent¶
4 層パイプラインによる MCP 駆動型業務自動化エージェント。 Slack でメンションするだけで、AI が計画を立て、承認を経て、業務を自動実行します。
アーキテクチャ¶
User @mention → Slack Bolt → L1 (Task) → L2 (Prompt + 承認)
→ L3 (Process + 承認) → L4 (Managed Agents + MCP) → 完了
詳細は docs/architecture.md を参照。
プロジェクト構成¶
backend/ Backend (Slack Bolt + Pipeline Orchestrator)
mcp-servers/ Remote MCP Servers (ベンダー別)
hr-freee/ freee 勤怠・従業員ツール
common/ Google Sheets・Slack DM 等の共通ツール
shared/ 共有スキーマ定義 (ベンダー横断)
web/ Web ダッシュボード (Next.js)
docs/ ドキュメント
セットアップ¶
前提条件¶
- Python 3.12+
- uv (Python パッケージマネージャ)
- Node.js 20+ / pnpm (Web ダッシュボード用)
- ngrok (ローカル開発用トンネル)
環境変数¶
Backend¶
MCP Servers¶
# freee HR MCP Server
cd mcp-servers/hr-freee
uv sync
uv run python server.py
# Common MCP Server
cd mcp-servers/common
uv sync
uv run python server.py
ngrok (開発時)¶
デプロイ (Railway)¶
単一コンテナ構成で Backend + MCP Server + Web + nginx を Railway にデプロイする。
コンテナ構成¶
nginx (:$PORT)
├── / → Next.js (:3000) 管理画面
└── /mcp/ → MCP Server (:8001) Managed Agent 用
Backend (Socket Mode) — インバウンドポート不要
SQLite (/app/data/agent.db) — Railway Volume で永続化
Railway セットアップ手順¶
- Railway でプロジェクト作成、GitHub リポジトリを接続
- main ブランチの自動デプロイを有効化
- Volume を作成し
/app/dataにマウント - 環境変数を設定:
| 変数 | 説明 |
|---|---|
SLACK_BOT_TOKEN |
Slack Bot Token (xoxb-) |
SLACK_SIGNING_SECRET |
Slack Signing Secret |
SLACK_APP_TOKEN |
Slack App-Level Token (xapp-) |
ANTHROPIC_API_KEY |
Anthropic API Key |
MOCK_MODE |
false (本番) |
MANAGED_AGENT_ID |
Managed Agent ID (後述の手順で取得) |
MANAGED_ENVIRONMENT_ID |
Managed Environment ID (後述の手順で取得) |
FREEE_CLIENT_ID |
freee Client ID |
FREEE_CLIENT_SECRET |
freee Client Secret |
FREEE_COMPANY_ID |
freee Company ID |
ADMIN_USER |
管理画面ユーザー名 (強いものを設定) |
ADMIN_PASSWORD |
管理画面パスワード (強いものを設定) |
BASE_URL |
https://{app}.up.railway.app |
DATABASE_PATH |
/app/data/agent.db |
ENCRYPTION_KEY |
ランダム生成 |
-
freee Developer Console でコールバック URL を追加:
https://{app}.up.railway.app/api/integrations/freee/callback -
Managed Agent を Railway の MCP Server URL で再作成:
出力されたMANAGED_AGENT_IDとMANAGED_ENVIRONMENT_IDを Railway 環境変数に設定。
ローカル Docker ビルド (動作確認用)¶
docker build -t slack-mcp-agent .
docker run --rm -p 8080:8080 \
-e PORT=8080 \
-e MOCK_MODE=true \
-e SLACK_BOT_TOKEN=xoxb-... \
-e SLACK_SIGNING_SECRET=... \
-e SLACK_APP_TOKEN=xapp-... \
-e ANTHROPIC_API_KEY=sk-ant-... \
-e ADMIN_USER=admin \
-e ADMIN_PASSWORD=admin \
-e DATABASE_PATH=/app/data/agent.db \
-v $(pwd)/data:/app/data \
slack-mcp-agent
ドキュメント¶
全仕様・設計ドキュメントは docs/ 以下の Markdown に集約されており、MkDocs Material で Web サイトとして自動公開されます(Cloudflare Pages + Cloudflare Access)。
- ローカルプレビュー:
make docs-serve→ http://127.0.0.1:8000 - 本番サイト:
mainブランチへのマージで自動デプロイ(.github/workflows/docs.yml) - 編集対象:
docs/*.mdとルートのREADME.md/AGENTS.md/DESIGN.md
主なドキュメント: