<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dimitri</title>
    <description>The latest articles on DEV Community by Dimitri (@dimitri_roesing).</description>
    <link>https://dev.to/dimitri_roesing</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3877614%2Ff6aeca35-9f61-452b-80dc-71a09b27dfb0.png</url>
      <title>DEV Community: Dimitri</title>
      <link>https://dev.to/dimitri_roesing</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dimitri_roesing"/>
    <language>en</language>
    <item>
      <title>I Built a Free MCP Server for European Financial Data</title>
      <dc:creator>Dimitri</dc:creator>
      <pubDate>Tue, 14 Apr 2026 03:09:44 +0000</pubDate>
      <link>https://dev.to/dimitri_roesing/i-built-a-free-mcp-server-for-european-financial-data-50co</link>
      <guid>https://dev.to/dimitri_roesing/i-built-a-free-mcp-server-for-european-financial-data-50co</guid>
      <description>&lt;p&gt;The ECB deposit rate is 2%. Eurostat publishes inflation for all 27 EU countries every month. All of it is free. Getting it into Claude without writing a parser takes 30 seconds now.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fojfa5x54h27xj2s22j1c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fojfa5x54h27xj2s22j1c.png" alt="ECB rates in Claude — eu-finance MCP" width="780" height="468"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;ECB and Eurostat APIs are free and official. But their responses look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;message:GenericData&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;message:DataSet&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;generic:Series&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;generic:SeriesKey&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;generic:Value&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"FREQ"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"M"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;generic:Value&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"REF_AREA"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"U2"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;generic:Value&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"INDICATOR"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"MRR_FR"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/generic:SeriesKey&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;generic:Obs&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;generic:ObsDimension&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"2024-04"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;generic:ObsValue&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"4.5"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SDMX-XML with dataset codes that require reading a 40-page spec to interpret. Not something you want inside a Claude prompt.&lt;/p&gt;




&lt;h2&gt;
  
  
  What eu-finance does
&lt;/h2&gt;

&lt;p&gt;6 tools, all returning flat JSON:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What you get&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_ecb_rates&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deposit facility, main refi, marginal lending rates&lt;/td&gt;
&lt;td&gt;ECB SDW&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_euro_exchange&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;EUR vs 30+ currencies, latest or by date&lt;/td&gt;
&lt;td&gt;ECB / Frankfurter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_eu_inflation&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;HICP inflation by EU country, monthly/annual&lt;/td&gt;
&lt;td&gt;Eurostat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_eu_gdp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;GDP by country, quarterly, growth or absolute&lt;/td&gt;
&lt;td&gt;Eurostat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_eu_unemployment&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Unemployment by country and age group&lt;/td&gt;
&lt;td&gt;Eurostat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;compare_eu_economies&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Inflation + GDP + unemployment side by side&lt;/td&gt;
&lt;td&gt;All sources&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;No API key. No account.&lt;/p&gt;




&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Claude Code:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add eu-finance &lt;span class="nt"&gt;--&lt;/span&gt; npx &lt;span class="nt"&gt;-y&lt;/span&gt; @nexusforgetools/eu-finance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Claude Desktop / Cursor / Windsurf / Cline:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"eu-finance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@nexusforgetools/eu-finance"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  What you can ask
&lt;/h2&gt;

&lt;p&gt;Ask in plain language — eu-finance handles the API calls:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F61rvne1i69t1m6zi9oiu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F61rvne1i69t1m6zi9oiu.png" alt="EU inflation comparison — eu-finance MCP" width="780" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Calls ECB SDW and Eurostat SDMX REST APIs directly — both free, no auth required. Every response is normalized into typed flat JSON before leaving the tool. Redis cache in HTTP mode (1h for rates, 6h for inflation, 24h for GDP). Dual transport: stdio for local clients, HTTP/SSE for server deployments. TypeScript/ESM, Zod validation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;npm&lt;/strong&gt;: &lt;a href="https://www.npmjs.com/package/@nexusforgetools/eu-finance" rel="noopener noreferrer"&gt;@nexusforgetools/eu-finance&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/nexusforge-tools/mcp-eu-finance" rel="noopener noreferrer"&gt;nexusforge-tools/mcp-eu-finance&lt;/a&gt; — MIT&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NexusForge&lt;/strong&gt;: &lt;a href="https://nexusforge.tools" rel="noopener noreferrer"&gt;nexusforge.tools&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If there's a specific ECB or Eurostat dataset you need, open an issue.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>claude</category>
      <category>typescript</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
