# Server capability matrix (analisi statica)

Questa matrice e' compilata **da analisi statica del codice corrente** (senza handshake runtime), come baseline Milestone 0.

Riferimenti di governance aggiornati:
- guida viva: `docs/mcp-skills-agents-development-guide.md`
- storico milestone completate: `docs/completed-milestones-mcp-skills.md`

Legenda rapida:
- present/implemented: `yes`
- not present: `no`
- partial / to deepen: `partial`

| Server | Tools | Resources | Prompts | Progress | Roots | Pattern API | `action` | `project_path` | `save_path` | Schema hygiene (statica) | Note compatibilita' Copilot/VS Code |
|---|---|---|---|---|---|---|---|---|---|---|---|
| `git-node` | yes | no | yes (`ListPromptsRequestSchema`) | no | yes (fallback da `roots[]`) | `Server` low-level (`setRequestHandler`) | forte | supportato | no | buono | Include annotations, output strutturato e azioni read-only estese (`repo_info`, `rebase_status`, `range_diff`). Da M4 espone anche `prompts/list` + `prompts/get` senza cambiare la API tool legacy. |
| `docs-node` | yes | yes | no | no | no | `Server` low-level (`setRequestHandler`) | forte | no | no | buono | Compatibile con host severi anche su superficie MCP moderna: supporta `resources/templates` e mapping `resource_uri` coerente con i tool di lettura documenti. |
| `office-node` | yes | yes | yes (`ListPromptsRequestSchema`) | yes (`ingest_pdf_into_docs`) | no | `Server` low-level (`setRequestHandler`) | forte | no | yes (`pdf_document.export_text`) | discreto/buono | Espone resources native per artifact (`resources/list`, `resources/read`) con template URI `artifact://office/{year}/{month}/{artifact_id}` e fallback metadata per artifact non testuali. |
| `projectfs-node` | yes | no | no | no | no | `Server` low-level (`setRequestHandler`) in TS compilato | no (tool separati) | no | no | buono | Server read-only dedicato alla lettura sicura del filesystem: whitelist `allowedRoots`, policy link esplicita (`deny` / `allow-within-whitelist` / `report-only`), fallback shell sostituito da tool MCP specifici (`read_file`, `list_dir`, `grep_files`, `stat`, `read_many`). |
| `sql-node` | yes | no | no | no | no | `Server` low-level (`setRequestHandler`) | forte | richiesto | no | buono | Solido per host severi; nessun supporto nativo resources/prompts per metadata DB. |
| `mantis-node` | yes | no | no | no | no | `Server` low-level (`setRequestHandler`) | misto | richiesto | opzionale (`attachments` download) | buono | Generalmente compatibile; naming e shape eterogenei tra tool. |
| `cf-node` | yes | no | no | no | no | `Server` low-level (`setRequestHandler`) | forte | richiesto | no | buono | Compatibile per host severi; dipende da bridge esterno CF ma superficie MCP e' semplice. |
| `playwright-node` | yes | no | no | no | no | `Server` low-level (`setRequestHandler`) | no (tool granulari) | no | partial (`path` su screenshot, non `save_path`) | discreto | Compatibilita' generalmente buona, ma forte cardinalita' tool e output screenshot base64 possono peggiorare UX/token in alcuni host. |
| `linter-node` | yes | no | no | no | no | `Server` low-level (`setRequestHandler`) in TS compilato | no (tool separati) | opzionale (`lint_code`) | no | buono | Buona compatibilita' di base; manca condensazione `action` e feature MCP moderne. |

## Criteri usati per la compilazione

1. Presenza capability MCP valutata cercando handler espliciti (`ListToolsRequestSchema`, `ListResourcesRequestSchema`, `ListPromptsRequestSchema`) nei file server.
2. Pattern API classificato come "low-level" quando il server usa `new Server(...)` + `setRequestHandler(...)`.
3. `action` / `project_path` / `save_path` classificati dal relativo `inputSchema` e dalla gestione in `CallTool`.
4. "Schema hygiene" e' una valutazione statica preliminare (qualitativa), non sostituisce smoke test runtime su host specifici.

## Nota operativa

Questa tabella resta una baseline utile per pianificare milestone incrementalmente (es. `git-node` pilot modernizzazione, `docs-node` resource-native, `office-node` hardening schema-compatibility, `projectfs-node` fallback filesystem sicuro).
