סוכני Paperclip מנותקים משרת ה-MCP legal-ai — ACP הפך לברירת-מחדל ב-claude_local #457

Open
opened 2026-08-05 11:01:20 +00:00 by chaim · 0 comments
Owner

What & Why

כל 18 סוכני claude_local מקבלים "No such tool available: mcp__legal-ai__*" ולכן עוקפים דרך psql ישיר וסקריפטים מ-mcp-server/.venv. אפס קריאות-MCP מוצלחות ב-60 לוגי-ההרצה האחרונים. הסיבה: Paperclip 2026.722.0 העביר את claude_local למנוע ACP, ובו שרתי-ה-MCP מסופקים ע"י הלקוח ב-session/new במקום להיקרא מ-~/.claude.json. לא שינוי מתוכנן — אין החלטה מתועדת בשום מקום.

הקשר ופירוט

התסמין

סוכן מקבל, על כלים שמוענקים לו חודשים:

<tool_use_error>Error: No such tool available: mcp__legal-ai__case_get</tool_use_error>
<tool_use_error>Error: No such tool available: mcp__legal-ai__document_list</tool_use_error>
ToolSearch select:mcp__legal-ai__... → "No matching deferred tools found"

ואז הוא עוקף: psql ישיר + סקריפט פייתון מ-mcp-server/.venv שמייבא את אותה פונקציית-שירות. ה-run מסתיים exit 0, ולכן הכשל בלתי-נראה. זהו מסלול מקביל = הפרת G2.

ראיות שנאספו (2026-08-04)

בדיקה ממצא
60 לוגי-הרצה אחרונים קריאות MCP legal-ai שהצליחו: 0 · שנכשלו: 33
לוגים עם "No such tool" 55, מתוך 524 שמזכירים mcp__legal-ai__
שרת ה-MCP עצמו (probe ישיר tools/list) מכריז 108 כלים, כולל analyze_protocol
claude -p --agent legal-analyst ישיר מ-/home/chaim/legal-ai כל הכלים זמינים
~/.claude.json legal-ai ב-mcpServers גלובלי; hasTrustDialogAccepted=true
cwd של ההרצה (מפוענח מ-acpx:v2) /home/chaim/legal-ai — תקין
session_id_before ריק — סשן טרי, לא חידוש של סשן ישן

סיבת-השורש

פורמט לוגי-ההרצה מתעד את המעבר:

  • עד יוני 2026: אירועי system / assistant / user / result = פלט claude -p (CLI). בלוג מ-2026-04-07 שורת ה-system מונה את כל משפחת mcp__legal-ai__ ככלים זמינים, ואפס "No such tool".
  • מיולי 2026: אירועי acpx.session / acpx.tool_call / acpx.text_delta = Agent Client Protocol.

בקוד של @paperclipai/server 2026.722.0 (dist/adapters/registry.js):

"The acpx_local adapter has been retired. Existing Claude and Codex ACPX agents
 should be migrated to claude_local or codex_local with adapterConfig.engine=\"acp\"."

ובכל זאת: select adapter_type, adapter_config->>'engine', count(*) from agents group by 1,2 מחזיר (לא מוגדר) עבור כל 22 הסוכנים — כלומר ACP הוא ברירת-המחדל המשתמעת, ואיש לא ביקש אותה.

ב-ACP שרתי-ה-MCP מגיעים מהלקוח ב-session/new. Paperclip לא מכיר את legal-ai ולכן לא מעביר אותו. מחברי-חשבון (Google Drive, n8n) מגיעים בערוץ אחר וכן מופיעים — מה שיוצר את התמונה המטעה של "claude mcp list מראה Connected אבל הכלים לא קיימים".

מה זה לא (השערות שנבדקו ונפסלו)

  1. הענקה חסרה ב-frontmatter — היה פגם אמיתי ונפרד (analyze_protocol לא הוענק לאף סוכן). תוקן ב-PR #424 יחד עם שער-CI INV-AG3. לא היה הסיבה — גם case_get ו-document_list, שמוענקים חודשים, נכשלו.
  2. MCP_CONNECTION_NONBLOCKING=true בסביבת Paperclip — pm2 הקפיא סביבת Claude-Code שירשנו. נוקה ב-paperclip-config 3051c01. היגיינה נכונה, לא פתר.
  3. מירוץ-אתחול / cwd שגוי / חידוש-סשן — נשללו: cwd תקין, סשן טרי, והשרת עולה ב-1.05 שניות.

חלופות לתיקון

א׳ — לרשום את legal-ai ב-tool-gateway של Paperclip. הטבלה tool_stdio_command_templates (command/args/env_keys/tools) בנויה בדיוק לזה, אך ריקה, ואין API ליצירה (רק /api/tool-gateway/tools · /tools/call · /audit · /sessions). ידרוש INSERT ישיר לא-נתמך; שמות הכלים ישתנו ממרחב mcp__legal-ai__* ולכן ישברו 66 הענקות, את כל הוראות-הסוכנים, את HEARTBEAT, את web/paperclip_client.py ואת שער-ה-CI החדש. מדאיג: שני חיבורי tool_connections הקיימים ("Plugin: marcusgroup.legal-ai", נוצרו 2026-07-25) שבורים מיום היווצרם — health_message="Remote MCP connection requires config.url", last_catalog_refresh_at=NULL.

ב׳ — להחזיר את claude_local למנוע ה-CLI (מומלץ). לקבוע engine מפורשות ב-adapter_config. מחזיר בדיוק את מרחב mcp__legal-ai__* ולכן כל מה שנבנה עובד כמו שהוא; היפוך טריוויאלי. פער פתוח: ערך ה-engine הלא-ACP לא אומת — הודעת-הפרישה מזכירה רק "acp", וה-enum לא נמצא ב-dist. מה שנאבד: סשנים persistent וטלמטריית ACPX (ערכם לא נמדד).

ג׳ — לשאול את Paperclip. אם ACP הוא הכיוון שלהם, "איך מזינים שרת MCP מקומי לסשן ACP" היא שאלה שאולי כבר יש לה תשובה נתמכת. עדיף על שתי החלופות.

עבודה שכבר בוצעה ונשארת תקפה

  • PR #424 (legal-ai) — הענקות analyze_protocol/get_protocol_analysis/get_legal_arguments/get_appraiser_facts ל-analyst+ceo, precedent_library_list ל-qa, ושער-CI scripts/agent_tool_grants_guard.py לאכיפת INV-AG3.
  • paperclip-config 3051c01 — ניקוי CLAUDE*/MCP_CONNECTION_NONBLOCKING ב-start-paperclip.sh.

Acceptance Criteria

אימות לפני החלה רחבה: (1) לגלות את ערך engine הלא-ACP — חיפוש בחבילת adapter runtime או שאילתת /api/adapters. (2) לשנות engine בסוכן בודד מחוץ למסלול הקריטי (המנתח של CMPA), להריץ analyze_protocol דרך POST /api/cases/{n}/analyze-protocol, ולפרסר את לוג-ההרצה: לספור toolCallId שהשם שלו mcp__legal-ai__* ותוצאתו status=completed (ולא tool_use_error). ≥1 הצלחה = תוקן. (3) רק אז להחיל על 18 הסוכנים ולוודא שאין רגרסיה בהרצה רגילה.

תתי-משימות

  • 231.1 שלב 1 — חשיפת שרת ה-MCP ב-streamable-http
    • להריץ את legal_mcp.server גם ב-HTTP לצד ה-stdio הקיים. השרת כבר תומך נייטיב — mcp 1.26.0, FastMCP.run(transport='stdio'|'sse'|'streamable-http').
  • 231.2 שלב 2 — שער אימות Bearer (הצוואר האמיתי של הפרויקט)
    • ב-stdio ההגנה היא שהצינור מקומי. ב-HTTP צריך שער אמיתי: 108 כלים שרבים מהם כותבים ל-DB, מוחקים תיקים ומייצרים מסמכים.
  • 231.3 שלב 3 — רישום החיבור ב-Paperclip בשם 'legal-ai' בדיוק
    • ליצור tool_connection חדש בשם legal-ai עם config.url ל-endpoint ה-HTTP. השם קובע את שמות הכלים — אומת אמפירית.
  • 231.4 שלב 4 — פרופילי-כלים ושיוך לסוכנים (מראה של ה-frontmatter)
    • בלי פרופיל ושיוך, buildPaperclipRuntimeMcpServers לא יחזיר את החיבור כלל. הפרופילים חייבים לשקף את ההענקות שב-.claude/agents/*.md, אחרת נוצרות שתי מפות-הרשאות שיתפצלו.
  • 231.5 שלב 5 — מבחן על סוכן בודד ואז הדרגה ל-18 (ההחלה על 17 הסוכנים בוצעה ואומתה; נותרה החלטה אחת — האם להוסיף --agent legal-ceo ל-CEO או להסיר את רשימת ה-tools: שלו ולתעד אותו כבלתי-מוגבל. עד להכרעה 41 הענקות אינן נאכפות — הפרת G2 חיה.)
    • אימות end-to-end שקריאת mcp__legal-ai__* מצליחה בסשן ACP, על סוכן מחוץ למסלול הקריטי, לפני החלה רחבה.

הועבר מ-TaskMaster (tag legal-ai, id 231, status היה pending) ב-2026-08-05. הפניות (#231) בהודעות-commit ישנות מתייחסות למזהה ה-TaskMaster, לא למספר ה-issue הזה.

עדכון 2026-08-05 (מיגרציה): שלבים 1–4 הושלמו ומוזגו (PRs #425 · #426 · #428 · #429). התיקון אומת 3 פעמים על 2 סוכנים, 2 חברות ו-2 תיקים עם כתיבה אמיתית ל-DB, והוחל על כל 17 הסוכנים. מה שנותר פתוח הוא רק 231.5 — החלטת ה-CEO.

פער ידוע: hermes-curator (deepseek_local) ו-שטן מליץ (gemini_local) לא קיבלו את התיקון — אדפטרים שונים. פתוח אם הם יזדקקו לכלי-MCP.

## What & Why כל 18 סוכני claude_local מקבלים "No such tool available: mcp__legal-ai__*" ולכן עוקפים דרך psql ישיר וסקריפטים מ-mcp-server/.venv. אפס קריאות-MCP מוצלחות ב-60 לוגי-ההרצה האחרונים. הסיבה: Paperclip 2026.722.0 העביר את claude_local למנוע ACP, ובו שרתי-ה-MCP מסופקים ע"י הלקוח ב-session/new במקום להיקרא מ-~/.claude.json. לא שינוי מתוכנן — אין החלטה מתועדת בשום מקום. ## הקשר ופירוט ## התסמין סוכן מקבל, על כלים שמוענקים לו חודשים: <tool_use_error>Error: No such tool available: mcp__legal-ai__case_get</tool_use_error> <tool_use_error>Error: No such tool available: mcp__legal-ai__document_list</tool_use_error> ToolSearch select:mcp__legal-ai__... → "No matching deferred tools found" ואז הוא **עוקף**: psql ישיר + סקריפט פייתון מ-mcp-server/.venv שמייבא את אותה פונקציית-שירות. ה-run מסתיים exit 0, ולכן הכשל בלתי-נראה. זהו מסלול מקביל = הפרת G2. ## ראיות שנאספו (2026-08-04) | בדיקה | ממצא | |---|---| | 60 לוגי-הרצה אחרונים | קריאות MCP legal-ai שהצליחו: **0** · שנכשלו: **33** | | לוגים עם "No such tool" | 55, מתוך 524 שמזכירים mcp__legal-ai__ | | שרת ה-MCP עצמו (probe ישיר tools/list) | ✅ מכריז 108 כלים, כולל analyze_protocol | | `claude -p --agent legal-analyst` ישיר מ-/home/chaim/legal-ai | ✅ כל הכלים זמינים | | ~/.claude.json | legal-ai ב-mcpServers גלובלי; hasTrustDialogAccepted=true | | cwd של ההרצה (מפוענח מ-acpx:v2) | /home/chaim/legal-ai — תקין | | session_id_before | ריק — סשן טרי, לא חידוש של סשן ישן | ## סיבת-השורש פורמט לוגי-ההרצה מתעד את המעבר: - עד יוני 2026: אירועי `system` / `assistant` / `user` / `result` = פלט `claude -p` (CLI). בלוג מ-2026-04-07 שורת ה-system מונה את כל משפחת mcp__legal-ai__ ככלים זמינים, ואפס "No such tool". - מיולי 2026: אירועי `acpx.session` / `acpx.tool_call` / `acpx.text_delta` = Agent Client Protocol. בקוד של @paperclipai/server 2026.722.0 (dist/adapters/registry.js): "The acpx_local adapter has been retired. Existing Claude and Codex ACPX agents should be migrated to claude_local or codex_local with adapterConfig.engine=\"acp\"." ובכל זאת: `select adapter_type, adapter_config->>'engine', count(*) from agents group by 1,2` מחזיר **(לא מוגדר) עבור כל 22 הסוכנים** — כלומר ACP הוא ברירת-המחדל המשתמעת, ואיש לא ביקש אותה. ב-ACP שרתי-ה-MCP מגיעים מהלקוח ב-session/new. Paperclip לא מכיר את legal-ai ולכן לא מעביר אותו. מחברי-חשבון (Google Drive, n8n) מגיעים בערוץ אחר וכן מופיעים — מה שיוצר את התמונה המטעה של "`claude mcp list` מראה Connected אבל הכלים לא קיימים". ## מה זה לא (השערות שנבדקו ונפסלו) 1. **הענקה חסרה ב-frontmatter** — היה פגם אמיתי ונפרד (analyze_protocol לא הוענק לאף סוכן). תוקן ב-PR #424 יחד עם שער-CI INV-AG3. **לא היה הסיבה** — גם case_get ו-document_list, שמוענקים חודשים, נכשלו. 2. **MCP_CONNECTION_NONBLOCKING=true בסביבת Paperclip** — pm2 הקפיא סביבת Claude-Code שירשנו. נוקה ב-paperclip-config 3051c01. היגיינה נכונה, **לא פתר**. 3. **מירוץ-אתחול / cwd שגוי / חידוש-סשן** — נשללו: cwd תקין, סשן טרי, והשרת עולה ב-1.05 שניות. ## חלופות לתיקון **א׳ — לרשום את legal-ai ב-tool-gateway של Paperclip.** הטבלה `tool_stdio_command_templates` (command/args/env_keys/tools) בנויה בדיוק לזה, אך **ריקה**, ו**אין API ליצירה** (רק /api/tool-gateway/tools · /tools/call · /audit · /sessions). ידרוש INSERT ישיר לא-נתמך; שמות הכלים ישתנו ממרחב mcp__legal-ai__* ולכן ישברו 66 הענקות, את כל הוראות-הסוכנים, את HEARTBEAT, את web/paperclip_client.py ואת שער-ה-CI החדש. מדאיג: שני חיבורי tool_connections הקיימים ("Plugin: marcusgroup.legal-ai", נוצרו 2026-07-25) שבורים מיום היווצרם — health_message="Remote MCP connection requires config.url", last_catalog_refresh_at=NULL. **ב׳ — להחזיר את claude_local למנוע ה-CLI (מומלץ).** לקבוע engine מפורשות ב-adapter_config. מחזיר בדיוק את מרחב mcp__legal-ai__* ולכן כל מה שנבנה עובד כמו שהוא; היפוך טריוויאלי. **פער פתוח: ערך ה-engine הלא-ACP לא אומת** — הודעת-הפרישה מזכירה רק "acp", וה-enum לא נמצא ב-dist. מה שנאבד: סשנים persistent וטלמטריית ACPX (ערכם לא נמדד). **ג׳ — לשאול את Paperclip.** אם ACP הוא הכיוון שלהם, "איך מזינים שרת MCP מקומי לסשן ACP" היא שאלה שאולי כבר יש לה תשובה נתמכת. עדיף על שתי החלופות. ## עבודה שכבר בוצעה ונשארת תקפה - PR #424 (legal-ai) — הענקות analyze_protocol/get_protocol_analysis/get_legal_arguments/get_appraiser_facts ל-analyst+ceo, precedent_library_list ל-qa, ושער-CI scripts/agent_tool_grants_guard.py לאכיפת INV-AG3. - paperclip-config 3051c01 — ניקוי CLAUDE*/MCP_CONNECTION_NONBLOCKING ב-start-paperclip.sh. ## Acceptance Criteria אימות לפני החלה רחבה: (1) לגלות את ערך engine הלא-ACP — חיפוש בחבילת adapter runtime או שאילתת /api/adapters. (2) לשנות engine בסוכן בודד מחוץ למסלול הקריטי (המנתח של CMPA), להריץ analyze_protocol דרך POST /api/cases/{n}/analyze-protocol, ולפרסר את לוג-ההרצה: לספור toolCallId שהשם שלו mcp__legal-ai__* ותוצאתו status=completed (ולא tool_use_error). ≥1 הצלחה = תוקן. (3) רק אז להחיל על 18 הסוכנים ולוודא שאין רגרסיה בהרצה רגילה. ## תתי-משימות - [x] **231.1** שלב 1 — חשיפת שרת ה-MCP ב-streamable-http - להריץ את legal_mcp.server גם ב-HTTP לצד ה-stdio הקיים. השרת כבר תומך נייטיב — mcp 1.26.0, FastMCP.run(transport='stdio'|'sse'|'streamable-http'). - [x] **231.2** שלב 2 — שער אימות Bearer (הצוואר האמיתי של הפרויקט) - ב-stdio ההגנה היא שהצינור מקומי. ב-HTTP צריך שער אמיתי: 108 כלים שרבים מהם כותבים ל-DB, מוחקים תיקים ומייצרים מסמכים. - [x] **231.3** שלב 3 — רישום החיבור ב-Paperclip בשם 'legal-ai' בדיוק - ליצור tool_connection חדש בשם legal-ai עם config.url ל-endpoint ה-HTTP. השם קובע את שמות הכלים — אומת אמפירית. - [x] **231.4** שלב 4 — פרופילי-כלים ושיוך לסוכנים (מראה של ה-frontmatter) - בלי פרופיל ושיוך, buildPaperclipRuntimeMcpServers לא יחזיר את החיבור כלל. הפרופילים חייבים לשקף את ההענקות שב-.claude/agents/*.md, אחרת נוצרות שתי מפות-הרשאות שיתפצלו. - [ ] **231.5** שלב 5 — מבחן על סוכן בודד ואז הדרגה ל-18 *(ההחלה על 17 הסוכנים בוצעה ואומתה; **נותרה החלטה אחת** — האם להוסיף `--agent legal-ceo` ל-CEO או להסיר את רשימת ה-`tools:` שלו ולתעד אותו כבלתי-מוגבל. עד להכרעה 41 הענקות אינן נאכפות — הפרת G2 חיה.)* - אימות end-to-end שקריאת mcp__legal-ai__* מצליחה בסשן ACP, על סוכן מחוץ למסלול הקריטי, לפני החלה רחבה. --- <sub>הועבר מ-TaskMaster (tag `legal-ai`, id **231**, status היה `pending`) ב-2026-08-05. הפניות `(#231)` בהודעות-commit ישנות מתייחסות למזהה ה-TaskMaster, לא למספר ה-issue הזה.</sub> > **עדכון 2026-08-05 (מיגרציה):** שלבים 1–4 הושלמו ומוזגו (PRs #425 · #426 · #428 · #429). התיקון אומת 3 פעמים על 2 סוכנים, 2 חברות ו-2 תיקים עם כתיבה אמיתית ל-DB, והוחל על כל 17 הסוכנים. מה שנותר פתוח הוא **רק 231.5** — החלטת ה-CEO. > > **פער ידוע:** `hermes-curator` (deepseek_local) ו-`שטן מליץ` (gemini_local) לא קיבלו את התיקון — אדפטרים שונים. פתוח אם הם יזדקקו לכלי-MCP.
chaim added the area:mcpstatus:readyarea:agentspriority:p1-hightype:bug labels 2026-08-05 11:01:20 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#457