<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Getting Started on Cloud Native MCP Server</title><link>https://mahmut-abi.github.io/cloud-native-mcp-server/getting-started/</link><description>Recent content in Getting Started on Cloud Native MCP Server</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://mahmut-abi.github.io/cloud-native-mcp-server/getting-started/index.xml" rel="self" type="application/rss+xml"/><item><title>FAQ</title><link>https://mahmut-abi.github.io/cloud-native-mcp-server/getting-started/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mahmut-abi.github.io/cloud-native-mcp-server/getting-started/faq/</guid><description>&lt;h1 id="getting-started-faq"&gt;Getting Started FAQ&lt;a class="anchor" href="#getting-started-faq"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="which-mode-should-i-choose-first"&gt;Which mode should I choose first?&lt;a class="anchor" href="#which-mode-should-i-choose-first"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Use this default decision path:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;streamable-http&lt;/code&gt;: best fit for modern MCP transport in production&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sse&lt;/code&gt;: broad compatibility with existing MCP clients and integrations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are unsure, start with &lt;code&gt;sse&lt;/code&gt;, complete validation, then migrate to &lt;code&gt;streamable-http&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="why-do-i-get-401-unauthorized"&gt;Why do I get &lt;code&gt;401 unauthorized&lt;/code&gt;?&lt;a class="anchor" href="#why-do-i-get-401-unauthorized"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Check the following in order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;MCP_AUTH_ENABLED=true&lt;/code&gt; is actually set in runtime environment.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MCP_AUTH_MODE&lt;/code&gt; is one of &lt;code&gt;apikey&lt;/code&gt;, &lt;code&gt;bearer&lt;/code&gt;, &lt;code&gt;basic&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;For &lt;code&gt;apikey&lt;/code&gt; mode, &lt;code&gt;MCP_AUTH_API_KEY&lt;/code&gt; is non-empty and matches request value.&lt;/li&gt;
&lt;li&gt;API key is sent via &lt;code&gt;X-Api-Key&lt;/code&gt; header or &lt;code&gt;api_key&lt;/code&gt; query parameter.&lt;/li&gt;
&lt;li&gt;Container/process was restarted after configuration changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="is-api-key-header-or-query-parameter-preferred"&gt;Is API key header or query parameter preferred?&lt;a class="anchor" href="#is-api-key-header-or-query-parameter-preferred"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Both are supported, but use request headers in production whenever possible:&lt;/p&gt;</description></item><item><title>Troubleshooting</title><link>https://mahmut-abi.github.io/cloud-native-mcp-server/getting-started/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mahmut-abi.github.io/cloud-native-mcp-server/getting-started/troubleshooting/</guid><description>&lt;h1 id="troubleshooting"&gt;Troubleshooting&lt;a class="anchor" href="#troubleshooting"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Use this page as a practical playbook when setup or runtime behavior is not as expected.&lt;/p&gt;
&lt;h2 id="1-server-fails-to-start"&gt;1. Server fails to start&lt;a class="anchor" href="#1-server-fails-to-start"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Check port conflicts and startup logs:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Check if port is occupied&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ss -lntp &lt;span style="color:#1f2328"&gt;|&lt;/span&gt; rg &lt;span style="color:#0550ae"&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Start with debug logs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./cloud-native-mcp-server --mode&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;sse --addr&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;127.0.0.1:8080 --log-level&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;debug&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If using Docker, inspect container logs:&lt;/p&gt;</description></item></channel></rss>