<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>API Gateway on Thomas</title>
        <link>https://blog.thomasplantain.fr/tags/api-gateway/</link>
        <description>Recent content in API Gateway on Thomas</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>fr-fr</language>
        <lastBuildDate>Tue, 21 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.thomasplantain.fr/tags/api-gateway/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>MCP pour les nuls - la suite</title>
        <link>https://blog.thomasplantain.fr/post/mcpgtw/</link>
        <pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate>
        
        <guid>https://blog.thomasplantain.fr/post/mcpgtw/</guid>
        <description>&lt;img src="https://blog.thomasplantain.fr/img/mcpgtw/mcp-gateway-gemini.avif" alt="Featured image of post MCP pour les nuls - la suite" /&gt;&lt;blockquote&gt;
&lt;p&gt;Suite du post précédent, je mets en place une gateway pour protéger mon serveur MCP. Le serveur MCP a été déployé sur Azure Container, il est accessible.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/mcpgtw/mcp-gateway-gemini.avif&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;MCP Gateway&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;mise-en-place-dune-flex-gateway&#34;&gt;Mise en place d&amp;rsquo;une Flex gateway
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Création et enregistrement de ma nouvelle Flex gateway (mcp-gateway)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;J&amp;rsquo;ai créé une image Docker de la flex avec son fichier d&amp;rsquo;enregistrement. L&amp;rsquo;image Docker tourne sur un Azure Container, elle est maintenant visible sur Anypoint (le control plane de MuleSoft).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/mcpgtw/new-flex-gtw.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Flex Gateway&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;configuration-de-mon-server-mcp-sur-anypoint&#34;&gt;Configuration de mon server MCP sur Anypoint
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.mulesoft.com/api-manager/latest/create-instance-task-agent-tool&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Documentation officielle de MuleSoft&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ajout de mon serveur MCP (mcp_card)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Aller sur &lt;strong&gt;API Manager&lt;/strong&gt; (Anypoint) et sélectionner &lt;strong&gt;Agent and Tools Instances&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/mcpgtw/mcp-server-instance.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;API Manager&#34;
	
	
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;En sélectionnant la Flex Gateway mise en place pour ce projet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/mcpgtw/add-mcp1.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Flex Gateway&#34;
	
	
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Maintenant on peut ajouter un &lt;strong&gt;MCP Server&lt;/strong&gt; et on finalise la configuration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/mcpgtw/mcp-config1.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Flex Gateway&#34;
	
	
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Le contrat du serveur &lt;strong&gt;mcp_card&lt;/strong&gt; est visible sur le portail API d&amp;rsquo;Anypoint (Exchange).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/mcpgtw/exchange-mcp.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Echange&#34;
	
	
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Le serveur mcp_card est théoriquement accessible via la gateway, il faut maintenant ajouter les policies pour le sécuriser.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;policies-pour-mon-serveur-mcp&#34;&gt;Policies pour mon serveur MCP
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.mulesoft.com/gateway/latest/policies-included-mcp-support&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MCP Support&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Cette policy est obligatoire pour le bon fonctionnement du serveur MCP.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Client ID Enforcement&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Pour limiter l&amp;rsquo;accès au serveur &lt;strong&gt;mcp_card&lt;/strong&gt; aux applications enregistrées qui ont le duo &lt;strong&gt;client_id/client_secret&lt;/strong&gt; dans leurs Headers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/mcpgtw/mcp-clientid.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Echange&#34;
	
	
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nous avons donc 2 policies configurées sur notre gateway pour le serveur &lt;strong&gt;mcp_card&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/mcpgtw/mcp-policies.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Policies&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;appels-du-serveur-mcp-avec-bruno&#34;&gt;Appels du serveur MCP avec Bruno
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Nous allons tester la connectivité au server &lt;strong&gt;mcp_card&lt;/strong&gt; avec le client API &lt;a class=&#34;link&#34; href=&#34;https://www.usebruno.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bruno&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Configuration des Headers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/mcpgtw/bruno-headers.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Headers&#34;
	
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Appels aux services du serveur &lt;strong&gt;mcp_card&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/mcpgtw/call-mcp1.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;card_details&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/mcpgtw/call-mcp4.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;transaction_list&#34;
	
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si le &lt;strong&gt;client_secret&lt;/strong&gt; est faux dans les Headers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/mcpgtw/call-mcp-failed.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;failed&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;observabilité&#34;&gt;Observabilité
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;L&amp;rsquo;outil de monitoring d&amp;rsquo;Anypoint nous permet au niveau de la configuration du serveur de visualiser les appels. On voit les appels de chaque service et les appels en erreurs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;card_details&lt;/li&gt;
&lt;li&gt;transaction_list&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.thomasplantain.fr/img/mcpgtw/mcp-metrics.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;metrics&#34;
	
	
&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
