0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Agent SDK + MCP server で自分の業務を自動化した、半年の実装メモ

0
Posted at

WEB制作18年のフリーランス兼個人事業主が、半年で自社のVPSに自律エージェントを構築した記録。
Claude Agent SDK と Model Context Protocol (MCP) で何が変わって、どこでつまずいたか。
コード断片付きで実用ベースで書く。

なぜ自分で実装することにしたか

ChatGPTを毎日開いて同じプロンプトを打つ作業に、ある日疲れた。
「効率化」と呼んでいたが、効率化を演じているだけだった。
1日30分の作業が積み重なって週3〜4時間が消えていく。これでは何も変わらない。

業務にAIを組み込むには、対話ツールではなく自律エージェントが要る。
2026年初頭にAnthropicが Claude Agent SDK を本格化させたタイミングで、自分でVPSに構築し始めた。

構成の全体像

最終的にこの形になった。

[Conductor] (Claude Sonnet 4.6)
   │
   ├─→ [Sub Agent: code-review]    (Claude Sonnet)
   ├─→ [Sub Agent: market-research] (Grok-3, リアルタイム)
   ├─→ [Sub Agent: content-draft]   (GPT-4o-mini, コスト効率)
   ├─→ [Sub Agent: trade-analysis]  (Claude Opus, 複雑判定のみ)
   └─→ [Auditor] (Claude Sonnet)    ← 全state遷移をレビュー

各Sub Agentは MCP server 経由で外部ツールにアクセス:
   - mcp-vps-shell  (VPSシェル実行)
   - mcp-trading    (取引APIラッパー)
   - mcp-note       (note記事公開)
   - mcp-sheets     (Google Sheets更新)

中央コンダクターが目的を解釈してSub Agentに振り、auditorが並列に判断レビューする。
これで「自律させると暴走する」問題を緩和できる。

最初の3週間で起きた事故

最初に作ったのは「ニュースを集めて毎朝Slackに要約を投げる」だけのシンプルなエージェント。
動かして3日でこんなことが起きた。

  1. 無限ループに入って同じAPIを30回叩いた
    • 検索結果が空だった時の処理を書いていなかった
  2. 重要じゃない記事を10本要約してSlackを埋めた
    • 「重要度判定」を入れていなかった
  3. ある日突然、ユーザーに「次は補助金を申請しましょう」と勧めだした
    • LLMの「親切心」が暴走、業務範囲を逸脱

この3つが重なって、私は朝起きて50通のSlack通知を見た。
「自律させると、人が見ていない時に予算と信頼を食い潰す」という当たり前を体感した瞬間。

解決策: Auditor 並列レビューと予算上限

ここで Auditor pattern を導入した。
1つのエージェントが行動するたびに、別のエージェントがその判断を並列にレビューする。
判断が一致しない時はコンダクターに戻して人間の介入を待つ。

# 簡易版: auditor parallel review
async def execute_with_audit(action, primary_agent, auditor_agent):
    primary_decision = await primary_agent.decide(action)
    auditor_decision = await auditor_agent.review(action, primary_decision)

    if auditor_decision.disagrees:
        return escalate_to_human(action, primary_decision, auditor_decision)

    return execute(primary_decision)

加えて以下も標準装備:

  • 予算上限(時間/API呼び出し回数)
  • 無限ループ検出(同じツールを連続5回呼んだら停止)
  • 重要操作の人間承認ゲート(金銭が動く・公開される操作)
  • 全操作のログ取得(事後検証用)

これらを入れてから、ようやく業務に置けるようになった。

マルチLLM協調でコストを75%削減

3月頃、Claudeだけで全部やっていたコストが月¥15,000を超え始めた。
ここで気づいた。全部の作業に最強モデルは要らない

用途 モデル 単価 担当
推論・コードレビュー・最終判定 Claude Sonnet Conductor / Auditor
ルーチン整形・要約・抽出 GPT-4o-mini 1/20 content-draft
リアルタイム情報・X検索 Grok-3 market-research
複雑な戦略判定(稀) Claude Opus trade-analysis

3つのLLMを1ワークフローで使い分けるようにした結果、月コストが¥4,000程度まで下がり、
むしろ各モデルが得意な仕事だけをするので品質が上がった。

実装はシンプル。Sub Agent毎にプロバイダーをルーティングする層を1段噛ませるだけ。

// Multi-LLM router (簡易)
interface LLMProvider {
  name: 'claude-sonnet' | 'claude-opus' | 'gpt-4o-mini' | 'grok-3';
  call(prompt: string): Promise<string>;
}

function routeByTask(task: TaskType): LLMProvider {
  switch (task) {
    case 'reasoning': return claudeSonnet;
    case 'realtime':  return grok3;
    case 'extract':   return gpt4oMini;
    case 'critical':  return claudeOpus;
  }
}

MCP server を1個書くと、その業務はもう触らなくていい

MCP(Model Context Protocol)は Anthropic が公開した「LLM↔ツール」の共通プロトコル。
JSON-RPC over stdio で、Python/Node.js のどちらでも書ける。

書いたMCPサーバーの一例:

# mcp_note_server.py — note記事を公開するMCP
from mcp.server import Server
import requests

server = Server("note-publisher")

@server.tool()
def publish_note_article(title: str, body: str, tags: list[str]) -> str:
    """note.com に新規記事を公開する"""
    # note APIに POST(認証はcookie or token、ここでは簡略化)
    resp = requests.post(
        "https://note.com/api/v3/notes",
        json={"name": title, "body": body, "labels": tags},
        cookies={"note_session_v5": NOTE_SESSION}
    )
    return f"Published: {resp.json()['url']}"

server.run()

これを Claude Code から呼べるように ~/.claude/mcp.json に登録するだけで、
エージェントが「今日の取引結果をまとめて → noteに下書き保存 → Slackに通知」を
1コマンドで完了するようになる。

ChatGPTでこれをやろうとすると、コピペが何往復も発生する。
MCP serverを1個書くと、その業務はもう人が触らなくていい
これが半年で見つけた最大の発見だった。

残っている課題

正直に書く。

  • ハルシネーション: auditorを並列にしても完全には消えない。重要操作は人間承認を残す
  • 長セッションのコンテキスト圧縮: 序盤の前提を午後忘れる現象。memory file をdiskに書き出して再読する仕組みで緩和
  • 「親切すぎる」LLM: ユーザーが頼んでないことまでやろうとする。system prompt で範囲を明示
  • 運用コスト: 月¥4,000でも、毎月の経費としては馬鹿にならない

最後の点は、ここを書いている動機にも繋がる。
自分でClaude Agent SDK + MCP server を書ける人は、まだ国内に多くない。
半年で蓄積した実装ノウハウは、外に出してこそ価値が増える。

受託開発を始めた

中小企業・個人事業主向けに「AIエージェント開発受託」を始めた。
スポット開発¥300,000〜、月額運用保守¥50,000〜。無料30分Zoom相談あり。

https://mildsolt.jp/services/ai-agent-dev/

「ChatGPTを毎朝開いている自分」を「目的だけ伝えれば自律で完了するエージェント」に
置き換える。半年やってみると、この差は圧倒的だった。

同じ道を通る人の参考になれば。


筆者: 金杉昌俊 / Mild Solt
note: @mildsolt

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?