Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Guardare dall'altra parte. L'UE non è riuscita a impedire l'esportazione di sistemi di sorveglianza verso i violatori dei diritti umani.

La UE, i cui Stati membri ospitano molte delle aziende che sviluppano ed esportano tecnologie di sorveglianza in tutto il mondo, è parte del problema e fa troppo poco per impedire le vendite e i trasferimenti dai suoi Stati membri a governi che usano la tecnologia per reprimere il dissenso e violare i diritti umani.

hrw.org/report/2026/05/12/look…

@eticadigitale

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

RRF Caserta Almanacco del 12 maggio


The media in this post is not displayed to visitors. To view it, please go to the original post.

RRF Caserta Almanacco del 12 maggio radioritornofuturo.podbean.com…

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Eurovision 2026: contestazione in arena per Noam Bettan (Israele)


Eurovision 2026: contestazione in arena per Noam Bettan (Israele)

eurofestivalnews.com/2026/05/1…

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

ChatGpt addestrò l'attentatore della Florida State University


#News

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Giappone, dai samurai ai manga

raiplay.it/video/2026/05/Uliss…

@giappone

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

L’UE invita i talebani per colloqui sul rimpatrio di migranti afghani pericolosi
@news
eunews.it/2026/05/12/lue-invit…
Il portavoce della Commissione per gli Affari interni, Markus Lammert, chiarisce che le misure riguardano le persone che non hanno il diritto di rimanere nell'UE e che rappresentano una minaccia per la sicurezzae. Inoltre, i contatti con le autorità di Kabul "non costituiscono in alcun
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

RRF La testa nel pallone con Pino e Albino Napoli Bologna 2 a 3, Casertana Salernitana 2 a 3 e Juve Caserta pure perde. 12 05 26


The media in this post is not displayed to visitors. To view it, please go to the original post.

RRF La testa nel pallone con Pino e Albino Napoli Bologna 2 a 3, Casertana Salernitana 2 a 3 e Juve Caserta pure perde. 12 05 26 radioritornofuturo.podbean.com…

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Annunziata e Zingaretti denunciano l’espansione israeliana in Cisgiordania e l’inerzia dell’UE
@news
eunews.it/2026/05/12/annunziat…
Il report della missione di Annunziata in Cisgiordania: "L'aggressività dei coloni sta di fatto annullando ogni spazio vitale per i palestinesi" e "rende ormai quasi impraticabile la soluzione diplomatica dei due popoli e due Stati"
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Caccia ai test, i dubbi sul contagio dagli asintomatici

@scienza

Il microbiologo: 'C'è caos'. Più studi indicano che c'è trasmissione anche senza i sintomi

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Fwupd 2.1.3 amplia il supporto hardware e migliora la gestione firmware su Linux

@GNU/Linux Italia

linuxeasy.org/fwupd-2-1-3-supp…

Fwupd 2.1.3 migliora il supporto hardware Linux con nuove funzioni Redfish, compatibilità SHIFTphone e correzioni per NVMe e Thunderbolt.
L'articolo Fwupd 2.1.3 amplia il supporto hardware e migliora la gestione firmware su Linux

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

NIS2 – Obblighi nella gestione dei fornitori


@Informatica (Italy e non Italy)
Nonostante la NIS2 sia un argomento assai diffuso su riviste di settore, giornali e podcast, si continua a trascurare fortemente una delle parti più critiche, quella afferente alla catena di […]
L'articolo NIS2 – Obblighi nella gestione dei fornitori proviene da Edoardo Limone.

L'articolo proviene dal blog

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

L’UE garantisce: il passaggio dati da iPhone ad Android sarà più semplice
@news
eunews.it/2026/05/12/lue-garan…
La legge europea sui mercati digitali (DMA) impone degli obblighi ai giganti del tech, che intanto stanno lavorando a nuove funzionalità
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Cari Amici, mentre aspetto (e tanti aspettiamo) la nuova serie di #Zerocalcare, mi stavo riguardando Questo mondo non mi renderà cattivo e nel primo episodio mi sono piegata in due dalle risate a vedere l'#Armadillo in versione Man in Black.
E mi domando: perché la mia #coscienza non ha lo stesso superpotere di cancellarmi dalla testa tutta la fuffa che c'è dentro e io come Zerocalcare mi arrampico sugli specchi per negare l'evidenza? 🤣
@cultura @cultura@diggita.com
@fumetti@feddit.it @fumetti
#illustrazione
#fumetti

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Iran, Kallas: “Aspides può essere estesa a Hormuz, e aiutare i volenterosi”
@news
eunews.it/2026/05/12/iran-kall…
L'Alta rappresentante per la politica estera e di sicurezza dell'UE evoca la possibilità di un potenziamento dell'operazione militare navale dell'UE per il traffico merci: "Chiusura dello stretto insostenibile, Paesi contribuiranno"
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Azure Resource Manager MCP Server: gestire l’infrastruttura Azure con gli agenti AI
#tech
spcnet.it/azure-resource-manag…
@informatica


Azure Resource Manager MCP Server: gestire l’infrastruttura Azure con gli agenti AI


Azure Resource Manager: il piano di controllo di Azure


Azure Resource Manager (ARM) è il piano di controllo dell’intera piattaforma Azure. Ogni operazione che crea, aggiorna o elimina risorse Azure passa attraverso ARM, indipendentemente da dove provenga: portale Azure, CLI, PowerShell, REST API o SDK. È l’unico punto di ingresso autorevole per gestire l’infrastruttura cloud Microsoft.

Con l’esplosione degli agenti AI, si pone una domanda concreta: come possono questi agenti interagire con ARM in modo strutturato, sicuro e coerente? Microsoft ha risposto con l’Azure Resource Manager MCP Server, ora in anteprima pubblica: un server MCP remoto che fornisce agli agenti AI un accesso di prima classe alle operazioni di infrastruttura Azure attraverso il Model Context Protocol.

Cos’è l’Azure Resource Manager MCP Server


Il server MCP per ARM è progettato per essere il layer di accesso degli agenti AI all’infrastruttura Azure, esattamente come lo è per qualsiasi altro client ARM. Nella versione attuale espone due macro-funzionalità principali:

  • Azure Resource Graph (ARG) query: generazione, validazione ed esecuzione di query ARG in linguaggio naturale contro tutti i tipi di risorse Azure
  • ARM Template Deployment: avvio, monitoraggio e cancellazione di deployment ARM su scope di resource group esistenti

In pratica, l’agente AI non esegue direttamente SQL o chiamate REST: descrive ciò che vuole sapere o fare, e il server MCP traduce quella richiesta in operazioni ARM concrete e sicure.

I tool disponibili


Il server espone sei tool principali, ciascuno con un ruolo preciso:

  • generate_query: genera una query ARG a partire da un prompt in linguaggio naturale. Esempio: “Mostrami tutte le VM in esecuzione nel subscription X” → query KQL valida
  • validate_query: verifica che una query ARG sia corretta sintatticamente e sicura prima di eseguirla
  • execute_query: esegue la query ARG contro l’ambiente Azure dell’utente e restituisce i risultati
  • create_template_deployment: avvia il deployment di un ARM template verso un resource group target
  • get_arm_template_deployment_status: monitora lo stato di avanzamento di un deployment ARM
  • cancel_arm_template_deployment: annulla un deployment in corso (utile dopo fallimenti di validazione o policy)


Caso d’uso pratico: interrogare l’infrastruttura in linguaggio naturale


Immagina di voler sapere quante storage account nel tuo tenant non hanno il tag “owner” assegnato. Tradizionalmente dovresti conoscere il linguaggio KQL di Azure Resource Graph e costruire manualmente la query:

Resources
| where type == "microsoft.storage/storageaccounts"
| where isnull(tags["owner"]) or tags["owner"] == ""
| summarize count() by subscriptionId

Con l’ARM MCP Server attivo in GitHub Copilot Chat su VS Code, puoi semplicemente scrivere:
“Conta tutte le storage account senza il tag ‘owner’, raggruppate per subscription”


Il server generate_query crea la query KQL, validate_query la verifica, e execute_query la esegue restituendo i risultati all’agente che li presenta in formato leggibile.

Caso d’uso: deployment di infrastruttura guidato dall’AI


Il secondo use case riguarda il deployment di ARM template. Un agente può ricevere istruzioni come:

“Deploy un’app service con piano B1 nel resource group ‘prod-rg’ in West Europe, usa il template standard dalla nostra libreria”


Il tool create_template_deployment avvia il deployment specificando subscription ID, resource group, nome del deployment e la definizione del template ARM. Il tool get_arm_template_deployment_status permette all’agente di monitorarne l’avanzamento. Se qualcosa va storto, cancel_arm_template_deployment lo interrompe immediatamente.

Governance e sicurezza


Un aspetto critico: il server ARM MCP opera nel contesto dell’utente autenticato in VS Code. Tutte le chiamate vengono eseguite per conto di quell’utente e sono soggette agli stessi permessi e controlli di accesso definiti in Azure. Non ci sono privilegi elevati o bypass del modello di sicurezza Azure: se l’utente non ha i diritti per deployare in un certo resource group, l’agente non li avrà neanche.

Per organizzazioni che vogliono impedire completamente i deployment tramite ARM MCP Server, è possibile applicare una Azure Policy che blocchi esplicitamente le richieste al tool create_template_deployment identificando l’AppID del server MCP (22bfbae3-f4e7-485f-be43-8cee15065084) nel scope desiderato. Un template di policy di esempio è disponibile nel repository GitHub ufficiale.

Installazione e configurazione


Durante questa preview pubblica, il server ARM MCP è supportato su:

  • GitHub Copilot Chat in VS Code
  • GitHub Copilot CLI

Per installarlo:

  1. Apri aka.ms/JoinARMMCP — VS Code si avvierà automaticamente
  2. Quando richiesto in VS Code, clicca su Install sotto “Azure Resource Manager MCP server”
  3. Effettua il login con le credenziali Azure
  4. In VS Code, apri View > Chat e clicca sull’icona Configure Tools
  5. Assicurati che “Azure Resource Manager MCP server” sia spuntato

I prerequisiti sono VS Code installato, un account Azure valido e un account GitHub Copilot.

Considerazioni per gli amministratori Azure


L’ARM MCP Server apre nuovi scenari per i team DevOps e gli amministratori Azure. Alcuni esempi concreti:

  • Compliance automatizzata: agenti che controllano periodicamente le risorse e verificano l’applicazione di policy di tagging, naming convention o configurazioni di sicurezza
  • Troubleshooting accelerato: interrogare in linguaggio naturale lo stato dell’infrastruttura durante un incident, senza dover ricordare sintassi KQL
  • Infrastructure as Code assistita: generare e deployare ARM template partendo da descrizioni in linguaggio naturale, con validazione integrata prima dell’esecuzione

Il limite attuale — solo VS Code e GitHub Copilot CLI come client supportati — sarà probabilmente espanso nelle prossime versioni in base al feedback degli utenti. Microsoft ha aperto un canale dedicato su GitHub per raccogliere segnalazioni e richieste di funzionalità.

Conclusione


L’Azure Resource Manager MCP Server rappresenta un passo significativo nell’integrazione tra agenti AI e infrastruttura cloud. Non si tratta di uno strumento che bypassa la governance Azure, bensì di un layer che la rende accessibile agli agenti rispettandola appieno. Per team che già usano Azure e GitHub Copilot, il valore pratico è immediato: meno sintassi KQL da memorizzare, deployment più veloci da validare, e la possibilità di costruire agenti personalizzati per automazioni di compliance che oggi richiedono script dedicati.

Il server è ora in anteprima pubblica e può essere installato seguendo le istruzioni ufficiali su aka.ms/JoinARMMCP.

Fonti:
Introducing the Azure Resource Manager MCP Server! — Microsoft Tech Community (Steven Bucher, 8 maggio 2026)
Azure/Azure-Resource-Manager-MCP — GitHub


Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

La BCE: “Dall’avanzata industriale della Cina pochi vantaggi e tante sfide”
@news
eunews.it/2026/05/12/la-bce-da…
La Banca centrale europea prova a valutare l'impatto della crescita della Repubblica popolare sull'eurozona: "I produttori europei stanno perdendo quote di mercato"
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Guida alla prima semifinale dell’Eurovision 2026


Guida alla prima semifinale dell’Eurovision 2026

eurofestivalnews.com/2026/05/1…

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

L’UE lavora a una proposta di legge sugli affitti brevi contro la crisi abitativa
@news
eunews.it/2026/05/12/lue-lavor…
In conferenza stampa a Nicosia, sia il commissario Jørgensen che il ministro degli Interni di Cipro, Ioannou, concordano che è fondamentale una cooperazione a livello europeo: "Bruxelles da sola non sarà in grado di risolvere questa crisi, dobbiamo tutti mobilitarci ad ogni livello"
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Raggi cosmici ultrapesanti ad altissima energia

@astronomia

Secondo un nuovo studio teorico, alcuni dei raggi cosmici più energetici potrebbero essere costituiti da nuclei atomici più pesanti del ferro. Questi nuclei ultrapesanti possono perdere energia più lentamente rispetto ai soli protoni, o ai nuclei più leggeri, mentre viaggiano attraverso lo spazio intergalattico, consentendo loro di

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Rilasciato KDE Plasma 6.6.5 migliora Wayland e KWin

@GNU/Linux Italia

linuxeasy.org/rilasciato-kde-p…

Plasma 6.6.5 migliora stabilità, accessibilità e gestione hardware con decine di correzioni per KWin, Discover, Spectacle e Plasma Workspace.
L'articolo Rilasciato KDE Plasma 6.6.5 migliora Wayland e KWin proviene da Linux Easy.
E' vietato

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Il giovedì “gnocchi", almeno tre che ti fanno scoprire nuove #storie e nuovi #link.
Cosa? @LINKioni uno show intelligente.

Se vuoi seguirci in diretta, prenota la tua seggiola su #Telegram 🪑 qui: t.me/LlNKioni?livestream

🔹Oppure sul sito nostro sito linkioni.it/seguici-in-diretta…

Se la differita è decisamente il tuo mood, ci trovi in #podcast sulle piattaforme audio o sul nostro sito linkioni.it

🤯 Hai visto che bella Gif? Non la vuoi inviare a qualcuno?

@podcast #linkioni

Questa voce è stata modificata (4 settimane fa)

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

.NET Aspire 13.3: tutte le novità della release
#tech
spcnet.it/net-aspire-13-3-tutt…
@informatica


.NET Aspire 13.3: tutte le novità della release


.NET Aspire 13.3 è disponibile, e nonostante siano passate soltanto cinque settimane dalla versione 13.2, questa release porta con sé novità di rilievo: un nuovo skill per l’onboarding assistito da agente, risultati strutturati dai comandi delle risorse, log del browser direttamente nell’orchestratore, e — finalmente — supporto di prima classe a Kubernetes e AKS tramite Helm.

In questo articolo analizziamo le funzionalità più importanti di Aspire 13.3, con esempi pratici per i team che già usano Aspire in produzione o che vogliono iniziare.

Aspireify: onboarding assistito da agente


Una delle novità più interessanti di Aspire 13.3 è il nuovo skill Aspireify, pensato per semplificare l’integrazione di applicazioni esistenti in Aspire. Chi ha già seguito le sessioni AspiriFridays sa bene quanto possa essere laborioso il processo di “aspirificazione”: capire quali servizi sono presenti, quali porte usano, quali variabili d’ambiente sono dipendenze reali e come mappare i servizi Docker Compose verso le integrazioni Aspire native.

Il nuovo skill risolve esattamente questo problema. Quando aspire init crea lo scheletro dell’AppHost in un’applicazione esistente, Aspireify guida l’agente di coding attraverso un workflow strutturato per completare il lavoro:

  • Ispeziona il repository e comprende come l’applicazione è già strutturata
  • Mappa le configurazioni esistenti (es. DATABASE_URL) usando WithEnvironment() invece di riscrivere la configurazione
  • Preserva le porte hardcoded quando necessario, chiedendo all’utente nei casi ambigui
  • Se esiste già un Docker Compose, lo analizza prima di aggiungere nuove risorse

Il principio guida è chiaro: minimizzare le modifiche al codice esistente. L’agente si adatta all’applicazione, non viceversa.

Risultati strutturati dai comandi delle risorse


In Aspire 13.3, i comandi delle risorse possono restituire risultati strutturati al chiamante. Testo e JSON ora fluiscono attraverso il modello, gRPC, backchannel, UI del dashboard, CLI e strumenti MCP.

Questo significa che i comandi possono restituire risposte in markdown formattato — non solo “sì, è andato a buon fine”. Il dashboard integra tutto questo con un nuovo notification center nell’header, dove i risultati dell’esecuzione appaiono come notifiche con timestamp, rendering markdown e un’azione “View response” per l’output completo.

Tra le novità specifiche:

  • I comandi HTTP possono restituire il corpo della risposta, esposto via CLI, dashboard e SDK poliglotti generati
  • Il comando di rebuild delle risorse restituisce l’output del build come dati di testo strutturati, leggibili da strumenti e agenti senza dover fare scraping dei log
  • Le integrazioni di terze parti possono aggiungere comandi che restituiscono risultati significativi invece di cambiare solo stato in background


Browser logs: Aspire vede anche il frontend


La nuova API WithBrowserLogs() collega una risorsa browser tracciata a qualsiasi risorsa con un endpoint. Aspire avvia Chromium usando una pipe CDP privata (invece di un endpoint TCP debug esposto), poi trasmette log della console, richieste di rete ed errori nel log stream della risorsa:

// C# AppHost
var frontend = builder.AddViteApp("frontend", "../frontend")
    .WithHttpEndpoint(port: 3000)
    .WithBrowserLogs();

// TypeScript AppHost
const frontend = await builder.addViteApp("frontend", "../frontend")
    .withHttpEndpoint({ port: 3000 })
    .withBrowserLogs();

La funzionalità è disponibile tramite il nuovo pacchetto prerelease Aspire.Hosting.Browsers. Un comando del dashboard permette di configurare scope, browser e modalità user data a runtime, mentre un comando screenshot salva PNG come artefatti locali durevoli.

Dal punto di vista degli agent workflow, questo è particolarmente potente: l’agente può eseguire l’app, ispezionare i log del browser, catturare cosa è cambiato, correggere il codice, riavviare la risorsa e continuare — senza che lo sviluppatore debba incollare screenshot nella chat.

TypeScript, Python e Java AppHost verso la GA


Aspire 13.2 aveva introdotto l’authoring TypeScript AppHost. In 13.3, il lavoro continua su tutte e tre le piattaforme:

  • TypeScript, Python e Java AppHost espongono ora il set completo di extension method di Aspire.Hosting
  • Le API sono state rese più idiomatiche per ogni linguaggio: metodi come addProject, withEnvironment e withReference sono consolidati per leggere naturalmente
  • Python si aggiunge come nuovo generatore di codice AppHost
  • Java AppHost ora supporta union, optional/nullability, callback e un nuovo template “Empty (Java AppHost)”
  • Il nuovo diagnostico ASPIREEXPORT013 individua ID di capability duplicati a compile time


Kubernetes e AKS: finalmente supporto di prima classe


La novità più attesa della release è senza dubbio il supporto Kubernetes come deployment target di prima classe. Aspire aveva già un’ottima storia per Azure Container Apps e Docker Compose; ora Kubernetes entra nel club.

Il nuovo pacchetto Aspire.Hosting.Azure.Kubernetes aggiunge AddAzureKubernetesEnvironment(), con cui è possibile definire cluster AKS, node pool, tier SKU, cluster privati e Azure Container Insights direttamente dall’AppHost:

// C# AppHost
var aks = builder.AddAzureKubernetesEnvironment("prod-aks")
    .WithHelm();

builder.AddCSharpApp("api", "../api")
    .PublishTo(aks);

// TypeScript AppHost
const aks = await builder.addAzureKubernetesEnvironment("prod-aks")
    .withHelm();

await builder.addCsharpApp("api", "../api")
    .publishTo(aks);

aspire deploy usa Helm sotto il cofano, e il nome del namespace e della release sono configurabili con WithHelm(). Sono disponibili anche routing dichiarativo Ingress e Gateway API con AddIngress() e AddGateway(), inclusa configurazione di route, TLS, hostname e class. Per il teardown, aspire destroy esegue helm uninstall automaticamente — niente più script di pulizia manuali in un README.

Altre novità rilevanti


Aspire 13.3 include molte altre migliorie degne di nota:

  • EF Core migration management: sei comandi (Update Database, Drop Database, Reset Database, Add Migration, Remove Migration, Get Database Status) accessibili da dashboard e CLI, con esecuzione automatica all’avvio dell’AppHost in sviluppo locale
  • Azure networking: Azure Front Door, Network Security Perimeters, endpoint privati per Azure OpenAI e Foundry, ACR privato, e upgrade HTTPS automatici per App Service
  • JavaScript publishing: tre nuovi modelli di pubblicazione — PublishAsStaticWebsite(), PublishAsNodeServer() e PublishAsNpmScript() — con integrazione dedicata AddNextJsApp()
  • CLI: rilevamento automatico di Bun, Yarn e pnpm da lockfile; aspire dashboard standalone senza AppHost; aspire docs api per sfogliare la reference API dal terminale
  • Estensione VS Code: CodeLens e gutter icon nei file AppHost, Simple Browser integrato per il dashboard, workspace auto-restore
  • Docker Compose: supporto Podman tramite rilevamento automatico del runtime


Breaking changes da conoscere prima dell’aggiornamento


Prima di aggiornare, è importante verificare la sezione dei breaking changes ufficiale se si usano:

  • Startup hook Kubernetes/Docker Compose/AKS
  • Endpoint di gestione degli emulator
  • Il server MCP del dashboard
  • Il template starter Python
  • Output name di Azure network


Come aggiornare


Se si usa già Aspire, l’aggiornamento è semplice:

aspire update --self

Per chi parte da zero:
aspire init

oppure visitare get.aspire.dev per installare la CLI.

Conclusione


Aspire 13.3 consolida la piattaforma su tutti i fronti: l’onboarding diventa più semplice grazie ad Aspireify, l’osservabilità raggiunge il browser con WithBrowserLogs(), il supporto multi-linguaggio avanza verso la GA, e Kubernetes entra ufficialmente come target di deployment. Per i team .NET che operano su Kubernetes o AKS, questa è probabilmente la release più attesa degli ultimi mesi.

Fonte: What’s New in Aspire 13.3 — Maddy Montaquila, Microsoft Aspire Blog (7 maggio 2026)


Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Medicinali critici, via libera all’intesa tra Parlamento e Consiglio: l’UE punta alla sovranità farmaceutica
@news
eunews.it/2026/05/12/medicinal…
Tra le misure concordate figurano l’assegnazione di fondi UE alle aziende che producono sul territorio europeo e l’introduzione di criteri che favoriscano i sistemi produttivi europei negli appalti pubblici
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

MCP Server con Node.js: da un sistema di note su file a MySQL
#tech
spcnet.it/mcp-server-con-node-…
@informatica


MCP Server con Node.js: da un sistema di note su file a MySQL


Cos’è il Model Context Protocol e perché interessa ai developer Node.js


I modelli di linguaggio sono bravi a ragionare e conversare, ma da soli non possono eseguire operazioni reali sui tuoi sistemi. Possono suggerire query SQL o chiamate API, ma non possono farle girare concretamente. Il Model Context Protocol (MCP) risolve questo limite: fornisce ai modelli AI un modo strutturato per interagire con i tuoi strumenti, dai database ai file, fino alle API esterne. Invece di generare testo su ciò che dovrebbe accadere, il modello può invocare funzioni che lo fanno davvero accadere.

In pratica, questo apre la strada a strumenti come chatbot che creano e cercano voci nel database, assistenti AI che interrogano tool interni o attivano workflow, e agenti che leggono file, eseguono comandi e restituiscono risultati reali.

In questo tutorial imparerai a costruire il tuo primo MCP server da zero con Node.js e TypeScript: partiremo da un sistema di note basato su file per capire i concetti fondamentali, poi passeremo a un backend MySQL per mostrare come un LLM possa guidare operazioni deterministiche. Entro la fine avrai un server MCP funzionante pronto per essere collegato al client AI che preferisci.

Come funziona MCP


MCP segue un modello client-server: l’applicazione AI fa da client, il tuo codice gira come server. In una configurazione tipica, il client (Claude Desktop, Claude Code, Cursor, ecc.) si interpone tra l’utente e il tuo server, inoltrandogli le richieste e restituendogli i risultati. Il modello stesso non chiama mai direttamente il tuo server: quando l’utente manda un messaggio, il client condivide col modello la lista dei tool esposti dal tuo server. Il modello decide quale tool chiamare (e con quali argomenti), il client esegue la chiamata e rimanda il risultato al modello.

Utente → Client MCP → Modello AI → Tool selezionato → Server MCP → Risposta

Prerequisiti


Per seguire questo tutorial ti serviranno:

  • Node.js 18+
  • Familiarità di base con TypeScript
  • Un client compatibile con MCP per il test (Claude Desktop, Claude Code, Cursor, ecc.)
  • MySQL installato localmente (solo per la sezione avanzata con database)


Costruire il server MCP: sistema di note su file


Iniziamo creando un nuovo progetto Node.js. Questo sarà un sistema di note basato su file, utile per comprendere i concetti prima di introdurre un database.

mkdir mcp-notes && cd mcp-notes
npm init -y

Installa le dipendenze necessarie: l’SDK MCP per costruire il server, Zod per la validazione degli input e TypeScript per la type safety:
npm install @modelcontextprotocol/sdk zod
npm install -D typescript @types/node

Apri il package.json e aggiungi "type": "module" (l’SDK MCP usa i moduli ES) e gli script di build e start:
{
  "type": "module",
  "scripts": {
    "build": "tsc",
    "start": "node dist/index.js"
  }
}

Crea un file tsconfig.json nella root del progetto:
{
  "compilerOptions": {
    "target": "ES2022",
    "module": "Node16",
    "moduleResolution": "Node16",
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true
  },
  "include": ["src/**/*"]
}

Scrivere il server


Crea il file src/index.ts con il codice base del server:

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import fs from "fs/promises";
import path from "path";
import { z } from "zod";

const NOTES_DIR = path.join(process.cwd(), "notes");
await fs.mkdir(NOTES_DIR, { recursive: true });

const server = new McpServer({
  name: "mcp-notes",
  version: "1.0.0",
});

// I tool verranno aggiunti qui

const transport = new StdioServerTransport();
await server.connect(transport);

Questo è un MCP server completo e funzionante: crea la directory delle note, inizializza il server e lo connette tramite stdio per comunicare con un client MCP.

Aggiungere i tool


Ogni tool definisce una singola azione che il modello può compiere. Include nome, descrizione, schema di input e una funzione handler. Aggiungiamo i tre tool fondamentali: creazione, lettura e lista delle note.

server.tool(
  "create_note",
  "Create a new note with a given title and content",
  {
    title: z.string().min(1).describe("The note title"),
    content: z.string().min(1).describe("The body of the note"),
  },
  async ({ title, content }) => {
    const filename = `${title.replace(/[^a-z0-9_-]/gi, "_")}.txt`;
    const filepath = path.join(NOTES_DIR, filename);
    try {
      await fs.access(filepath);
      return {
        content: [{ type: "text", text: `Error: note "${title}" already exists.` }],
        isError: true,
      };
    } catch {}
    await fs.writeFile(filepath, content, "utf-8");
    return { content: [{ type: "text", text: `Note "${title}" created.` }] };
  }
);

server.tool(
  "read_note",
  "Read the content of a note by its title",
  { title: z.string().min(1).describe("The title of the note to read") },
  async ({ title }) => {
    const filename = `${title.replace(/[^a-z0-9_-]/gi, "_")}.txt`;
    try {
      const content = await fs.readFile(path.join(NOTES_DIR, filename), "utf-8");
      return { content: [{ type: "text", text: content }] };
    } catch {
      return {
        content: [{ type: "text", text: `Error: note "${title}" not found.` }],
        isError: true,
      };
    }
  }
);

server.tool(
  "list_notes",
  "List all available notes",
  {},
  async () => {
    const files = await fs.readdir(NOTES_DIR);
    const notes = files.filter(f => f.endsWith(".txt")).map(f => f.replace(".txt", ""));
    if (notes.length === 0) return { content: [{ type: "text", text: "No notes found." }] };
    return { content: [{ type: "text", text: notes.join("\n") }] };
  }
);

Testare il server con Claude Desktop


Compila il progetto con npm run build. Poi apri il file di configurazione di Claude Desktop:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Aggiungi il server sotto la chiave mcpServers:

{
  "mcpServers": {
    "mcp-notes": {
      "command": "node",
      "args": ["/percorso/del/progetto/mcp-notes/dist/index.js"],
      "cwd": "/percorso/del/progetto/mcp-notes"
    }
  }
}

Riavvia Claude Desktop e prova con prompt come: “Crea una nota chiamata standup con gli aggiornamenti di oggi” oppure “Elenca tutte le mie note”.

Passare a MySQL: dati strutturati per uso reale


Il sistema basato su file funziona bene per comprendere i fondamentali, ma ha limiti evidenti. Passare a MySQL mette in luce un pattern importante nel design MCP: il modello decide quale azione intraprendere, ma il tuo codice rimane responsabile di come quella azione viene eseguita. Quando il modello chiama search_notes, non genera né esegue SQL da solo: il tuo handler gestisce l’operazione in modo controllato, con query parametrizzate.

Installa il driver MySQL:

npm install mysql2

Crea il database e la tabella:
CREATE DATABASE mcp_notes;
USE mcp_notes;
CREATE TABLE notes (
  id INT AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(255) UNIQUE NOT NULL,
  content TEXT NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

La versione MySQL del tool create_note inserisce una riga invece di scrivere un file e gestisce i duplicati intercettando l’errore ER_DUP_ENTRY. La versione di search_notes permette ricerche full-text su titoli e contenuti — una funzionalità che con i file richiederebbe un codice molto più complesso.
server.tool(
  "search_notes",
  "Search notes by keyword across titles and content",
  { query: z.string().min(1).describe("Keyword or phrase to search for") },
  async ({ query }) => {
    const like = `%${query}%`;
    const [rows] = await pool.execute<mysql.RowDataPacket[]>(
      "SELECT title, created_at FROM notes WHERE title LIKE ? OR content LIKE ? ORDER BY created_at DESC",
      [like, like]
    );
    if (rows.length === 0) {
      return { content: [{ type: "text", text: `No notes found matching "${query}".` }] };
    }
    return { content: [{ type: "text", text: rows.map(r => `- ${r.title} (${r.created_at})`).join("\n") }] };
  }
);

Principi per progettare buoni tool MCP


Un tool MCP che funziona in fase di test può fallire in produzione se il modello fraintende quando o come usarlo. Alcune regole pratiche:

  • Descrizioni esplicite: frasi come “Gestisce le note” sono troppo vaghe. Usa descrizioni che spiegano chiaramente cosa fa il tool e quando va usato.
  • Singola responsabilità: ogni tool deve fare una sola cosa. Strumenti troppo “jolly” costringono il modello a indovinare l’intento.
  • Errori azionabili: usa isError: true con messaggi che guidano il modello su come riprovare: "Note non trovata. Usa list_notes per vedere quelle disponibili."
  • Boundary sicuri: mai interpolazione diretta dell’input utente in SQL o comandi shell. Usa sempre query parametrizzate.


Conclusione


Costruire un MCP server con Node.js e TypeScript è sorprendentemente accessibile grazie all’SDK ufficiale. Il pattern che hai imparato in questo tutorial — definire tool con schema Zod, gestire gli errori con isError e connettere il server via stdio — si scala facilmente a scenari più complessi: integrazione di API REST, automazione di workflow, connessione di agenti AI a sistemi legacy.

Il codice completo del tutorial è disponibile su GitHub.

Fonte: How to build your first MCP server with Node.js — LogRocket Blog (Elijah Asaolu, 5 maggio 2026)


Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Nelle UE più respingimenti e crollo di presenze irregolari di persone migranti
@news
eunews.it/2026/05/12/nelle-ue-…
Secondo i dati di Eurostat, i divieti di ingresso sono stati il 7,1 per cento in più rispetto al 2024. I cittadini ucraini risultano i più colpiti. L'Italia guida la classifica per i respingimenti via mare
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Giovani galassie spazzate dal vento dei quasar

@astronomia

Dalle osservazioni condotte con Jwst di 27 quasar in epoca primordiale, pubblicate la scorsa settimana su Nature, emerge come il loro vento ultraveloce sia il principale responsabile dell’alt precoce alla formazione stellare imposto alle giovani galassie quando l’universo aveva appena un miliardo di anni. Allo studio, guidato da

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Tajani esagera il ruolo dell’Italia nelle missioni internazionali
@politica
pagellapolitica.it/articoli/ta…
Il nostro Paese partecipa operativamente a molte missioni ONU e NATO, ma non siamo sempre primi per militari impiegati
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Google blocca un attacco basato su una zero-day scoperta da un LLM: è la prima volta


@Informatica (Italy e non Italy)
Il Google Threat Intelligence Group (GTIG) ha identificato per la prima volta un exploit zero-day che si ritiene essere stato sviluppato con l’aiuto dell’intelligenza artificiale. Ecco perché il caso dell’AI che entra nel tratto più delicato

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Anti-ransomware day 2026: un mercato criminale attivo, misurabile e in evoluzione


@Informatica (Italy e non Italy)
In occasione dell’Anti-Ransomware Day, secondo un report, crescono gli attacchi estorsivi “senza crittografia”, l’adozione della crittografia post-quantistica da parte dei gruppi ransomware e l'uso di canali Telegram per distribuire dataset e

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

G7, varate linee guida sulla trasparenza dell’AI. Si migliora tracciabilità, gestione delle vulnerabilità e sicurezza


@Informatica (Italy e non Italy)
Pubblicate le linee guida del G7 sul Software Bill of Materials per l’AI Nel momento in cui l’intelligenza artificiale (AI) entra sempre più profondamente nei processi produttivi, nelle

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please log in.

Il primo zero-day costruito con l’AI: Google sventava un attacco di massa con exploit generato da LLM


@Informatica (Italy e non Italy)
Google Threat Intelligence Group ha documentato il primo caso confermato di zero-day sviluppato con AI: un bypass del 2FA in un tool open source di amministrazione web, costruito da un criminal threat actor che


Il primo zero-day costruito con l’AI: Google sventava un attacco di massa con exploit generato da LLM


Si parla di:
Toggle

Per la prima volta nella storia documentata della cybersecurity, un gruppo criminale ha utilizzato un modello di intelligenza artificiale per identificare una vulnerabilità zero-day sconosciuta e trasformarla in un exploit funzionante, pianificando di impiegarla in un evento di compromissione di massa. Google Threat Intelligence Group (GTIG) ha svelato la scoperta l’11 maggio 2026, descrivendo quella che potrebbe essere un punto di svolta nell’evoluzione delle capacità offensive dei threat actor.

La scoperta: un exploit scritto da un LLM


Il team GTIG di Google ha identificato uno script Python contenente un exploit per una vulnerabilità zero-day in un popolare strumento open source di amministrazione web. La falla, un bypass dell’autenticazione a due fattori (2FA), permetteva a un attaccante in possesso di credenziali valide di aggirare completamente il secondo fattore di autenticazione, aprendo la strada a un accesso non autorizzato su larga scala.

Ciò che ha immediatamente attirato l’attenzione degli analisti non era tanto la vulnerabilità in sé, quanto le caratteristiche stilistiche e strutturali del codice che la implementava. Lo script presentava una serie di indizi inequivocabili della sua origine artificiale:

  • Docstring educativi estremamente dettagliati: ogni funzione era accompagnata da commenti esplicativi esaustivi, in uno stile tipico degli output di Large Language Model addestrati su repository di codice open source e documentazione tecnica.
  • Un punteggio CVSS “allucinato”: lo script includeva una valutazione CVSS autogenerata ma non corrispondente a nessuna voce esistente nel National Vulnerability Database — un errore tipico di un modello che genera informazioni plausibili ma non verificate.
  • Formato Pythonic “da manuale”: la struttura pulita, la classe _C per i colori ANSI, i menu di aiuto dettagliati e la coerenza stilistica riflettono il pattern caratteristico degli output di modelli come GPT-4 o Gemini quando invitati a scrivere strumenti di sicurezza.

GTIG ha valutato con alta confidenza che un modello di AI sia stato utilizzato sia per scoprire la vulnerabilità che per costruire l’exploit, pur non avendo prove che il modello specifico impiegato fosse Gemini di Google.

La natura della vulnerabilità: logica semantica, non memoria


Uno degli aspetti più rilevanti della scoperta riguarda la tipologia della vulnerabilità stessa. Non si trattava di un classico bug di memory corruption (buffer overflow, use-after-free) né di un problema di input sanitization — le categorie che i fuzzer tradizionali e gli strumenti SAST (Static Application Security Testing) sono progettati per individuare.

La falla era invece un difetto logico semantico ad alto livello: un’assunzione di trust codificata nella logica di enforcement del 2FA, che permetteva a un flusso di autenticazione specifico di saltare la verifica del secondo fattore. Questo tipo di vulnerabilità richiede una comprensione profonda della logica applicativa e dei suoi presupposti impliciti — un dominio in cui i modelli di linguaggio di grandi dimensioni, addestrati su enormi corpus di codice e documentazione, mostrano capacità emergenti superiori agli strumenti di analisi statica convenzionali.

La scoperta conferma ciò che molti ricercatori ipotizzavano ma temevano di veder concretizzato: i modelli AI possono identificare classi di vulnerabilità che sfuggono sistematicamente agli strumenti automatizzati tradizionali.

L’evento pianificato: compromissione di massa sventata


Secondo GTIG, il threat actor aveva pianificato di utilizzare l’exploit in un mass exploitation event — un attacco opportunistico su larga scala verso tutti i sistemi vulnerabili esposti su internet. La proactive discovery da parte di Google ha permesso di interrompere la catena prima che l’exploit venisse utilizzato in produzione.

Google ha lavorato con il vendor del software colpito per la divulgazione responsabile della vulnerabilità e il rilascio di una patch correttiva, senza rivelare pubblicamente il nome dello strumento interessato per limitare il rischio di sfruttamento da parte di altri attori durante la finestra di patching.

Il quadro più ampio: AI e cybercrime state-sponsored


L’incidente non è isolato: il report GTIG del maggio 2026 documenta una tendenza sistematica all’adozione di strumenti AI da parte di gruppi APT nation-state. In particolare:

  • Cina: operatori state-linked stanno sperimentando sistemi AI per la vulnerability hunting automatizzata e il probing di target — essenzialmente automatizzando il processo di ricognizione e identificazione delle superfici di attacco.
  • Corea del Nord (APT45): il gruppo sta utilizzando AI per processare migliaia di exploit check in bulk e arricchire il proprio toolkit, accelerando significativamente i tempi di sviluppo di nuove capacità offensive.
  • Gruppi criminali non-state: come dimostrato da questo episodio, anche attori privi di risorse statali hanno ormai accesso a capacità di sviluppo exploit AI-assisted tramite modelli commerciali o open source.

Il democratizzazione degli strumenti AI abbassa significativamente la barriera tecnica per lo sviluppo di exploit sofisticati, storicamente appannaggio di gruppi con risorse e competenze elevate.

Due righe per i difensori


Questa scoperta accelera un dibattito che era rimasto per lungo tempo teorico: se gli attaccanti usano AI per trovare vulnerabilità, i difensori devono adottare gli stessi strumenti con ancora maggiore urgenza. Alcune considerazioni pratiche:

  • Rivedere i programmi di bug bounty per includere vulnerabilità logiche e di flusso che i tool tradizionali non rilevano, premiando i ricercatori umani e AI-assisted che identificano difetti semantici.
  • Implementare AI-assisted code review nel ciclo di sviluppo, in particolare per la logica di autenticazione e autorizzazione — le aree dove i difetti semantici sono più probabili e più gravi.
  • Monitorare i pattern di accesso MFA con particolare attenzione ai bypass del secondo fattore, anche in presenza di credenziali valide.
  • Aggiornare tempestivamente tutti gli strumenti di amministrazione web esposti su internet, indipendentemente dalla loro percezione come “strumenti minori”.

Il primo zero-day AI-generated documentato in natura non segna la fine di un’era, ma l’inizio di una nuova fase nella corsa agli armamenti digitali. Le organizzazioni che non integreranno AI nei propri processi di difesa si troveranno strutturalmente svantaggiate rispetto a avversari che già la impiegano sistematicamente per attaccare.


Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Eurovision 2026, intervista ad Alexandra Căpitănescu: “La musica è un arcobaleno di emozioni”


Eurovision 2026, intervista ad Alexandra Căpitănescu: “La musica è un arcobaleno di emozioni”

eurofestivalnews.com/2026/05/1…

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

La vicepresidente dell'europarlamento Pina Picierno ha denunciato un tentativo di violazione del suo account Signal

Secondo gli elementi tecnici raccolti sarebbe riconducibile a una campagna attribuita ai servizi russi dell’FSB.
Da mesi le autorità europee registrano campagne di phishing contro utenti di app di messaggistica cifrata, in particolare Signal e WhatsApp.

formiche.net/2026/05/signal-ne…

@informatica

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Dall’UE 15 milioni per potenziare le forze armate della Bosnia-Erzegovina
@news
eunews.it/2026/05/12/dallue-15…
Il sostegno economico attraverso lo Strumento europeo per la pace
Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

RRF Caserta Motori . Le medie elettriche più economiche


The media in this post is not displayed to visitors. To view it, please go to the original post.

RRF Caserta Motori . Le medie elettriche più economiche radioritornofuturo.podbean.com…

reshared this

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Fedora e Ubuntu: supporto AI in arrivo

@GNU/Linux Italia

linuxeasy.org/fedora-e-ubuntu-…

Fedora e Ubuntu introducono supporto per AI locale su Linux: piattaforme developer, privacy garantita, dibattiti accesi.
L'articolo Fedora e Ubuntu: supporto AI in arrivo proviene da Linux Easy.
E' vietato riprodurre questo articolo senza autorizzazione.
Questo feed RSS è destinato ai

Feddit Un'istanza italiana Lemmy ha ricondiviso questo.

Eurovision e Israele, l'inchiesta del New York Times: un milione di dollari, l'EBU che non vuole vedere e la Rai che resta


Il governo Netanyahu ha speso almeno un milione di dollari in marketing Eurovision

Cinquanta interlocutori, documenti interni dell’European Broadcasting Union, dati di voto mai resi pubblici. Il dossier ricostruisce come il governo di Benjamin Netanyahu abbia trasformato la gara canora più vista del mondo, 166 milioni di spettatori, in uno strumento di soft power. E come l’EBU, l’ente organizzatore, abbia scelto, sistematicamente, di non guardare.


@musica

Il post di @giuliocavalli

giuliocavalli.substack.com/p/e…