<?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: Jincheng (James) Zhang</title>
    <description>The latest articles on DEV Community by Jincheng (James) Zhang (@zhjch05).</description>
    <link>https://dev.to/zhjch05</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%2F3399888%2F6baa037a-3f4c-4be5-8c93-4b72a26b901f.jpeg</url>
      <title>DEV Community: Jincheng (James) Zhang</title>
      <link>https://dev.to/zhjch05</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zhjch05"/>
    <language>en</language>
    <item>
      <title>Use MetaMCP to manage tools for Open WebUI</title>
      <dc:creator>Jincheng (James) Zhang</dc:creator>
      <pubDate>Wed, 30 Jul 2025 11:17:21 +0000</pubDate>
      <link>https://dev.to/zhjch05/use-metamcp-to-manage-tools-for-open-webui-42g</link>
      <guid>https://dev.to/zhjch05/use-metamcp-to-manage-tools-for-open-webui-42g</guid>
      <description>&lt;p&gt;To clone and self-host MetaMCP checkout: &lt;a href="https://github.com/metatool-ai/metamcp" rel="noopener noreferrer"&gt;https://github.com/metatool-ai/metamcp&lt;/a&gt;&lt;br&gt;
(MCP Aggregator, Orchestrator, Middleware, Gateway in one docker)&lt;/p&gt;

&lt;p&gt;There is also a doc version of this post: &lt;a href="https://docs.metamcp.com/en/integrations/open-web-ui" rel="noopener noreferrer"&gt;https://docs.metamcp.com/en/integrations/open-web-ui&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This guide will show you how to use MetaMCP to host MCPO like openapi.json endpoints of your managed MCPs so you can integrate it as tools in Open WebUI.&lt;/p&gt;
&lt;h2&gt;
  
  
  🎯 What You'll Learn
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;How to deploy and configure MetaMCP&lt;/li&gt;
&lt;li&gt;Setting up MCP servers and namespaces&lt;/li&gt;
&lt;li&gt;Creating OpenAPI endpoints for Open WebUI&lt;/li&gt;
&lt;li&gt;Configuring authentication and API keys&lt;/li&gt;
&lt;li&gt;Troubleshooting common issues&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  📋 Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before starting, ensure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker and Docker Compose installed&lt;/li&gt;
&lt;li&gt;Open WebUI running (locally or deployed)&lt;/li&gt;
&lt;li&gt;MetaMCP deployed with a properly configured &lt;code&gt;APP_URL&lt;/code&gt; (default: &lt;code&gt;http://localhost:12008&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  🚀 Step 1: Deploy MetaMCP with Proper Configuration
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Clone and Setup MetaMCP
&lt;/h3&gt;

&lt;p&gt;If you haven't already, clone MetaMCP and set it up:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/metatool-ai/metamcp.git
&lt;span class="nb"&gt;cd &lt;/span&gt;metamcp
&lt;span class="nb"&gt;cp &lt;/span&gt;example.env .env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Configure APP_URL for Open WebUI Access
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Critical&lt;/strong&gt;: Configure your &lt;code&gt;APP_URL&lt;/code&gt; properly in the &lt;code&gt;.env&lt;/code&gt; file for Open WebUI integration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# For local Open WebUI accessing local MetaMCP&lt;/span&gt;
&lt;span class="nv"&gt;APP_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:12008

&lt;span class="c"&gt;# For deployed Open WebUI accessing deployed MetaMCP&lt;/span&gt;
&lt;span class="nv"&gt;APP_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://your-metamcp-domain.com

&lt;span class="c"&gt;# For local Open WebUI accessing deployed MetaMCP&lt;/span&gt;
&lt;span class="nv"&gt;APP_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://your-metamcp-domain.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Important&lt;/strong&gt;: Open WebUI must be able to reach your MetaMCP instance at the configured &lt;code&gt;APP_URL&lt;/code&gt;. Ensure firewall rules and network configuration allow this access.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Also configure other production settings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;POSTGRES_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_secure_password
&lt;span class="nv"&gt;BETTER_AUTH_SECRET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_auth_secret  &lt;span class="c"&gt;# Generate with: openssl rand -hex 32 | base64&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Start MetaMCP
&lt;/h3&gt;

&lt;p&gt;Launch MetaMCP using Docker Compose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify it's running by visiting your configured &lt;code&gt;APP_URL&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔧 Step 2: Configure MetaMCP for Open WebUI
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Create MetaMCP Account
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open your browser and go to your &lt;code&gt;APP_URL&lt;/code&gt; (e.g., &lt;code&gt;http://localhost:12008&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create an account&lt;/strong&gt; or log in&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;(Recommended)&lt;/strong&gt; Disable new user registration in &lt;strong&gt;Settings&lt;/strong&gt; for security&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Add MCP Servers
&lt;/h3&gt;

&lt;p&gt;Add the MCP servers you want to expose to Open WebUI:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;MCP Servers&lt;/strong&gt; in the sidebar&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;"Add Server"&lt;/strong&gt; button&lt;/li&gt;
&lt;li&gt;Configure your server (example with filesystem server):&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Basic Information:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: &lt;code&gt;hacker-news-server&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: &lt;code&gt;Hacker News integration for fetching stories and comments&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: &lt;code&gt;STDIO&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Server Configuration:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Command&lt;/strong&gt;: &lt;code&gt;uvx&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arguments&lt;/strong&gt;: &lt;code&gt;mcp-hn&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment Variables&lt;/strong&gt;: (if needed)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ownership:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose &lt;strong&gt;"Everyone (Public)"&lt;/strong&gt; for Open WebUI access&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;"Create Server"&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Tip&lt;/strong&gt;: Repeat this process for all MCP servers you want to make available to Open WebUI.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Create a Namespace
&lt;/h3&gt;

&lt;p&gt;Group your MCP servers into a namespace for Open WebUI:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Namespaces&lt;/strong&gt; in the sidebar&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;"Create Namespace"&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Configure the namespace:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Basic Information:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: &lt;code&gt;openwebui-tools&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: &lt;code&gt;Aggregated tools for Open WebUI integration&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ownership:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose &lt;strong&gt;"Everyone (Public)"&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Select MCP Servers:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check all servers you want to include&lt;/li&gt;
&lt;li&gt;These will be aggregated into one endpoint&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;"Create Namespace"&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Manage Tools (Optional)
&lt;/h3&gt;

&lt;p&gt;Fine-tune which tools are available:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on your &lt;strong&gt;"openwebui-tools"&lt;/strong&gt; namespace&lt;/li&gt;
&lt;li&gt;Review the &lt;strong&gt;Tools Management&lt;/strong&gt; section&lt;/li&gt;
&lt;li&gt;Disable any tools you don't want Open WebUI to access&lt;/li&gt;
&lt;li&gt;This helps keep the tool set focused and secure&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🔗 Step 3: Create OpenAPI Endpoint
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Create Public Endpoint
&lt;/h3&gt;

&lt;p&gt;Create an endpoint that Open WebUI can consume:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Endpoints&lt;/strong&gt; in the sidebar&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;"Create Endpoint"&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Configure the endpoint:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Basic Information:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: &lt;code&gt;openwebui-api&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: &lt;code&gt;OpenAPI endpoint for Open WebUI integration&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ownership:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose &lt;strong&gt;"Everyone (Public)"&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Namespace Selection:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select your &lt;strong&gt;"openwebui-tools"&lt;/strong&gt; namespace&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;API Key Authentication:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enable API Key Authentication&lt;/strong&gt;: Toggle ON&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Query Parameter Authentication&lt;/strong&gt;: Toggle OFF (Open WebUI supports Bearer tokens)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;MCP Server Creation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check &lt;strong&gt;"Automatically create an MCP server for this endpoint"&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;"Create Endpoint"&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Your OpenAPI endpoint will be available at:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenAPI UI: &lt;code&gt;{APP_URL}/metamcp/openwebui-api/api&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;OpenAPI Schema: &lt;code&gt;{APP_URL}/metamcp/openwebui-api/api/openapi.json&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔑 Step 4: Generate API Key
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Tip&lt;/strong&gt;: In the last step, if you select &lt;strong&gt;"Automatically create an MCP server for this endpoint"&lt;/strong&gt; option, then at least one API key will be automatically generated for you. Feel free to use it instead of creating a new one.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Create API Key for Open WebUI
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;API Keys&lt;/strong&gt; in the sidebar&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;"Generate Key"&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Configure the API key:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Key Information:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: &lt;code&gt;Open WebUI Integration Key&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope&lt;/strong&gt;: &lt;strong&gt;Public&lt;/strong&gt; (so Open WebUI can use it)&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;"Generate Key"&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Important&lt;/strong&gt;: Copy the generated key (starts with &lt;code&gt;sk_mt_&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Warning&lt;/strong&gt;: Save this key securely - it's only shown once and will be needed for Open WebUI configuration.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  🎨 Step 5: Configure Open WebUI
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 5.1: Open Web UI
&lt;/h3&gt;

&lt;p&gt;Open your Open Web UI page. Find settings.&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%2Fpfda6bis2zjrndijbui3.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%2Fpfda6bis2zjrndijbui3.png" alt="OpenWebUI Screenshot 1" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5.2: Settings &amp;gt; Tools
&lt;/h3&gt;

&lt;p&gt;In Settings pop up. Go to "Tools".&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%2Fukysva87t8rp5hm0ew8e.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%2Fukysva87t8rp5hm0ew8e.png" alt="OpenWebUI Screenshot 2" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5.3: Settings &amp;gt; Tools &amp;gt; Add connection
&lt;/h3&gt;

&lt;p&gt;Under &lt;strong&gt;"Manage Tool Servers"&lt;/strong&gt; on top right corner click on the &lt;strong&gt;"+"&lt;/strong&gt; button to add a connection.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;URL &amp;gt; Base URL&lt;/strong&gt; enter &lt;code&gt;{APP_URL}/metamcp/openwebui-api/api&lt;/code&gt;. For example if &lt;code&gt;APP_URL&lt;/code&gt; is &lt;code&gt;http://localhost:12008&lt;/code&gt; then enter &lt;code&gt;http://localhost:12008/metamcp/openwebui-api/api&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;URL &amp;gt; openapi.json Path&lt;/strong&gt; enter &lt;code&gt;{APP_URL}/metamcp/openwebui-api/api/openapi.json&lt;/code&gt;. For example if &lt;code&gt;APP_URL&lt;/code&gt; is &lt;code&gt;http://localhost:12008&lt;/code&gt; then enter &lt;code&gt;http://localhost:12008/metamcp/openwebui-api/api/openapi.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Put the &lt;strong&gt;"API Key"&lt;/strong&gt; generated in previous steps to &lt;strong&gt;"Auth Bearer"&lt;/strong&gt; field.&lt;/p&gt;

&lt;p&gt;Use the "refresh" button to test connection.&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%2Fz74rz6xf0bilzhj4zge7.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%2Fz74rz6xf0bilzhj4zge7.png" alt="OpenWebUI Screenshot 3" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5.4: Back to chat and verify the listed tools
&lt;/h3&gt;

&lt;p&gt;Close any pop ups. In home page click new chat. Then inspect the available tools.&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%2Fdormkqdi05dzdw0vyjg3.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%2Fdormkqdi05dzdw0vyjg3.png" alt="OpenWebUI Screenshot 4" width="800" height="504"&gt;&lt;/a&gt;&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%2Fiz4ca53872d7w0fq6ajo.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%2Fiz4ca53872d7w0fq6ajo.png" alt="OpenWebUI Screenshot 5" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5.5: Chat with tool calling
&lt;/h3&gt;

&lt;p&gt;In new chat, a query of "show top hacker news" would look like:&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%2Fnm0935kixvhy03rjmqgn.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%2Fnm0935kixvhy03rjmqgn.png" alt="OpenWebUI Screenshot 6" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Tip&lt;/strong&gt;: Then in new chats, with a model that supports tool calling, should automatically try to call tools if necessary.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  🔧 Troubleshooting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Common Issues
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Connection Errors:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verify &lt;code&gt;APP_URL&lt;/code&gt; is accessible from Open WebUI&lt;/li&gt;
&lt;li&gt;Check firewall and network configuration&lt;/li&gt;
&lt;li&gt;Ensure API key is correctly configured. Turn off Auth to test if it works first.&lt;/li&gt;
&lt;li&gt;With Auth off, you can manually visit e.g., &lt;code&gt;http://localhost:12008/metamcp/openwebui-api/api/openapi.json&lt;/code&gt; to verify the &lt;code&gt;openapi.json&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Authentication Issues:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verify API key format (should start with &lt;code&gt;sk_mt_&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Ensure Bearer token authentication is properly configured in Open WebUI&lt;/li&gt;
&lt;li&gt;Verify Authorization header format: &lt;code&gt;Bearer {your_api_key}&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tool Execution Failures:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check MCP server status in MetaMCP dashboard&lt;/li&gt;
&lt;li&gt;Review tool permissions in namespace settings&lt;/li&gt;
&lt;li&gt;Monitor logs for specific error messages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CORS Errors:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ensure Open WebUI domain is allowed&lt;/li&gt;
&lt;li&gt;Check MetaMCP CORS configuration&lt;/li&gt;
&lt;li&gt;Verify APP_URL matches access URL&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Need Help?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Check &lt;a href="https://github.com/metatool-ai/metamcp/issues" rel="noopener noreferrer"&gt;MetaMCP GitHub Issues&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Join our &lt;a href="https://discord.gg/mNsyat7mFX" rel="noopener noreferrer"&gt;Discord community&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Review Open WebUI documentation if necessary&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎉 Conclusion
&lt;/h2&gt;

&lt;p&gt;You've successfully integrated MetaMCP with Open WebUI! This setup provides you with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Centralized tool management through MetaMCP&lt;/li&gt;
&lt;li&gt;Enhanced AI capabilities in Open WebUI&lt;/li&gt;
&lt;li&gt;Secure API key authentication&lt;/li&gt;
&lt;li&gt;Scalable architecture for adding more tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The integration allows you to leverage the power of various MCP servers while maintaining a clean, organized tool management system. Whether you're using local or deployed instances, this setup provides a robust foundation for AI-powered workflows.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/metatool-ai/metamcp" rel="noopener noreferrer"&gt;MetaMCP GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.metamcp.com/en/integrations/open-web-ui#clone-and-setup-metamcp" rel="noopener noreferrer"&gt;MetaMCP &amp;gt; Open WebUI Integration Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Let's rock! 🚀&lt;/em&gt; &lt;/p&gt;

</description>
      <category>mcp</category>
      <category>openwebui</category>
      <category>tutorial</category>
      <category>chatgpt</category>
    </item>
  </channel>
</rss>
