<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Guide on Ashton Murphy</title><link>https://www.ashtonmurphyblog.com/categories/guide/</link><description>Recent content in Guide on Ashton Murphy</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 26 Mar 2026 21:36:17 -0400</lastBuildDate><atom:link href="https://www.ashtonmurphyblog.com/categories/guide/index.xml" rel="self" type="application/rss+xml"/><item><title>SearXNG as an MCP Server</title><link>https://www.ashtonmurphyblog.com/p/searxng-as-an-mcp-server/</link><pubDate>Thu, 26 Mar 2026 21:36:17 -0400</pubDate><guid>https://www.ashtonmurphyblog.com/p/searxng-as-an-mcp-server/</guid><description>&lt;img src="https://www.ashtonmurphyblog.com/p/searxng-as-an-mcp-server/searxng-search.png" alt="Featured image of post SearXNG as an MCP Server" /&gt;&lt;p&gt;This is a simple guide on setting up SearXNG locally to have significantly better searching, as opposed to a single search engine, along with setting it up as an MCP Server for LM Studio and the Zed Editor for running local AI models.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="why-use-searxng-locally"&gt;Why use SearXNG Locally?
&lt;/h2&gt;&lt;p&gt;SearXNG is a metasearch engine, which means it queries multiple search engines instead of querying just a single search engine. You can control exactly what search engines to use and you can integrate SearXNG easily with local tools like LM Studio and the Zed Editor. It&amp;rsquo;s also a lot nicer than a lot of the &amp;ldquo;modern&amp;rdquo; search engines, as there is no AI assitant or summary. If I want an AI summary than I would use a local agent to query accordingly, which I will also go over later in this post.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="setting-up-searxng-using-docker"&gt;Setting up SearXNG using Docker
&lt;/h2&gt;&lt;p&gt;Ensure you have docker installed on your system. If you&amp;rsquo;re running Linux there are instructions &lt;a class="link" href="https://docs.docker.com/engine/install/" target="_blank" rel="noopener"
 &gt;here&lt;/a&gt; on installing the Docker Engine. Ideally, you should use your system&amp;rsquo;s package manager to install docker to easily receive updates. If you&amp;rsquo;re on Windows or macOS you can refer to &lt;a class="link" href="https://docs.docker.com/desktop/" target="_blank" rel="noopener"
 &gt;this guide&lt;/a&gt; on installing Docker Desktop which you can run Docker Engine through.&lt;/p&gt;
&lt;p&gt;Once you have docker installed, we can create the config and data directories for SearXNG. Ensure you create these in a location that is 1) mounted on system startup and 2) in a place you can easily access and remember:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&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;mkdir -p ./searxng/config/ ./searxng/data/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ./searxng/
&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;After this we can pull in the docker image of SearXNG to use:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&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;docker pull docker.io/searxng/searxng:latest
&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;And once we have pulled the image, created the data and config directories, and navigated to the parent directory of those we can run the container:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&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;docker run --name searxng -d &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --restart&lt;span class="o"&gt;=&lt;/span&gt;always &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 8888:8080 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v &lt;span class="s2"&gt;&amp;#34;./config/:/etc/searxng/&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v &lt;span class="s2"&gt;&amp;#34;./data/:/var/cache/searxng/&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; docker.io/searxng/searxng:latest
&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;For this command:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--name&lt;/code&gt;: assigns a name to the container&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-d&lt;/code&gt;: detaches the container from the shell&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--restart&lt;/code&gt;: changes how the container is restarted, there are two options:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;always&lt;/code&gt;: will restart the container when the docker daemon starts even if the container is manually stopped&lt;/li&gt;
&lt;li&gt;&lt;code&gt;unless-stopped&lt;/code&gt;: will restart the container unless it is manually stopped in which case it needs to be manually restarted again&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p&lt;/code&gt;: Specifies the port that runs on your machine, followed by the port on the container (host_port:container_port)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-v&lt;/code&gt;: Creates a volume for the container, sets the path for it on your system&amp;rsquo;s disk, and sets the path for it inside the container&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker.io/searxng/searxng:latest&lt;/code&gt;: Is the container to pull and run&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After running the container, you should be able to access SearXNG at &lt;code&gt;http://localhost:8888/&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Searching ‘What is SearXNG?’ on SearXNG running locally" class="gallery-image" data-flex-basis="520px" data-flex-grow="216" height="618" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://www.ashtonmurphyblog.com/p/searxng-as-an-mcp-server/searxng-search.png" srcset="https://www.ashtonmurphyblog.com/p/searxng-as-an-mcp-server/searxng-search_hu_da04f6b785fcdde.png 800w, https://www.ashtonmurphyblog.com/p/searxng-as-an-mcp-server/searxng-search.png 1341w" width="1341"&gt;&lt;/p&gt;
&lt;p&gt;You can also right click on the address bar to add this address as an option for default search engines in your browser:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Adding SearXNG as a default search engine option" class="gallery-image" data-flex-basis="469px" data-flex-grow="195" height="367" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://www.ashtonmurphyblog.com/p/searxng-as-an-mcp-server/searxng-as-default-engine.png" width="718"&gt;&lt;/p&gt;
&lt;p&gt;If you need more information, &lt;a class="link" href="https://docs.searxng.org/admin/installation-docker.html" target="_blank" rel="noopener"
 &gt;here&lt;/a&gt; is the documentation for SearXNG on docker container setup, which is the recommended way of installing and using SearXNG.&lt;/p&gt;
&lt;p&gt;Once SearXNG is running, you can access Preferences in the top right, or configure the settings.yml file in your config directory.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="configuring-searxng-installing-lm-studio-and-setting-up-mcp-server"&gt;Configuring SearXNG, Installing LM Studio, and Setting Up MCP Server
&lt;/h2&gt;&lt;p&gt;Before we install LM Studio, we need to configure SearXNG in order for AI agents to be able to parse the information. Currently, SearXNG only returns results in HTML, but we can configure it to also return JSON which AI agents can easily parse.&lt;/p&gt;
&lt;p&gt;If you navigate to your config directory that we created previously, there should be a &lt;code&gt;settings.yml&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;Under the search section early in the file, you should see:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;formats&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;html&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&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;You can update this to be:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yml" data-lang="yml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;formats&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;html&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&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;And now SearXNG returns json. You can stop your current container, and restart it, for the changes to take effect. You can also use other formats like csv and rss, so you can get really creative with how you use this metasearch engine.&lt;/p&gt;
&lt;p&gt;Moving on, ensure you have installed &lt;a class="link" href="https://lmstudio.ai/download" target="_blank" rel="noopener"
 &gt;LM Studio&lt;/a&gt;. You can either, install the LM Studio Desktop app like I did which bundles the lms server, or install llmster which will install LMS without the GUI if you prefer to use LMS only in other applications. For this post, I am using the GUI Desktop App.&lt;/p&gt;
&lt;p&gt;I also recommend install LM Studio via your system&amp;rsquo;s package manager if it is available, so you can easily receive updates. I&amp;rsquo;m on Arch and it was available in the AUR under the &lt;a class="link" href="https://aur.archlinux.org/packages/lmstudio-bin" target="_blank" rel="noopener"
 &gt;lmstudio-bin&lt;/a&gt; package.&lt;/p&gt;
&lt;p&gt;Load up LM Studio and go through its first time setup process and enable developer settings. You can also enable developer settings in the settings menu which will give you access to to the developer menu:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Button for Developer Menu that should be visible" class="gallery-image" data-flex-basis="476px" data-flex-grow="198" height="386" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://www.ashtonmurphyblog.com/p/searxng-as-an-mcp-server/lmstudio-dev-menu-button.png" width="766"&gt;&lt;/p&gt;
&lt;p&gt;Navigate to the developer menu, and in the Local Server tab (which should be the default one that appears) click on &lt;code&gt;mcp.json&lt;/code&gt; to adjust the json configuration file for MCP servers.&lt;/p&gt;
&lt;p&gt;Update your configuration like so:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&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="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;mcpServers&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;searxng&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;command&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;npx&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;args&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;-y&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;mcp-searxng&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;env&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;SEARXNG_URL&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;http://localhost:8888&amp;#34;&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;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;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This will now be available to use in chats in LM Studio with local models. You can pin this integration by clicking the integrations button and the sub menu for the new SearXNG integration:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Pinning SearXNG Integration for easy access" class="gallery-image" data-flex-basis="493px" data-flex-grow="205" height="327" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://www.ashtonmurphyblog.com/p/searxng-as-an-mcp-server/pinning-integration.png" width="672"&gt;&lt;/p&gt;
&lt;p&gt;With this you can download a very small model, such as &lt;code&gt;Qwen3 1.7B&lt;/code&gt; or smaller and it can function as a great search engine to get surface level information on topics:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Prompting Qwen3 1.7B ‘What is SearXNG?’" class="gallery-image" data-flex-basis="488px" data-flex-grow="203" height="545" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://www.ashtonmurphyblog.com/p/searxng-as-an-mcp-server/lmstudio-prompt.png" srcset="https://www.ashtonmurphyblog.com/p/searxng-as-an-mcp-server/lmstudio-prompt_hu_97643cc15e1460a2.png 800w, https://www.ashtonmurphyblog.com/p/searxng-as-an-mcp-server/lmstudio-prompt.png 1109w" width="1109"&gt;&lt;/p&gt;
&lt;p&gt;However, always ensure the AI isn&amp;rsquo;t &lt;strong&gt;&lt;em&gt;&lt;em&gt;hallucinating&lt;/em&gt;&lt;/em&gt;&lt;/strong&gt; as that is can be &lt;strong&gt;very common&lt;/strong&gt; for &lt;em&gt;&amp;ldquo;do it all&amp;rdquo;&lt;/em&gt; models that many people use.&lt;/p&gt;
&lt;p&gt;Couple this also with the fact that a lot of content on the internet now is being AI generated and itself may be inaccurate, so even if you check the sources, and it looks fine, it still may not be accurate. In short terms, take AI generated information &lt;strong&gt;with a grain of salt&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="zed-editor-with-lm-studio-and-searxng-mcp-server"&gt;Zed Editor with LM Studio and SearXNG MCP Server
&lt;/h2&gt;&lt;p&gt;Before we setup Zed, you can start the LM Studio server by either, clicking on the LM Studio icon in your system tray and clicking start server, or running &lt;code&gt;lms server start&lt;/code&gt; if you had LM Studio automatically configure your path to include &lt;code&gt;lms&lt;/code&gt;. Starting the server allows other applications, like the Zed Editor, to access models LM Studio manages.&lt;/p&gt;
&lt;p&gt;You can install the Zed Editor through your package manager or directly &lt;a class="link" href="https://zed.dev/download" target="_blank" rel="noopener"
 &gt;here&lt;/a&gt;. Once you have it installed, if the Zed Editor has not automatically detected LM Studio, you can click on the three dots menu &lt;strong&gt;in the right dock&lt;/strong&gt; that is for AI and then click on settings:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Zed Editor Agent Settings Menu" class="gallery-image" data-flex-basis="462px" data-flex-grow="192" height="294" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://www.ashtonmurphyblog.com/p/searxng-as-an-mcp-server/zed-editor-menu-button.png" width="567"&gt;&lt;/p&gt;
&lt;p&gt;From here, you can select LM Studio from the list and click on connect to connect if it hasn&amp;rsquo;t automatically. Make sure you are running the LM Studio server for this to work.&lt;/p&gt;
&lt;p&gt;From this same menu, you can click on &lt;code&gt;Add Server&lt;/code&gt; under Model Context Protocol Servers. We need to add SearXNG as a MCP Server for Zed specifically has running agents through this editior, even from another provider, will use their own MCP Servers. We will use the same configuration as before so you can paste the configuration below:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&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="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;/// The name of your MCP server
&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;searxng&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="c1"&gt;/// The command which runs the MCP server
&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;command&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;npx&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="c1"&gt;/// The arguments to pass to the MCP server
&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;args&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;-y&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;mcp-searxng&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="c1"&gt;/// The environment variables to set
&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;env&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;SEARXNG_URL&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;http://localhost:8888&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="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;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;And congratulations, you now have set up SearXNG as a metasearch engine locally, set up MCP Servers on both LM Studio for chats, and in the Zed Editor for coding questions and code generation. You can select a higher parameter model, such as &lt;code&gt;gpt-oss-20b&lt;/code&gt;, if your machine can handle it and with our MCP Server with SearXNG, it can perform better for analyzing and generating code. And likewise, my cautions with AI generated content with LM Studio prompts apply here as well, so keep that in mind.&lt;/p&gt;
&lt;p&gt;Regardless though, Happy Coding!&lt;/p&gt;</description></item></channel></rss>