Introduzione: Il Viaggio Completo
Questo e l'ultimo articolo della serie dedicata al Model Context Protocol (MCP). In 14 articoli abbiamo percorso un cammino completo: dai fondamenti teorici del protocollo fino all'implementazione di un ecosistema production-ready con 31 server MCP, 85+ tool, 6 pacchetti condivisi e un sistema di testing professionale.
In questo articolo presentiamo una panoramica completa del progetto open source Tech-MCP: il catalogo di tutti i server organizzati per categoria, lo stack tecnologico, l'architettura complessiva, le lezioni apprese durante lo sviluppo e come contribuire al progetto.
Cosa Imparerai in Questo Articolo
- Panoramica completa del progetto Tech-MCP con numeri e statistiche
- Catalogo di tutti i 31 server organizzati per categoria
- Stack tecnologico: TypeScript 5.7, Node.js 20+, pnpm, Turborepo, SQLite
- Architettura complessiva del monorepo e dei pacchetti condivisi
- Come contribuire al progetto su GitHub
- Roadmap e sviluppi futuri pianificati
- Lezioni apprese dalla costruzione di 31 server MCP
- Riepilogo dell'intera serie di 14 articoli
Tech-MCP in Numeri
Il progetto Tech-MCP e il risultato di un processo di progettazione e sviluppo che ha prodotto un ecosistema MCP completo, coprendo l'intero ciclo di vita dello sviluppo software. Ecco i numeri chiave:
Statistiche del Progetto
| Metrica | Valore |
|---|---|
| Server MCP | 31 |
| Tool disponibili | 85+ |
| Pacchetti condivisi | 6 |
| Eventi tipizzati | 29 |
| Linee di codice TypeScript | 23.000+ |
| Linguaggio | TypeScript 5.7 |
| Runtime | Node.js 20+ |
| Build system | Turborepo + pnpm |
| Database | SQLite (better-sqlite3) |
| Validazione | Zod |
| Testing | Vitest |
| Licenza | Open Source |
Architettura Complessiva
Tech-MCP e organizzato come un monorepo gestito con pnpm workspaces e Turborepo. I pacchetti condivisi forniscono funzionalità trasversali, mentre i 31 server implementano la logica di dominio specifica:
Tech-MCP/
├── packages/ # 6 Pacchetti Condivisi
│ ├── core/ # Factory, tipi condivisi, startHttpServer()
│ ├── event-bus/ # EventBus interface + LocalEventBus + 29 eventi
│ ├── client-manager/ # McpClientManager per cross-server
│ ├── database/ # BaseStore SQLite, migrazioni
│ ├── testing/ # TestHarness, MockEventBus, InMemoryTransport
│ └── cli/ # Utility CLI per gestione server
│
├── servers/ # 31 Server MCP
│ ├── scrum-board/ # Project Management
│ ├── agile-metrics/ # Project Management
│ ├── time-tracking/ # Project Management
│ ├── project-economics/ # Project Management
│ ├── retrospective-manager/ # Project Management
│ ├── code-review/ # Produttività
│ ├── dependency-manager/ # Produttività
│ ├── project-scaffolding/ # Produttività
│ ├── docker-compose/ # DevOps
│ ├── log-analyzer/ # DevOps
│ ├── cicd-monitor/ # DevOps
│ ├── db-schema-explorer/ # Database
│ ├── data-mock-generator/ # Database
│ ├── test-generator/ # Testing
│ ├── performance-profiler/ # Testing
│ ├── api-documentation/ # Documentazione
│ ├── codebase-knowledge/ # Documentazione
│ ├── regex-builder/ # Utility
│ ├── http-client/ # Utility
│ ├── snippet-manager/ # Utility
│ ├── standup-notes/ # Comunicazione
│ ├── environment-manager/ # Comunicazione
│ ├── incident-manager/ # Avanzati
│ ├── decision-log/ # Avanzati
│ ├── access-policy/ # Avanzati
│ ├── quality-gate/ # Avanzati
│ ├── workflow-orchestrator/ # Avanzati
│ ├── insight-engine/ # Avanzati
│ ├── mcp-registry/ # Avanzati
│ ├── dashboard-api/ # Avanzati
│ └── tech-radar/ # Avanzati
│
├── docs/ # Documentazione completa
├── turbo.json # Configurazione Turborepo
├── pnpm-workspace.yaml # Workspace definition
└── package.json # Root package
Catalogo Completo dei Server
I 31 server MCP sono organizzati in 9 categorie funzionali che coprono ogni aspetto del ciclo di vita dello sviluppo software. Ogni server e indipendente ma può collaborare con gli altri tramite EventBus e ClientManager.
Project Management (5 server)
| Server | Tool Principali | Descrizione |
|---|---|---|
| scrum-board | create-sprint, add-story, update-task-status | Gestione sprint, storie e task con board Scrum completo |
| agile-metrics | calculate-velocity, get-burndown, cycle-time | Metriche agili: velocity, burndown, lead time, cycle time |
| time-tracking | start-timer, stop-timer, get-timesheet | Tracciamento tempo con timer e report settimanali |
| project-economics | set-budget, log-expense, get-budget-status | Gestione budget, spese e analisi economica del progetto |
| retrospective-manager | create-retro, add-feedback, generate-actions | Retrospettive di sprint con feedback e azioni correttive |
Produttività (3 server)
| Server | Tool Principali | Descrizione |
|---|---|---|
| code-review | analyze-diff, find-issues, suggest-improvements | Analisi del codice con identificazione di problemi e miglioramenti |
| dependency-manager | scan-dependencies, check-updates, audit-security | Gestione dipendenze, aggiornamenti e audit di sicurezza |
| project-scaffolding | generate-project, add-module, create-config | Generazione struttura progetto e scaffold di moduli |
DevOps (3 server)
| Server | Tool Principali | Descrizione |
|---|---|---|
| docker-compose | generate-compose, validate-config, optimize | Generazione e validazione file docker-compose |
| log-analyzer | parse-logs, find-errors, aggregate-stats | Analisi log applicativi con pattern matching |
| cicd-monitor | list-pipelines, get-build-status, analyze-failures | Monitoraggio pipeline CI/CD e analisi fallimenti |
Database (2 server)
| Server | Tool Principali | Descrizione |
|---|---|---|
| db-schema-explorer | list-tables, describe-table, analyze-relations | Esplorazione schema database con analisi relazioni |
| data-mock-generator | generate-mock-data, create-fixture, seed-database | Generazione dati di test realistici e fixture |
Testing (2 server)
| Server | Tool Principali | Descrizione |
|---|---|---|
| test-generator | generate-unit-tests, generate-integration-tests | Generazione automatica di test unit e integration |
| performance-profiler | profile-endpoint, find-bottlenecks, benchmark | Profiling performance e identificazione colli di bottiglia |
Documentazione (2 server)
| Server | Tool Principali | Descrizione |
|---|---|---|
| api-documentation | generate-docs, validate-openapi, create-examples | Generazione documentazione API e validazione OpenAPI |
| codebase-knowledge | index-codebase, search-code, explain-module | Knowledge base del codebase con ricerca semantica |
Utility (3 server)
| Server | Tool Principali | Descrizione |
|---|---|---|
| regex-builder | build-regex, test-pattern, explain-regex | Costruzione e test espressioni regolari |
| http-client | send-request, test-endpoint, mock-api | Client HTTP per test API e mock di endpoint |
| snippet-manager | save-snippet, search-snippets, get-snippet | Gestione snippet di codice con tag e ricerca |
Comunicazione (2 server)
| Server | Tool Principali | Descrizione |
|---|---|---|
| standup-notes | create-standup, list-standups, generate-summary | Gestione daily standup con note e riepiloghi |
| environment-manager | list-environments, compare-configs, sync-env | Gestione ambienti di deployment e configurazioni |
Avanzati (9 server)
| Server | Tool Principali | Descrizione |
|---|---|---|
| incident-manager | create-incident, update-status, post-mortem | Gestione incidenti con severity e post-mortem |
| decision-log | log-decision, list-decisions, search-context | Registro decisioni architetturali (ADR) |
| access-policy | define-policy, check-access, audit-permissions | Gestione policy di accesso e audit permessi |
| quality-gate | define-gate, evaluate-quality, get-report | Quality gate con metriche e soglie configurabili |
| workflow-orchestrator | create-workflow, execute-step, get-status | Orchestrazione workflow multi-step |
| insight-engine | health-dashboard, cross-project-analysis | Analisi cross-server con aggregazione dati |
| mcp-registry | register-server, list-servers, discover-tools | Registry dei server MCP con discovery automatico |
| dashboard-api | create-dashboard, add-widget, get-metrics | Dashboard API per visualizzazione metriche |
| tech-radar | add-technology, evaluate-adoption, get-radar | Technology radar per tracciare adozione tecnologie |
Stack Tecnologico
Lo stack tecnologico di Tech-MCP e stato scelto per massimizzare la type-safety, la velocità di sviluppo e la manutenibilità a lungo termine:
Tecnologie Utilizzate
| Componente | Tecnologia | Ruolo |
|---|---|---|
| Linguaggio | TypeScript 5.7 | Type-safety, interfacce, generics |
| Runtime | Node.js 20+ | ES modules nativi, performance |
| Package Manager | pnpm 9+ | Workspace monorepo, linking efficiente |
| Build System | Turborepo | Build paralleli, caching, task orchestration |
| Database | SQLite (better-sqlite3) | Persistenza locale, zero configurazione |
| Validazione | Zod | Schema validation, type inference |
| MCP SDK | @modelcontextprotocol/sdk | Protocollo MCP ufficiale |
| Testing | Vitest | Unit test, integration test, mocking |
| Transport | STDIO + Streamable HTTP | Comunicazione locale e remota |
I 6 Pacchetti Condivisi
I pacchetti condivisi forniscono le fondamenta su cui tutti i 31 server sono costruiti.
Ogni pacchetto e pubblicato internamente nel monorepo e consumato dai server tramite
workspace:*:
Pacchetti del Monorepo
| Pacchetto | Responsabilità | Export Principali |
|---|---|---|
| @mcp-suite/core | Factory server, tipi condivisi, HTTP server | startHttpServer(), tipi comuni |
| @mcp-suite/event-bus | Sistema eventi tipizzati fire-and-forget | LocalEventBus, EventMap, 29 eventi |
| @mcp-suite/client-manager | Comunicazione cross-server sincrona | McpClientManager, callTool() |
| @mcp-suite/database | Store SQLite base con migrazioni | BaseStore, utility per migrazioni |
| @mcp-suite/testing | Utility di test: harness, mock, transport | createTestHarness(), MockEventBus |
| @mcp-suite/cli | Utility CLI per gestione server | Comandi per avvio, stop, status server |
Pattern Architetturali Chiave
Durante lo sviluppo di 31 server MCP sono emersi pattern architetturali ricorrenti che garantiscono coerenza, testabilità e manutenibilità:
1. Server Factory Pattern
Ogni server espone una factory function con parametri opzionali per massima flessibilità:
export function createMyServer(options?: {
eventBus?: EventBus;
clientManager?: McpClientManager;
storeOptions?: { inMemory?: boolean; dbPath?: string };
}) {
const server = new McpServer({
name: "my-server",
version: "1.0.0",
});
const store = new MyStore(options?.storeOptions);
// Registra i tool con dipendenze opzionali
registerAddItem(server, store, options?.eventBus);
registerGetStats(server, store, options?.clientManager);
// Collaboration: attivata solo se c'è un event bus
if (options?.eventBus) {
setupCollaborationHandlers(options.eventBus, store);
}
return { server, store };
}
2. Un File per Tool
Ogni tool e isolato nel proprio file, registrato come funzione pura che riceve le dipendenze:
// tools/add-item.ts
export function registerAddItem(
server: McpServer,
store: MyStore,
eventBus?: EventBus,
): void {
server.tool(
"add-item",
"Add a new item to the store",
{ title: z.string(), content: z.string() },
async ({ title, content }) => {
try {
const item = store.addItem({ title, content });
eventBus?.publish("items:created", { id: item.id, title });
return {
content: [{ type: "text", text: JSON.stringify(item, null, 2) }],
};
} catch (error) {
return {
content: [{
type: "text",
text: `Error: ${error instanceof Error ? error.message : String(error)}`,
}],
isError: true,
};
}
},
);
}
3. Collaboration Fire-and-Forget
Gli eventi sono pubblicati con il pattern fire-and-forget: il server pubblica l'evento e prosegue senza attendere risposta. Questo disaccoppia completamente i server:
// Il server pubblica senza attendere
eventBus?.publish("scrum:sprint-started", {
sprintId: sprint.id,
name: sprint.name,
});
// Un altro server reagisce nel proprio collaboration.ts
eventBus.subscribe("scrum:sprint-started", (payload) => {
store.autoCreateBudget(payload.sprintId, payload.name);
});
Come Contribuire
Tech-MCP e un progetto open source e i contributi sono benvenuti. Il processo di contribuzione segue un workflow standard:
Prerequisiti
- Node.js >= 20.0.0
- pnpm >= 9.0.0
- Conoscenza base di TypeScript e del Model Context Protocol
Setup dell'Ambiente di Sviluppo
# 1. Fork e clone del repository
git clone https://github.com/<tuo-utente>/Tech-MCP.git
cd Tech-MCP
# 2. Installa le dipendenze
pnpm install
# 3. Build completo di tutti i pacchetti e server
pnpm build
# 4. Verifica che tutto compili correttamente
pnpm typecheck
Tipi di Contributo
-
Aggiungere un nuovo server MCP: crea un nuovo server nella directory
servers/seguendo la struttura standardizzata (package.json, tsconfig.json, src/index.ts, src/server.ts, src/tools/, src/services/) -
Aggiungere un tool a un server esistente: crea il file in
servers/<nome>/src/tools/seguendo il pattern di registrazione con dipendenze opzionali -
Aggiungere un evento: definisci l'evento in
packages/event-bus/src/events.ts, pubblica nel tool appropriato e sottoscrivi nel collaboration handler -
Implementare collaboration handler: molti
collaboration.tscontengono handler placeholder convoid payload. Implementare la logica reale e un contributo prezioso - Scrivere test: unit test dello store, integration test dei tool, wiring test cross-server
Convenzioni del Codice
Regole e Convenzioni
- Formatter: Prettier con single quotes, trailing commas, 100 char line width
- Importazioni: usare
import type { ... }per tipi - Errori: sempre
error instanceof Error ? error.message : String(error) - Naming tool: kebab-case (
create-sprint, noncreateSprint) - Naming eventi:
dominio:azione-kebab-case - Branch Git:
feature/nome-feature,fix/nome-fix - Commit: imperativo, conciso (es. "Add auto-timer to time-tracking")
- PR: una feature/fix per PR, con descrizione chiara
Processo di Review
- Fork il repository su GitHub
- Crea un branch dalla
main - Implementa seguendo le convenzioni del progetto
- Build e typecheck:
pnpm build && pnpm typecheck - Committa con messaggi chiari e descrittivi
- Apri una Pull Request verso
main - Rispondi al feedback della review
Aree dove Serve Aiuto
Il progetto ha diverse aree dove i contributi sono particolarmente benvenuti:
Contributi Richiesti
| Area | Priorità | Difficolta |
|---|---|---|
| Unit test per tutti i tool | Alta | Media |
| Implementazione Redis EventBus | Alta | Media |
| Completamento collaboration handler | Media | Bassa |
| GitHub Actions CI/CD | Media | Bassa |
| Dashboard web di monitoraggio | Bassa | Alta |
| Plugin system | Bassa | Alta |
Roadmap e Sviluppi Futuri
Tech-MCP e un progetto in evoluzione. Le aree di sviluppo pianificate sono organizzate per priorità:
Priorità 1: Redis EventBus
Attualmente l'EventBus funziona solo con LocalEventBus (in-process). Per deployment
reali dove ogni server e un processo separato, serve un broker di messaggi esterno.
L'implementazione con Redis permettera la comunicazione inter-processo tra server MCP
distribuiti su macchine diverse.
Priorità 2: Resources e Prompts MCP
Attualmente Tech-MCP utilizza esclusivamente la primitiva Tools. Le specifiche MCP definiscono anche Resources (dati read-only con URI) e Prompts (template per workflow strutturati). Aggiungere queste primitive arricchirebbe significativamente le capacità dei server.
Priorità 3: Dashboard Web
Una web dashboard per visualizzare in tempo reale lo stato di tutti i server, gli eventi pubblicati, le metriche di utilizzo dei tool e gli health check.
Priorità 4: Plugin System
Un'architettura per plugin third-party con registry, hot-reload di tool e un marketplace condiviso.
Lezioni Apprese
Costruire 31 server MCP in un monorepo ha insegnato lezioni preziose che si applicano a qualsiasi progetto software di media-grande scala:
1. La Standardizzazione Paga
Avere una struttura standardizzata per ogni server (factory function, un file per tool, store isolato, collaboration handler separato) ha ridotto drasticamente il tempo di sviluppo di nuovi server. Dopo i primi 5 server, creare un nuovo server richiedeva pochissimo tempo perchè il pattern era consolidato.
2. I Pacchetti Condivisi Sono Fondamentali
Estrarre la logica comune in pacchetti condivisi (core, event-bus, database, testing) ha eliminato la duplicazione del codice e garantito coerenza tra tutti i server. Ogni modifica a un pacchetto condiviso si propaga automaticamente a tutti i server che lo utilizzano.
3. Le Descrizioni dei Tool Sono Critiche
L'AI sceglie quale tool chiamare basandosi esclusivamente sulla descrizione. Descrizioni vaghe producono tool sottoutilizzati, descrizioni precise producono un'esperienza fluida. Investire tempo nella stesura delle descrizioni e un investimento ad alto rendimento.
4. Fire-and-Forget Semplifica Tutto
Il pattern fire-and-forget per gli eventi ha semplificato enormemente l'architettura. I server pubblicano eventi senza sapere chi li riceve, e i collaboration handler reagiscono senza accoppiamento diretto. Questo ha reso possibile aggiungere nuove collaborazioni senza modificare i server esistenti.
5. Test In-Memory Sono la Chiave
La possibilità di istanziare ogni server con un database in-memory ha reso i test
veloci, isolati e riproducibili. L'investimento in createTestHarness()
e MockEventBus ha ripagato enormemente nella velocità di sviluppo.
Riepilogo della Serie
Questa serie di 14 articoli ha coperto l'intero percorso dal protocollo MCP alla produzione. Ecco un riepilogo degli argomenti trattati:
Indice Completo della Serie
| # | Argomento | Livello |
|---|---|---|
| 01 | Introduzione al Model Context Protocol | Beginner |
| 02 | Primitive MCP: Tools, Resources e Prompts | Beginner |
| 03 | Architettura Monorepo e Pattern di Progetto | Intermediate |
| 04 | Creare il Primo Server MCP in TypeScript | Intermediate |
| 05 | Creare un Client MCP e Transport HTTP | Intermediate |
| 06 | Pacchetti Condivisi: Core, EventBus e Database | Intermediate |
| 07 | Server per la Produttività | Intermediate |
| 08 | Server DevOps e Database | Intermediate |
| 09 | Server per il Project Management | Intermediate |
| 10 | Server Avanzati: Database e Testing | Advanced |
| 11 | Server Avanzati: Orchestrazione e Registry | Advanced |
| 12 | Collaborazione Inter-Server e EventBus | Advanced |
| 13 | Testing, Best Practice e Produzione | Advanced |
| 14 | Tech-MCP: Panoramica Completa del Progetto Open Source | Advanced |
Conclusioni
Il Model Context Protocol rappresenta un cambio di paradigma nell'interazione tra sviluppatori e intelligenza artificiale. Non si tratta semplicemente di un wrapper attorno a chiamate API, ma di un protocollo strutturato che abilita discovery automatico, tipizzazione forte, comunicazione bidirezionale, composabilità nativa e collaborazione inter-server.
Con Tech-MCP abbiamo dimostrato che e possibile costruire un ecosistema completo di 31 server MCP, coprendo l'intero ciclo di vita dello sviluppo software: dalla gestione del codice al project management, dal testing al deploy, dal monitoraggio all'analisi cross-project.
Il progetto e open source e in continua evoluzione. Ogni contributo, che sia un nuovo server, un test, un fix o una nuova feature, e benvenuto. Il futuro dell'interazione uomo-AI passa attraverso protocolli aperti e composabili come MCP, e Tech-MCP vuole essere un punto di riferimento per chiunque voglia esplorare questo territorio.
Grazie per aver seguito questa serie. Il codice completo, la documentazione e le istruzioni per contribuire sono disponibili su GitHub.

Commenti
Caricamento commenti...
Accedi per commentare