マルチエージェントシステム実践:LangChain + MCPで自動週報生成システムを構築
なぜ週報にマルチエージェントが必要か?
週報はすべての開発者の痛み——書けないのではなく、データ収集が面倒:
- 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()
まとめ
マルチエージェントシステムは週報生成を「手動組み立て」から「自動パイプライン」に:
- 明確な分担:各Agentは1つのことを得意に
- MCP疎結合:AgentはMCP Server経由でツールにアクセス
- LangGraphオーケストレーション:直列・並列・条件分岐対応
- 本番対応:定期実行、エラーリトライ、ハルシネーション制御
マルチエージェントは「複数のチャットボット」ではなく「1つのソフトウェアシステム」——各Agentはマイクロサービス、MCPはAPIゲートウェイ。
ブラウザローカルツールを無料で試す →
#多智能体#LangChain#MCP#自动化周报#Agent协作