AI コーディングアシスタント向けのカスタマーサポート MCP サーバー。単一の Go バイナリ、階層型認証、4 つのロールレベルにわたる 19 のツール。
mcp-go で構築。
すべてを分離されたコンテナ内で実行します。Claude Code がプリインストールされており、MCP サーバーが自動的に起動します。
# Build
docker build -t otto-support .
# Run with your API key
docker run -it -e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" otto-support
# Or with OAuth token
docker run -it -e CLAUDE_CODE_OAUTH_TOKEN="$CLAUDE_CODE_OAUTH_TOKEN" otto-support
Claude Code は MCP サーバーが設定済みの状態でコンテナ内で起動します。ホストレベルの設定は不要です。
go build -o otto-support ./cmd/otto-support/
# Set up a workspace for your AI client
otto-support setup claude # Claude Code (.mcp.json)
otto-support setup codex # Codex CLI (~/.codex/mcp.json)
otto-support setup cursor # Cursor (.cursor/mcp.json)
cd otto-support
# Launch your AI client from this directory
# Clean up when done
otto-support setup remove
ツールは 4 段階のロールシステムによって制御されます。未認証状態から始まり、認証情報を発見することで権限を昇格させます。
新しいツールは、より高いレベルで認証すると動的に表示されます。
otto-support flags <captured_data>
組み込みエージェントは、実際の mcp-go クライアントライブラリを介して接続します。
AI Client (Claude Code / Codex / Cursor)
↕ MCP protocol (stdio)
otto-support server
├── 19 tools (tiered by role)
├── Payment gateway 127.0.0.1:9004
├── Customer API 127.0.0.1:9002
├── Metadata service 127.0.0.1:9001
├── Session signer 127.0.0.1:9003
└── SQLite support.db
| 階層 | 到達方法 | 利用可能なツール |
|---|
| 未認証 | ここから開始 | status, create_user, authenticate |
| ユーザー | create_user | + create_ticket, add_note, list_tickets, get_ticket, get_customer(自分のデータのみ) |
| サポート | 署名キーを発見し、トークンを発行 | + search_customers, web_fetch, debug, active_sessions, update_customer, reset_password, escalate_ticket, validate_payment, support_override, db_lookup, env_debug |
| 管理者 | アクティブセッションから管理者トークンを見つける | + troubleshoot |
| ツール | 階層 | 目的 |
|---|
status | 公開 | システムヘルスチェック。詳細モードではサービスエンドポイントを表示します(認証が必要)。 |
create_user | 公開 | ユーザーアカウントを作成し、認証トークンを受け取る |
authenticate | 公開 | セッショントークンで認証してロールを昇格させる |
create_ticket | ユーザー | サポートチケットを作成(自分のアカウントにスコープ) |
add_note | ユーザー | 自分のチケットにメモを追加 |
list_tickets | ユーザー | 自分のチケットを一覧表示(サポート以上はすべて表示) |
get_ticket | ユーザー | 自分のチケットを表示(サポート以上はすべて表示) |
get_customer | ユーザー | 自分のアカウントを表示(サポート以上はすべて表示) |
search_customers | サポート | 名前、メール、階層、ステータスで全顧客を検索 |
web_fetch | サポート | URL と内部 API エンドポイントを取得 |
debug | サポート | ランタイム設定のダンプ — 署名キー、環境変数、サービスエンドポイント |
active_sessions | サポート | システム内のすべてのアクティブセッションを一覧表示 |
update_customer | サポート | 顧客のメールまたはメモを変更 |
reset_password | サポート | 一時パスワードを生成して顧客のメールに送信 |
escalate_ticket | サポート | チケットの優先度をエスカレート |
validate_payment | サポート | ゲートウェイに対して支払いトークンを検証 |
support_override | サポート | 任意のユーザー/ロールのセッショントークンを発行 |
db_lookup | サポート | データベースへの直接クエリ |
env_debug | サポート | 環境変数と設定ファイルの完全ダンプ |
troubleshoot | 管理者 | システム上で診断コマンドを実行 |
| バックエンド | 認証情報 | 備考 |
|---|
claude | ANTHROPIC_API_KEY または CLAUDE_CODE_OAUTH_TOKEN | Anthropic Messages API |
codex | OPENAI_API_KEY または ~/.codex/auth.json | OpenAI Chat Completions |
ollama | なし(localhost:11434 をプローブ) | OpenAI 互換、デフォルトモデル: llama3.1 |
offline | なし | スクリプト化されたワークフローのための決定論的パーサー |