Signal Agent ðš
ããŒã«ã«Signal Agent ðš ã«ã€ããŠ
Signal Agent ã¯ãé害ã€ãã³ãã®åé¡ãé倧床ã®è©äŸ¡ãå¯Ÿå¿æ¡ãšèªã¿ãããèŠçŽã®çæãè¡ã MCP ãµãŒããŒå Œã¯ã©ã€ã¢ã³ãã·ã¹ãã ã§ããã€ã³ã·ãã³ããæ±ãéçšããŒã ãéçºè åãã§ããã¢ããµãŒããŒåç¬ããšãŒãžã§ã³ãåç¬ã®å®è¡ã¢ãŒãããããŸãã
äž»ãªæ©èœ
- 01é害ã€ãã³ãã®æ€èšŒãšæ å ±è£å®
- 02ããŒã¯ãŒãã«åºã¥ãé倧床ã®åè©äŸ¡
- 03éçšã€ãã³ãã®ã«ããŽãªåé¡
- 04é倧床ã«å¿ããå¯Ÿå¿æ¡ã®çæ
- 05èªã¿ãããã€ãã³ãèŠçŽã®äœæ
- 06ãã¢ããµãŒããŒããšãŒãžã§ã³ãã¢ãŒãã§å®è¡
掻çšã·ãŒã³
- 01éçšã€ã³ã·ãã³ãã®ããªã¢ãŒãžãšæ¯ãåã
- 02CI/CD é害ã€ãã³ãã®åæ
- 03ããŒã åãã€ã³ã·ãã³ãèŠçŽã®æšæºå
MCP 察å¿
MCP ãµãŒããŒã¯ `classify_failure_event` ãš `health_check` ããŒã«ãå ¬éããŸããä»å±ã® MCP ã¯ã©ã€ã¢ã³ããã€ãã³ãåŠçã調æŽããstdio ãŸã㯠streamable HTTP ã§æ¥ç¶ã§ããŸãã
èšå®
ããŒã«ã«ãµãŒããŒã®èšå®ã¯ã©ã®ã¯ã©ã€ã¢ã³ãã§ãå ±éã§ããã³ããŒããŠã¯ã©ã€ã¢ã³ãã® MCP èšå®ãã¡ã€ã«ã«è²Œãä»ããŠãã ããã
ãã®ãµãŒããŒã®ããã±ãŒãžããªã¢ãŒããšã³ããã€ã³ãã¯ãŸã ååŸã§ããŠããŸããããããžã§ã¯ãã® README ã®æé ã«åŸã£ãŠãã ããã
ããŒã«
ããŒã«ã«ãµãŒããŒã®ããŒã«ã¯ãã·ã³äžã§èµ·åããŠåããŠååŸã§ããŸããã¡ã³ãããŒã¯ãŸã ããŒã«äžèЧãæäŸããŠããŸããã
詳现
Signal Agent ðš
Model Context ProtocolïŒMCPïŒã«ããã€ã³ããªãžã§ã³ããªé害ã€ãã³ãåŠç
æ¬çªç°å¢ã«å¯Ÿå¿ãã MCP ãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®ã·ã¹ãã ã§ããèªååé¡ãé倧床åæã察å¿çã®æšå¥šãéããŠãçã®é害ã€ãã³ããå®çšçãªã€ã³ããªãžã§ã³ã¹ã«å€æããŸãã
ð¯ Signal Agent ãšã¯ïŒ
Signal Agent ã¯ãã€ã³ããªãžã§ã³ããªèªååã·ã¹ãã ã®æ§ç¯ã«ããã Model Context ProtocolïŒMCPïŒã®åãå®èšŒããŸããé«åºŠãªåæãã€ãã©ã€ã³ãéããŠé害ã€ãã³ããåŠçããæ¬¡ã®æ©èœãæäŸããŸãã
- ð åæïŒããŒã¯ãŒãããŒã¹ã®é倧床è©äŸ¡ã䜿çšããŠé害ã€ãã³ãã®å 容ãåæããŸã
- ð åé¡ïŒã€ãã³ããéçšã«ããŽãªïŒããŒã¿ããŒã¹ããããã¯ãŒã¯ãã»ãã¥ãªãã£ãªã©ïŒã«åé¡ããŸã
- ð¡ çæïŒé©åãªå¯Ÿå¿çãæšå¥šããŸã
- ð æŽåœ¢ïŒéçšããŒã åãã«ã人ãèªã¿ãããèŠçŽãäœæããŸã
âš äž»ãªæ©èœ
ðïž æ¬çªç°å¢ã«å¯Ÿå¿ããã¢ãŒããã¯ãã£
- å ¬åŒ SDK ã䜿çšãã æšæºæºæ ã® MCP å®è£
- Pydantic ã¹ããŒãã«ãã å ç¢ãªå ¥åæ€èšŒ
- å æ¬çãªãšã©ãŒåŠçãšãã°èšé²
- ãã©ã³ã¹ããŒãã«äŸåããªãèšèšïŒéçºæã¯ stdioãæ¬çªç°å¢ã§ã¯ HTTP ã¹ããªãŒãã³ã°å¯èœãã©ã³ã¹ããŒãïŒ
ð§ ã€ã³ããªãžã§ã³ããªåæãã€ãã©ã€ã³
- æ€èšŒãšãšã³ãªããã¡ã³ããå«ã 倿®µéã®ã€ãã³ãåŠç
- ãœãŒã¹åŽã®è©äŸ¡ã«äŸåããªã ããŒã¯ãŒãããŒã¹ã®é倧床åèšç®
- é©åãªã€ã³ã·ãã³ãæ¯ãåãã®ããã® éçšåé¡
- é倧床ãšã€ãã³ãã¿ã€ãã«åºã¥ã ã³ã³ããã¹ãã«å¿ããæšå¥šäºé
ð§ éçºè ãšã¯ã¹ããªãšã³ã¹
- è€æ°ã®ãããã€ã¢ãŒãïŒçµ±åãã¢ããµãŒããŒã®ã¿ããšãŒãžã§ã³ãã®ã¿ïŒ
- ã€ã³ã¿ã©ã¯ãã£ããªãã¹ãã«å¯Ÿå¿ãã MCP Inspector äºææ§
- å æ¬çãªãã°èšé²ãšãããã°ãµããŒã
- ãã©ã³ã¹ããŒããšããžãã¹ããžãã¯ã® æç¢ºãªé¢å¿ã®åé¢
ð ã¯ã€ãã¯ã¹ã¿ãŒã
åææ¡ä»¶
ã€ã³ã¹ããŒã«
git clone https://github.com/no0ktheali3n/signal-agent.git
cd signal-agent
# Setup environment and dependencies
uv venv #first time only
just venv #activates venv
just init-install #qol scripts and copes justfile to root
just sync #syncs environment dependencies
ãã¢ã®å®è¡
# Full integrated demonstration
just run
# Server only (for MCP Inspector testing)
just run server
# Agent only (launches server subprocess)
just run agent
䜿çšå¯èœãªã³ãã³ã
just compile # Lock dependencies
just sync # Install dependencies
just upgrade # Upgrade all dependencies
just activate # Activate virtual environment
just run [mode] # Run Signal Agent (demo/server/agent)
ðïž ã¢ãŒããã¯ãã£
Signal Agent ã¯ãé¢å¿äºãåé¢ãã容æãªé²åãå¯èœã«ãããã·ã³ãã«ã§ã¢ãžã¥ãŒã«åãããã¢ãŒããã¯ãã£ãæ¡çšããŠããŸãã
âââââââââââââââââââ MCP Protocol ââââââââââââââââââââ
â Signal Agent âââââââââââââââââââââºâ Signal Server â
â (Client) â stdio/HTTP â (MCP Server) â
â â â â
â ⢠Event Loading â â ⢠Tool Registry â
â ⢠Result Displayâ â ⢠Event Analysis â
â ⢠Demo Workflow â â ⢠Classification â
âââââââââââââââââââ ââââââââââââââââââââ
ã³ã¢ã³ã³ããŒãã³ã
ð¥ïž Signal ServerïŒserver/server.pyïŒ
- å ¬åŒ SDK ã䜿çšãã MCP æºæ ãµãŒããŒ
- é©åãªå ¥åã¹ããŒãã«ãã ããŒã«ç»é²
- 倿®µéåŠçãåãã ã€ãã³ãåæãã€ãã©ã€ã³
- TextContent 圢åŒã«ãã æšæºããŒã¹ã®ã¬ã¹ãã³ã¹
ð€ Signal AgentïŒagent/signal_agent.pyïŒ
- stdio ãã©ã³ã¹ããŒãã䜿çšãã MCP ã¯ã©ã€ã¢ã³ã
- ã€ãã³ãåŠçã¯ãŒã¯ãããŒã®èª¿æŽ
- çµæã®æŽåœ¢ãšè¡šç€º
- ãã¹ãããŒã¿ãçšãã ãã¢æ©èœ
ðïž ã¡ã€ã³ãªãŒã±ã¹ãã¬ãŒã¿ãŒïŒmain.pyïŒ
- è€æ°ã®ãããã€ã¢ãŒãïŒãã¢ããµãŒããŒã®ã¿ããšãŒãžã§ã³ãã®ã¿ïŒ
- ã³ã³ããŒãã³ãã®ã©ã€ããµã€ã¯ã«ç®¡ç
- æ£åžžãªã·ã£ããããŠã³åŠç
ð§ MCP ãšã®çµ±å
ãµãŒããŒããŒã«
classify_failure_event
ã€ã³ããªãžã§ã³ããªåæãã€ãã©ã€ã³ãéããŠé害ã€ãã³ããåŠçããŸãã
å ¥åã¹ããŒãïŒ
{
"event_id": "string",
"timestamp": "string",
"service": "string",
"severity": "string",
"message": "string",
"details": "object (optional)"
}
䜿çšäŸïŒ
{
"event_id": "sig_001_db_failure",
"timestamp": "2024-12-11T14:30:45Z",
"service": "user-authentication-service",
"severity": "critical",
"message": "PostgreSQL connection pool exhausted",
"details": {
"pool_size": 20,
"active_connections": 20,
"queue_length": 150
}
}
ã¬ã¹ãã³ã¹ïŒ
{
"event_id": "sig_001_db_failure",
"original_severity": "critical",
"calculated_severity": "critical",
"classification": "database_issue",
"recommendation": "Immediate attention required - escalate to on-call engineer",
"human_readable": "ðš Signal Alert: sig_001_db_failure...",
"status": "processed"
}
health_check
ãµãŒããŒã®å¥å šæ§ãšæ¥ç¶ã確èªããŸãã
MCP Inspector ã§ã®ãã¹ã
# In another terminal, launch MCP Inspector
npx @modelcontextprotocol/inspector uv run python server/server.py
or
just run-inspector
HTTP ãã©ã³ã¹ããŒãã®ãã¹ã
# Terminal 1: Start HTTP server
just run-server-http
# Terminal 2: Test with HTTP agent
just run-agent-http
# Or test with direct commands
python main.py server --transport http
python main.py agent --transport http
Inspector ã§ã¯ãã€ã³ã¿ã©ã¯ãã£ããªããŒã«ãã¹ãçšã®ãŠã§ãã€ã³ã¿ãŒãã§ãŒã¹ã http://localhost:#### ã«è¡šç€ºãããŸãã
ð åæãã€ãã©ã€ã³
Signal Agent ã¯ãé«åºŠãªå€æ®µéãã€ãã©ã€ã³ãéããŠã€ãã³ããåŠçããŸãã
1. å ¥åæ€èšŒ
- JSON ã®è§£æãšæ§é ã®æ€èšŒ
- Pydantic ã¢ãã«ã®é©çš
- å¿ é ãã£ãŒã«ãã®ç¢ºèª
2. é倧床åæ
- ããŒã¯ãŒãããŒã¹ã®å 容åæ
- é倧床ãç€ºãææšãšã®ãã¿ãŒã³ãããã³ã°
- ãœãŒã¹åŽã®è©äŸ¡ããç¬ç«ããåèšç®
3. ã€ãã³ãã®åé¡
- éçšã«ããŽãªã®å€å®
- 次ã®é
ç®ã®ãã¿ãŒã³ãããã³ã°ïŒ
- ããŒã¿ããŒã¹ã®åé¡
- ãããã¯ãŒã¯ã®åé¡
- ãªãœãŒã¹ã®å¶çŽ
- ã»ãã¥ãªãã£ã€ã³ã·ãã³ã
- ãµãŒãã¹é害
4. æšå¥šäºé ã®çæ
- ã³ã³ããã¹ãã«å¿ããå¯Ÿå¿æ¡ã®æç€º
- æ·±å»åºŠã«åºã¥ããšã¹ã«ã¬ãŒã·ã§ã³ã«ãŒã«
- æšæºåãããéçšæé
5. æŠèŠã®ãã©ãŒããã
- 人ãèªã¿ããã圢åŒã§ã®çµæã®ãŸãšã
- æ§é åããã衚瀺圢åŒ
- éçšããã·ã¥ããŒããšã®äºææ§
ð¯ ãŠãŒã¹ã±ãŒã¹
ð¢ ãšã³ã¿ãŒãã©ã€ãºéçš
- ã€ã³ã·ãã³ã察å¿ã®èªåå - ã€ãã³ãã®ã€ã³ããªãžã§ã³ããªããªã¢ãŒãžãšã«ãŒãã£ã³ã°
- éçšã€ã³ããªãžã§ã³ã¹ - ãã¿ãŒã³èªèãšãã¬ã³ãåæ
- ããŒã ã®é£æº - æšæºåãããã³ãã¥ãã±ãŒã·ã§ã³ãšãšã¹ã«ã¬ãŒã·ã§ã³
ð§ éçºã¯ãŒã¯ãããŒ
- ã¢ãã¿ãªã³ã°ãšã®çµ±å - SentryãDatadog ãªã©ã®ã¢ã©ãŒããåŠç
- CI/CD ã®åŒ·å - é害ã®åæãšã¬ããŒããèªåå
- å質ä¿èšŒ - ãšã©ãŒã®äœç³»çãªåé¡ãšè¿œè·¡
ð åŠç¿ãšç ç©¶
- MCP ãããã³ã«ã®äŸ - ãªãã¡ã¬ã³ã¹å®è£ ã®ãã¿ãŒã³
- AI çµ±åãã¿ãŒã³ - ã€ã³ããªãžã§ã³ããªèªååã¢ãŒããã¯ãã£
- ãããã³ã«æšæº - MCP ãµãŒããŒéçºã®ãã¹ããã©ã¯ãã£ã¹
ð ïž éçº
ãããžã§ã¯ãæ§æ
signal-agent/
âââ server/
â âââ server.py # MCP server implementation
âââ agent/
â âââ signal_agent.py # MCP client implementation
âââ main.py # System orchestrator
âââ events/
â âââ test_payload.json # Demo event data
âââ docs/ # Documentation
âââ examples/ # Usage examples
ãã¹ãã®å®è¡
# Test server with MCP Inspector (stdio)
just run-inspector
# Test HTTP server and agent
just run-server-http & # Background streamable-HTTP MCP server
just run-agent-http # streamable-HTTP agent test / listener
ãšãŒãžã§ã³ãã«ã¯ãæåãã¹ãçšã® HTTP ãªã¹ããŒãšãMCP ãµãŒããŒãšé£æºãã MCP ã¯ã©ã€ã¢ã³ããšããã2 ã€ã®åœ¹å²ããããŸãã
æåã§ãã¹ãããã«ã¯ããšãŒãžã§ã³ããå®è¡ãããªãã·ã§ã³ 3 ãéžæããŠãªã¹ããŒãèµ·åããŸãã
ãµãŒããŒã¯ localhost:8000 ã§å®è¡ããããªã¹ããŒã¯ localhost:8001 ã§å®è¡ãããŸãã
æåã§ãã¹ãããã«ã¯ïŒææ°ã®æŽæ°ã§ã¡ã€ã³ãªãŒã±ã¹ãã¬ãŒã¿ãŒãåäœããªãããïŒãchaos_agent ãå®è¡ããŸãã
#runs chaos agent to run 10 events with 1.5 second delay between event
python agent/chaos_agent.py --count 10 --delay 1.5
ã€ãã³ã㯠SQLite ã䜿çšã㊠signals_events.db ã«ããŒã«ã«ä¿åãããŸãã
次ã«ãå¥ã®ãšãŒãžã§ã³ããå®è¡ããŸãã
just run-agent-http
ããã§ããšãŒãžã§ã³ãã MCP ã¯ã©ã€ã¢ã³ããšããŠäœ¿çšããMCP ãµãŒããŒãšé£æºããŠããµãŒããŒã®ããŒã«ãå©çšã§ããŸããããã«ãããã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ãã signal_events.db ãã¯ãšãªããã€ãã³ãã«é¢ããããŒã¿ãååŸã§ããŸãã
ã³ãŒãå質
- ã³ãŒãããŒã¹å šäœã«ãããåãã³ã
- ãããã°ã®ããã®å æ¬çãªãã°èšé²
- é©åãªçž®éåäœã䌎ããšã©ãŒåŠç
- ãã¹ãŠã®ãããªãã¯ã€ã³ã¿ãŒãã§ã€ã¹ã«é¢ããããã¥ã¡ã³ã
ð é²åã®ããŒãããã
Signal Agent ã¯ãããé«åºŠãªã€ã³ã·ãã³ã察å¿ã·ã¹ãã ã®åºç€ãšãªããŸãã
ð¯ çŸåšã®ç¶æ ïŒv1.1.0ïŒ
- â æšæºã«æºæ ãã MCP ã®å®è£
- â ã€ã³ããªãžã§ã³ããªã€ãã³ãåæ
- â ãã¥ã¢ã«ãã©ã³ã¹ããŒã察å¿ïŒstdio + HTTP streamableïŒ
- â æ¬çªç°å¢ã«å¯Ÿå¿ããã¢ãŒããã¯ãã£
- â justfile ã«ããèªååãå«ãææ°ã®éçºã¯ãŒã¯ãããŒ
ð® ä»åŸã®é²å
- ð 忣ãããã€ã¡ã³ãåãã®HTTP ãã©ã³ã¹ããŒã
- ð è€æ°ã®ã¢ãã¿ãªã³ã°çµ±åïŒSentryãDatadogãRaygunïŒ
- ð€ ãã¿ãŒã³èªèã匷åããæ©æ¢°åŠç¿
- ð¢ MSP ç°å¢åãã®ãšã³ã¿ãŒãã©ã€ãºæ©èœ
ð€ è²¢ç®
è²¢ç®ãæè¿ããŸãïŒãã®ãããžã§ã¯ã㯠MCP ã®ãã¹ããã©ã¯ãã£ã¹ã瀺ããã³ãã¥ããã£åãã®ãªãã¡ã¬ã³ã¹ãšããŠæ©èœããŸãã
è²¢ç®ã§ããåé
- ããŸããŸãªã€ãã³ãã¿ã€ãã«å¯Ÿå¿ãã远å ã®åæãã¿ãŒã³
- ãã©ã³ã¹ããŒãã®å®è£ ïŒSSEãWebSocketïŒ
- äžè¬çãªã¢ãã¿ãªã³ã°ããŒã«ãšã®çµ±åäŸ
- ããã¥ã¡ã³ãã®æ¹åãšãã¥ãŒããªã¢ã«
ð ã©ã€ã»ã³ã¹
MIT License â 詳现㯠LICENSE ãåç §ããŠãã ããã
ð ãªã³ã¯
- Model Context Protocol - MCP ã®å ¬åŒããã¥ã¡ã³ã
- MCP Python SDK - å ¬åŒ Python å®è£
ð è¬èŸ
å ¬åŒã® Model Context Protocol SDK ã䜿çšããçŸä»£ã®éçšã«ãããã€ã³ããªãžã§ã³ããªèªååã®å¿ èŠæ§ã«çæ³ãåŸãŠæ§ç¯ãããŠããŸãã
Signal Agent - MCP ã®åãæŽ»çšããçã®é害ã€ãã³ããå®çšçãªã€ã³ããªãžã§ã³ã¹ãžãšå€æããŸããðšâ¡ïžð§
ã³ã¡ã³ã
MCP ã¯åããŠã§ããïŒ
ãããã³ã«ã®æŠèŠããæåã®ãµãŒããŒã®å°å ¥ãŸã§ãããããçåã«ãŸãšããŠçããŸãã
AI ã¢ããªã±ãŒã·ã§ã³ãå€éšã®ããŒã«ãããŒã¿ãœãŒã¹ã«çµ±äžçãªæ¹æ³ã§æ¥ç¶ããããã®ãªãŒãã³ãªãããã³ã«ã§ããã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ãšã®å¯Ÿè©±ãæ ããMCP ãµãŒããŒã¯ããŒã«ã»ãªãœãŒã¹ã»ããã³ãããã³ãã¬ãŒããæäŸããŸããæšæºã¡ãã»ãŒãžã§ããåãããããã1 ã€ã®ãµãŒããŒãè€æ°ã®ã¯ã©ã€ã¢ã³ãã§åå©çšã§ããŸãã