<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Data-Api-Builder | The .NET Blog</title><link>https://thedotnetblog.com/ca/tags/data-api-builder/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ca</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Fri, 10 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/ca/tags/data-api-builder/index.xml" rel="self" type="application/rss+xml"/><item><title>Servidor SQL MCP: la manera correcta de donar accés a la base de dades d'AI Agents</title><link>https://thedotnetblog.com/ca/posts/emiliano-montesdeoca/sql-mcp-server-data-api-builder/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ca/posts/emiliano-montesdeoca/sql-mcp-server-data-api-builder/</guid><description>El servidor SQL MCP del creador d'API de dades ofereix als agents d'IA un accés segur i determinista a la base de dades sense exposar esquemes ni confiar en NL2SQL. RBAC, emmagatzematge en memòria cau, suport multibase de dades, tot integrat.</description><content:encoded>&lt;p&gt;Siguem sincers: la majoria dels servidors MCP de bases de dades disponibles avui dia són aterridors. Prenen una consulta en llenguatge natural, generen SQL sobre la marxa i l&amp;rsquo;executen amb les dades de producció. Què podria sortir malament? (Tot. Tot podria sortir malament.)&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;equip d&amp;rsquo;Azure SQL acaba de &lt;a href="https://devblogs.microsoft.com/azure-sql/introducing-sql-mcp-server/"&gt;introduir SQL MCP Server&lt;/a&gt;, i té un enfocament fonamentalment diferent. Creat com a característica del Data API Builder (DAB) 2.0, ofereix als agents d&amp;rsquo;IA un accés estructurat i determinista a les operacions de la base de dades, sense NL2SQL, sense exposar el vostre esquema i amb RBAC complet a cada pas.&lt;/p&gt;
&lt;h2 id="per-què-no-nl2sql"&gt;Per què no NL2SQL?&lt;/h2&gt;
&lt;p&gt;Aquesta és la decisió de disseny més interessant. Els models no són deterministes i les consultes complexes tenen més probabilitats de produir errors subtils. Les consultes exactes que els usuaris esperen que l&amp;rsquo;IA pugui generar són també les que necessiten més escrutini quan es produeixen de manera no determinista.&lt;/p&gt;
&lt;p&gt;En lloc d&amp;rsquo;això, SQL MCP Server utilitza un enfocament &lt;strong&gt;NL2DAB&lt;/strong&gt;. L&amp;rsquo;agent treballa amb la capa d&amp;rsquo;abstracció d&amp;rsquo;entitats del creador de l&amp;rsquo;API de dades i el creador de consultes integrat per produir un T-SQL precís i ben format de manera determinista. Mateix resultat per a l&amp;rsquo;usuari, però sense risc de JOIN al·lucinats o exposició accidental de dades.&lt;/p&gt;
&lt;h2 id="set-eines-no-set-centes"&gt;Set eines, no set-centes&lt;/h2&gt;
&lt;p&gt;SQL MCP Server exposa exactament set eines DML, independentment de la mida de la base de dades:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;describe_entities&lt;/code&gt; — descobreix entitats i operacions disponibles&lt;/li&gt;
&lt;li&gt;&lt;code&gt;create_record&lt;/code&gt; — inserir files&lt;/li&gt;
&lt;li&gt;&lt;code&gt;read_records&lt;/code&gt; — consulteu taules i vistes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;update_record&lt;/code&gt; — modifica les files&lt;/li&gt;
&lt;li&gt;&lt;code&gt;delete_record&lt;/code&gt; — elimina les files&lt;/li&gt;
&lt;li&gt;&lt;code&gt;execute_entity&lt;/code&gt; — executa procediments emmagatzemats&lt;/li&gt;
&lt;li&gt;&lt;code&gt;aggregate_records&lt;/code&gt; — consultes d&amp;rsquo;agregació&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Això és intel·ligent perquè les finestres de context són l&amp;rsquo;espai de pensament de l&amp;rsquo;agent. Inundar-los amb centenars de definicions d&amp;rsquo;eines deixa menys espai per al raonament. Set eines fixes mantenen l&amp;rsquo;agent centrat a &lt;em&gt;pensar&lt;/em&gt; en lloc de &lt;em&gt;navegar&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Cada eina es pot activar o desactivar individualment:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;runtime&amp;#34;&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;mcp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/mcp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;dml-tools&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;describe-entities&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;create-record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;read-records&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;update-record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;delete-record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;execute-entity&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;aggregate-records&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="com-començar-en-tres-ordres"&gt;Com començar en tres ordres&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dab init &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --database-type mssql &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --connection-string &lt;span class="s2"&gt;&amp;#34;@env(&amp;#39;sql_connection_string&amp;#39;)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dab add Customers &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --source dbo.Customers &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --permissions &lt;span class="s2"&gt;&amp;#34;anonymous:*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dab start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Això és un servidor SQL MCP en execució que exposa la vostra taula de clients. La capa d&amp;rsquo;abstracció d&amp;rsquo;entitats significa que podeu aliar noms i columnes, limitar camps per rol i controlar exactament el que veuen els agents, sense exposar els detalls de l&amp;rsquo;esquema intern.&lt;/p&gt;
&lt;h2 id="la-història-de-seguretat-és-sòlida"&gt;La història de seguretat és sòlida&lt;/h2&gt;
&lt;p&gt;Aquí és on la maduresa del creador de l&amp;rsquo;API de dades té els seus fruits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RBAC a cada capa&lt;/strong&gt;: cada entitat defineix quins rols poden llegir, crear, actualitzar o suprimir i quins camps són visibles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integració d&amp;rsquo;Azure Key Vault&lt;/strong&gt;: cadenes de connexió i secrets gestionats de manera segura&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microsoft Entra + OAuth personalitzat&lt;/strong&gt;: autenticació de grau de producció&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Política de seguretat de contingut&lt;/strong&gt;: els agents interactuen mitjançant un contracte controlat, no SQL brut&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L&amp;rsquo;abstracció de l&amp;rsquo;esquema és especialment important. Els noms de les vostres taules i columnes internes mai s&amp;rsquo;exposen a l&amp;rsquo;agent. Definiu entitats, àlies i descripcions que tinguin sentit per a la interacció de l&amp;rsquo;IA, no la vostra base de dades ERD.&lt;/p&gt;
&lt;h2 id="multibase-de-dades-i-multiprotocol"&gt;Multibase de dades i multiprotocol&lt;/h2&gt;
&lt;p&gt;SQL MCP Server és compatible amb Microsoft SQL, PostgreSQL, Azure Cosmos DB i MySQL. I com que és una funció DAB, obteniu punts finals REST, GraphQL i MCP simultàniament des de la mateixa configuració. Les mateixes definicions d&amp;rsquo;entitat, les mateixes regles RBAC, la mateixa seguretat, als tres protocols.&lt;/p&gt;
&lt;p&gt;La configuració automàtica a DAB 2.0 pot fins i tot inspeccionar la vostra base de dades i crear la configuració de manera dinàmica, si us sentiu còmode amb menys abstracció per a la creació de prototips ràpids.&lt;/p&gt;
&lt;h2 id="la-meva-opinió"&gt;La meva opinió&lt;/h2&gt;
&lt;p&gt;Així és com hauria de funcionar l&amp;rsquo;accés a la base de dades empresarial per als agents d&amp;rsquo;IA. No &amp;ldquo;hey LLM, escriu-me una mica d&amp;rsquo;SQL i YOLO contra la producció&amp;rdquo;. En lloc d&amp;rsquo;això: una capa d&amp;rsquo;entitat ben definida, generació de consultes deterministes, RBAC a cada pas, memòria cau, monitorització i telemetria. És avorrit de la millor manera possible.&lt;/p&gt;
&lt;p&gt;Per als desenvolupadors de.NET, la història d&amp;rsquo;integració és neta: DAB és una eina.NET, el servidor MCP s&amp;rsquo;executa com a contenidor i funciona amb Azure SQL, que la majoria de nosaltres ja estem utilitzant. Si esteu creant agents d&amp;rsquo;IA que necessiten accés a dades, comenceu aquí.&lt;/p&gt;
&lt;h2 id="tancant"&gt;Tancant&lt;/h2&gt;
&lt;p&gt;SQL MCP Server és gratuït, de codi obert i s&amp;rsquo;executa a qualsevol lloc. És l&amp;rsquo;enfocament prescriptiu de Microsoft per oferir als agents d&amp;rsquo;IA un accés segur a la base de dades. Consulteu la &lt;a href="https://devblogs.microsoft.com/azure-sql/introducing-sql-mcp-server/"&gt;publicació completa&lt;/a&gt; i la &lt;a href="https://aka.ms/sql/mcp"&gt;documentació&lt;/a&gt; per començar.&lt;/p&gt;</content:encoded></item></channel></rss>