マルチエージェントシステム実践:LangChain + MCPで自動週報生成システムを構築

技术架构本番環境の AI Agent

なぜ週報にマルチエージェントが必要か?

週報はすべての開発者の痛み——書けないのではなく、データ収集が面倒

  • Jiraから完了タスクを取得
  • Gitからコミット数を集計
  • Slack/Teamsから会議録を取得
  • 監視システムからアラートを確認

1つのAgentが1つのことしかできないなら、複数のAgentに分担させよう——マルチエージェントシステムの価値。


アーキテクチャ

┌─────────────────────────────────────────────────────────────┐
│                    Orchestrator Agent                        │
│                  LangChain AgentExecutor                    │
└──────────┬──────────┬──────────┬──────────┬────────────────┘
           │          │          │          │
     ┌─────▼────┐ ┌───▼────┐ ┌──▼───┐ ┌───▼────┐
     │  Data    │ │  Code  │ │Meeting│ │ Report │
     │ Collector│ │ Analyst│ │Summary│ │Generator│
     └─────┬────┘ └───┬────┘ └──┬───┘ └───┬────┘
           │          │          │          │
     ┌─────▼──────────▼──────────▼──────────▼────────────────┐
     │                  MCP Server Layer                      │
     │  [Jira MCP] [Git MCP] [Slack MCP] [Monitor MCP]       │
     └───────────────────────────────────────────────────────┘

ステップ1:Agentの定義

from langchain_openai import ChatOpenAI
from langchain_mcp import MCPToolkit

jira_toolkit = MCPToolkit(url="http://localhost:8081/mcp/sse")
git_toolkit = MCPToolkit(url="http://localhost:8082/mcp/sse")

data_collector_agent = {
    "name": "data_collector",
    "role": "データ収集エキスパート",
    "tools": jira_toolkit.get_tools() + git_toolkit.get_tools(),
    "llm": ChatOpenAI(model="gpt-4o", temperature=0)
}

ステップ2:MCP Serverの実装

from mcp.server import Server

server = Server("jira-mcp-server")

@server.tool(name="get_completed_issues", description="指定期間の完了Jiraタスクを取得")
async def get_completed_issues(start_date: str, end_date: str, assignee: str = None):
    jql = f'updated >= "{start_date}" AND updated <= "{end_date}" AND status = Done'
    issues = jira_client.search_issues(jql, maxResults=50)
    return {"issues": [{"key": i.key, "summary": i.fields.summary} for i in issues]}

ステップ3:LangGraphでオーケストレーション

from langgraph.graph import StateGraph, END

workflow = StateGraph(WeeklyReportState)
workflow.add_node("collect_jira", collect_jira_data)
workflow.add_node("collect_git", collect_git_data)
workflow.add_node("generate_report", generate_report)
workflow.add_edge("collect_jira", "collect_git")
workflow.add_edge("collect_git", "generate_report")
workflow.add_edge("generate_report", END)
workflow.set_entry_point("collect_jira")
app = workflow.compile()

まとめ

マルチエージェントシステムは週報生成を「手動組み立て」から「自動パイプライン」に:

  1. 明確な分担:各Agentは1つのことを得意に
  2. MCP疎結合:AgentはMCP Server経由でツールにアクセス
  3. LangGraphオーケストレーション:直列・並列・条件分岐対応
  4. 本番対応:定期実行、エラーリトライ、ハルシネーション制御

マルチエージェントは「複数のチャットボット」ではなく「1つのソフトウェアシステム」——各Agentはマイクロサービス、MCPはAPIゲートウェイ。

ブラウザローカルツールを無料で試す →

#多智能体#LangChain#MCP#自动化周报#Agent协作