{"id":11097,"date":"2025-10-26T20:54:10","date_gmt":"2025-10-26T19:54:10","guid":{"rendered":"http:\/\/rainbowbreeze.it\/?p=11097"},"modified":"2025-10-26T21:55:47","modified_gmt":"2025-10-26T20:55:47","slug":"openwebui-mcpo-for-mpc-sdio-sse-http","status":"publish","type":"post","link":"https:\/\/rainbowbreeze.it\/wordpress\/openwebui-mcpo-for-mpc-sdio-sse-http\/","title":{"rendered":"Open WebUI and mcpo to use all kinds of MCP servers"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The integration of the <strong>Model Context Protocol (MCP)<\/strong> servers within Open WebUI significantly extends its functionality, by allowing access to external capabilities. Open WebUI both leverage native support for MCP server offering the HTTP streamable format, and usage of the <strong><a href=\"https:\/\/github.com\/open-webui\/mcpo\">mcpo (MCP-to-OpenAPI proxy server)<\/a><\/strong> for broader compatibility.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This article explains how to configure <a href=\"https:\/\/github.com\/open-webui\/mcpo\">MPCO<\/a> to leverage all kinds of MCP servers: local via sdio, or remote via SSE (Server-Sent Events), or Streamable HTTP. While <a href=\"\/openwebui-mcp-http\/\">this other article<\/a> explains native support of HTTP streamable MCP servers in Open WebUI (<em>added at the end of Sept 2025<\/em>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What is MCP?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>MCP<\/strong> is an open standard that functions as a universal communication bridge, connecting LLMs to external tools and data sources. This protocol enables AI assistants to access real-time information and perform tasks on a variety of different areas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MCP servers communicate with clients (the LLMs) using three primary channels: <code><strong>stdio<\/strong><\/code> (standard input\/output), <strong>SSE<\/strong> (Server-Sent Events), or <strong>Streamable HTTP<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Because of the core architecture of Open WebUI, which is a web-based, multi-tenant environment, not a local desktop process, and because long-lived stdio or SSE connections are difficult to maintain securely across users and sessions, Open WebUI team decided to create <a href=\"https:\/\/github.com\/open-webui\/mcpo\"><\/a><strong><a href=\"https:\/\/github.com\/open-webui\/mcpo\">mcpo (MCP-to-OpenAPI proxy server)<\/a><\/strong> &#8211; an open-source proxy that translates stdio, SSE-based or streamable HTTP MCP servers into OpenAPI-compatible endpoints.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In addition, mcpo automatically discovers MCP tools dynamically, generates REST endpoints, and creates interactive, human-readable OpenAPI documentation accessible at <code>http:\/\/localhost:8000\/docs<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Configure a mcpo server<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">mcpo can run MCP servers written as npm packages via <a href=\"https:\/\/docs.npmjs.com\/cli\/v8\/commands\/npx\">npx<\/a>, python packages via <a href=\"https:\/\/pypi.org\/project\/uvx\/\">uvx<\/a>, and can also wrap calls to SSE or Streamable HTTP MCP servers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When launched from the command line, it&#8217;s possible to specify both an MCP server mcpo will run, or a configuration file which defines the MCP servers it will manage, their exposed names, etc. The <a href=\"https:\/\/github.com\/open-webui\/mcpo\">project page<\/a> has a lot examples on how to configure the different servers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This article will use docker compose to launch mcpo, and a configuration file to define the MCP servers to expose. A simple <code>docker-compose.yaml<\/code> file follows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  mcpo:\n    container_name: mcpo\n    image: ghcr.io\/open-webui\/mcpo:main\n    restart: unless-stopped\n    volumes:\n      # Map your local config directory to \/app\/config inside MCPO container\n      - \/Volumes\/Data\/development\/open-webui\/volumes\/mcpo:\/app\/config\n    ports:\n      - 8000:8000\n    # Command to launch MCPO using the mounted config file, with hot-reload enabled\n    command: --config \/app\/config\/config.json --hot-reload<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In this example, the configuration file is created under <code>\/Volumes\/Data\/development\/open-webui\/volumes\/mcpo\/config.json<\/code> on the host running Docker, which maps to <code>\/app\/config\/config.json<\/code> in the command line passed to mcpo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Four MCP servers are exposed via mcpo using the following config file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"mcpServers\": {\n    \"time\": {\n      \"command\": \"uvx\",\n      \"args\": &#91;\"mcp-server-time\", \"--local-timezone=America\/New_York\"]\n    },\n    \"youtube-transcript\": {\n      \"command\": \"uvx\",\n      \"args\": &#91;\n        \"--from\",\n        \"git+https:\/\/github.com\/jkawamoto\/mcp-youtube-transcript\",\n        \"mcp-youtube-transcript\"\n      ]\n    },\n    \"open-meteo\": {\n      \"command\": \"npx\",\n      \"args\": &#91;\"open-meteo-mcp-server\"]\n    }\n    \"coingecko\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https:\/\/mcp.api.coingecko.com\/mcp\"\n  }\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>time<\/code> is a <a href=\"https:\/\/github.com\/modelcontextprotocol\/servers\/tree\/main\/src\/time\">MCP server offering time information<\/a>, created using a python package<\/li>\n\n\n\n<li><code>youtube-transcript<\/code> is another python <a href=\"https:\/\/github.com\/jkawamoto\/mcp-youtube-transcript\">MCP server to transcribe YouTube videos<\/a>, created directly from its github repo.<\/li>\n\n\n\n<li><code>open-meteo<\/code> is a nodejs <a href=\"https:\/\/github.com\/cmer81\/open-meteo-mcp\">MCP server offering weather forecasts<\/a> via Open-Meteo APIs.<\/li>\n\n\n\n<li><code>coingecko<\/code> is the same <a href=\"https:\/\/docs.coingecko.com\/docs\/mcp-server\">CoinGecko streamable HTTP MCP server<\/a> used in <a href=\"\/openwebui-mcp-http\/\">the other article<\/a> about MCP and Open WebUI, this time exposed via mcpo.\n<ul class=\"wp-block-list\">\n<li>When possible, I prefer to use native support to MCP servers directly, to avoid wrapping calls into another service.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Easy to spot, the configurations to add to the <code>config.json<\/code> file uses the same format of Gemini CLI, Claude, Visual Studio, or other MCP server clients.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once changed the configuration, it&#8217;s possible to check if they&#8217;re correct looking at the mcpo container logs, using <code>docker logs -f mcpo<\/code> command. For example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>2025-10-26 15:12:07,498 - INFO - Config file modified: \/app\/config\/config.json\n2025-10-26 15:12:08,011 - INFO - Adding servers: &#91;'coingecko_mcp_streamable_http']\n2025-10-26 15:12:10,158 - INFO - HTTP Request: POST https:\/\/mcp.api.coingecko.com\/mcp \"HTTP\/1.1 200 OK\"\n2025-10-26 15:12:10,159 - INFO - Received session ID: 7a3c7019bf4ec1aaa7b213d017cd968ca1c609ee6bb5612622a0d4ad41b8579d\n2025-10-26 15:12:10,162 - INFO - Negotiated protocol version: 2025-06-18\n2025-10-26 15:12:10,736 - INFO - HTTP Request: POST https:\/\/mcp.api.coingecko.com\/mcp \"HTTP\/1.1 202 Accepted\"\n2025-10-26 15:12:10,806 - INFO - HTTP Request: GET https:\/\/mcp.api.coingecko.com\/mcp \"HTTP\/1.1 404 Not Found\"\n2025-10-26 15:12:11,204 - INFO - HTTP Request: POST https:\/\/mcp.api.coingecko.com\/mcp \"HTTP\/1.1 200 OK\"\n2025-10-26 15:12:12,038 - INFO - Successfully connected to new server: 'coingecko'\n2025-10-26 15:12:12,038 - INFO - Config reload completed successfully<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Otherwise, an <code>ERROR<\/code> log instance will be present.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The list of the MCP servers exposed, and their docs (what the LLM sees) can be browsed at <code>http:\/\/localhost:8000\/docs<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Connect to mcpo in Open WebUI<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">There are two ways to connect to mcpo in Open WebUI: via a <strong>User Tool Server<\/strong> in the User Settings, and via a <strong>Global Tool Server<\/strong> in the Admin Settings.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>User Tool Servers<\/strong> utilize the client-side (your browser) to make the connection.\n<ul class=\"wp-block-list\">\n<li>Ideal for accessing highly specific, local, or private development endpoints on your machine, as the resource exposure is isolated only to your session.<\/li>\n\n\n\n<li>It would be possible to launch an mcpo server instance on the local machine and connect to it, while having Open WebUI running on another, remote, server, which was not configured to use the MCP, and for which the user has no admin privileges.<\/li>\n\n\n\n<li>For example, a filesystem MCP can access files accessible only from the local machine where mcpo runs, while the Open WebUI server doesn&#8217;t have access to them.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Global Tool Servers<\/strong> utilize the server-side (Open WebUI&#8217;s backend) to make the connection.\n<ul class=\"wp-block-list\">\n<li>This means the tool must be reachable from the server environment, typically using internal Docker network names or the host alias (<code>host.docker.internal<\/code>). It&#8217;s also possible to access to a mcpo running on another server \/ remotely, and reachable by the Open WebUI host machines.<\/li>\n\n\n\n<li>For example, a fileserver MCP can access files present on the server, and not accessible to the user.<\/li>\n\n\n\n<li>It would be possible to configure authentication credential shared among all the Open WebUI users, like the same Bearer token or sessions.<\/li>\n\n\n\n<li>Once configured on the Open WebUI server, the MCP could be made available to all the users. <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, distinctions from these two options fade away if both Open WebUI and mcpo are launched on the same local machine, used to connect to Open WebUI. But it&#8217;s important to keep this distinction in mind.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each server exposed by mcpo has to be configured separately.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For configuring <strong>Global Tool Servers<\/strong>, using the time server as example:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Navigate to <strong>Admin Panel<\/strong> -&gt; <strong>Settings<\/strong> -&gt; <strong>External Tools<\/strong>.<\/li>\n\n\n\n<li>Click &#8220;<strong>+<\/strong>&#8220;<em> (Add Connection)<\/em>.<\/li>\n\n\n\n<li>Set the <strong>Type<\/strong> to <strong>OpenAPI<\/strong>.<\/li>\n\n\n\n<li>Set the <strong>URL<\/strong> to <code>http:\/\/host.docker.internal:8000\/time<\/code>\n<ul class=\"wp-block-list\">\n<li>If Open WebUI and mcpo are in the same docker network,  <code>http:\/\/mcpo:8000\/time<\/code> can be used, assuming the mcpo image has the name <code>mcpo<\/code>, like in the docker compose file used above. <\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Set <strong>OpenAPI Spec<\/strong> to <strong>URL<\/strong>, and <strong>openapi.json<\/strong>.<\/li>\n\n\n\n<li>Set <strong>Auth<\/strong> to <strong>None<\/strong>.<\/li>\n\n\n\n<li>Set <strong>ID<\/strong> to <code>time_mcp_mcpo<\/code>.\n<ul class=\"wp-block-list\">\n<li>This is the string used in the logs to identity the MCP tool call.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Set <strong>Name<\/strong> to <code>Time MCP via mcpo<\/code>.\n<ul class=\"wp-block-list\">\n<li>This is the string used in the UI to configure the available tools and MCP servers for the model (see below).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Set <strong>Description<\/strong> to <code>Get the current time and date<\/code><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">For configuring <strong>User Tools Servers<\/strong>, instead:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Navigate to <strong>Settings<\/strong> -&gt; <strong>External Tools<\/strong>.<\/li>\n\n\n\n<li>Click &#8220;<strong>+<\/strong>&#8220;<em> (Add Connection)<\/em>.<\/li>\n\n\n\n<li>Set the <strong>URL<\/strong> to <code>http:\/\/localhost:8000\/time<\/code>\n<ul class=\"wp-block-list\">\n<li><code>localhost<\/code> because the mcpo server is accessible from the browser user session using <code>localhost<\/code>, or <code>127.0.0.1<\/code> address. <\/li>\n\n\n\n<li><code>http:\/\/host.docker.internal:8000\/time<\/code> or <code><code>http:\/\/mcpo:8000\/time<\/code><\/code> won&#8217;t work, as they refer to docker-network specific addresses, which are not available in the browser user session of the local machine   <\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Set <strong>OpenAPI Spec<\/strong> to <strong>URL<\/strong>, and <strong>openapi.json<\/strong>.<\/li>\n\n\n\n<li>Set <strong>Auth<\/strong> to <strong>None<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">The time MCP server is now available inside Open WebUI, with two different names:  <code>Time MCP via mcpo<\/code> if configured as Global Tool Server, or <code>mcp-time<\/code> if configured as User Tool Server. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Create an agent which uses MCP<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To be sure the MCP call is considered, and then executed, by the LLM, ensure the model <a href=\"https:\/\/ollama.com\/search?c=tools\">has tools support<\/a>, and that <strong>Function Calling<\/strong> parameter set to <strong>Native<\/strong> in the Advanced Params section of the model configuration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here an example to create a specialized agent to return the current time, using the MCP server.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Navigate to <strong>Workspace<\/strong> -&gt; <strong>Models<\/strong> -&gt; <strong>New Model<\/strong>.<\/li>\n\n\n\n<li>Set <strong>Model Name<\/strong> to <code>Qwen3-Assistant<\/code>.<\/li>\n\n\n\n<li>Set <strong>Base Model<\/strong> to <code>qwen3:8b<\/code>.\n<ul class=\"wp-block-list\">\n<li>Or any other model supporting tools calling<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Set <strong>Description<\/strong> to <code>Return the current time<\/code>.<\/li>\n\n\n\n<li>No need to set any <strong>System Prompt<\/strong>.<\/li>\n\n\n\n<li><strong>Advanced Params<\/strong> -&gt; <strong>Show<\/strong>.\n<ul class=\"wp-block-list\">\n<li>Set <strong>Function Calling<\/strong> to <strong>Native<\/strong>.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>In the <strong>Tools<\/strong>, check <strong>Time MCP via mcpo<\/strong> or <strong>mcp-time<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Save and start chatting with the agent, for example asking <code>What's the current time?<\/code>. Here what the result could be, where the result of the time MCP is expanded for additional clarity:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"878\" src=\"https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2025\/10\/image-1024x878.png\" alt=\"Open WebUI chat window\" class=\"wp-image-11110\" srcset=\"https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2025\/10\/image-1024x878.png 1024w, https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2025\/10\/image-300x257.png 300w, https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2025\/10\/image-200x171.png 200w, https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2025\/10\/image-768x658.png 768w, https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2025\/10\/image-1100x943.png 1100w, https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2025\/10\/image.png 1290w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Example of an Open WebUI agent using a local MCP time server exposed via mcpo<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The integration of the Model Context Protocol (MCP) servers within Open WebUI significantly extends its functionality, by allowing access to external capabilities. Open WebUI both leverage native support for MCP server offering the HTTP streamable format, and usage of the mcpo (MCP-to-OpenAPI proxy server) for broader compatibility. This article explains how to configure MPCO to &hellip; <a href=\"https:\/\/rainbowbreeze.it\/wordpress\/openwebui-mcpo-for-mpc-sdio-sse-http\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Open WebUI and mcpo to use all kinds of MCP servers<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":""},"categories":[3],"tags":[896,907,906],"class_list":["post-11097","post","type-post","status-publish","format-standard","hentry","category-tech","tag-llm","tag-mcp","tag-openwebui"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Open WebUI and mcpo to use all kinds of MCP servers - Rainbowbreeze<\/title>\n<meta name=\"description\" content=\"Configure Open WebUI to use mcpo, a MCP-to-OpenAPI proxy server, to access stdio, SSE and HTTP streamable MCP servers\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Open WebUI and mcpo to use all kinds of MCP servers - Rainbowbreeze\" \/>\n<meta property=\"og:description\" content=\"Configure Open WebUI to use mcpo, a MCP-to-OpenAPI proxy server, to access stdio, SSE and HTTP streamable MCP servers\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/\" \/>\n<meta property=\"og:site_name\" content=\"Rainbowbreeze\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-26T19:54:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-26T20:55:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2025\/10\/image-1024x878.png\" \/>\n<meta name=\"author\" content=\"Alfredo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rainbowbreeze\" \/>\n<meta name=\"twitter:site\" content=\"@rainbowbreeze\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alfredo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/openwebui-mcpo-for-mpc-sdio-sse-http\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/openwebui-mcpo-for-mpc-sdio-sse-http\\\/\"},\"author\":{\"name\":\"Alfredo\",\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/#\\\/schema\\\/person\\\/00e63c64a3939938a7467e3aaf54f4cf\"},\"headline\":\"Open WebUI and mcpo to use all kinds of MCP servers\",\"datePublished\":\"2025-10-26T19:54:10+00:00\",\"dateModified\":\"2025-10-26T20:55:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/openwebui-mcpo-for-mpc-sdio-sse-http\\\/\"},\"wordCount\":1217,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/#\\\/schema\\\/person\\\/00e63c64a3939938a7467e3aaf54f4cf\"},\"image\":{\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/openwebui-mcpo-for-mpc-sdio-sse-http\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/rainbowbreeze.it\\\/wordpress\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/image-1024x878.png\",\"keywords\":[\"LLM\",\"MCP\",\"OpenWebUI\"],\"articleSection\":[\"Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rainbowbreeze.it\\\/openwebui-mcpo-for-mpc-sdio-sse-http\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/openwebui-mcpo-for-mpc-sdio-sse-http\\\/\",\"url\":\"https:\\\/\\\/rainbowbreeze.it\\\/openwebui-mcpo-for-mpc-sdio-sse-http\\\/\",\"name\":\"Open WebUI and mcpo to use all kinds of MCP servers - Rainbowbreeze\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/openwebui-mcpo-for-mpc-sdio-sse-http\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/openwebui-mcpo-for-mpc-sdio-sse-http\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/rainbowbreeze.it\\\/wordpress\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/image-1024x878.png\",\"datePublished\":\"2025-10-26T19:54:10+00:00\",\"dateModified\":\"2025-10-26T20:55:47+00:00\",\"description\":\"Configure Open WebUI to use mcpo, a MCP-to-OpenAPI proxy server, to access stdio, SSE and HTTP streamable MCP servers\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/openwebui-mcpo-for-mpc-sdio-sse-http\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rainbowbreeze.it\\\/openwebui-mcpo-for-mpc-sdio-sse-http\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/openwebui-mcpo-for-mpc-sdio-sse-http\\\/#primaryimage\",\"url\":\"https:\\\/\\\/rainbowbreeze.it\\\/wordpress\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/image.png\",\"contentUrl\":\"https:\\\/\\\/rainbowbreeze.it\\\/wordpress\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/image.png\",\"width\":1290,\"height\":1106,\"caption\":\"Example of an Open WebUI agent using a local MCP time server exposed via mcpo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/openwebui-mcpo-for-mpc-sdio-sse-http\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rainbowbreeze.it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Open WebUI and mcpo to use all kinds of MCP servers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/#website\",\"url\":\"https:\\\/\\\/rainbowbreeze.it\\\/\",\"name\":\"Rainbowbreeze\",\"description\":\"Alfredo Morresi&#039;s digital harbor\",\"publisher\":{\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/#\\\/schema\\\/person\\\/00e63c64a3939938a7467e3aaf54f4cf\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rainbowbreeze.it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/#\\\/schema\\\/person\\\/00e63c64a3939938a7467e3aaf54f4cf\",\"name\":\"Alfredo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/wordpress\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/rainbowbreeze_profile_700px.jpg\",\"url\":\"https:\\\/\\\/rainbowbreeze.it\\\/wordpress\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/rainbowbreeze_profile_700px.jpg\",\"contentUrl\":\"https:\\\/\\\/rainbowbreeze.it\\\/wordpress\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/rainbowbreeze_profile_700px.jpg\",\"width\":700,\"height\":700,\"caption\":\"Alfredo\"},\"logo\":{\"@id\":\"https:\\\/\\\/rainbowbreeze.it\\\/wordpress\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/rainbowbreeze_profile_700px.jpg\"},\"description\":\"79ers, Italian, with a passion for creating environments in which great ideas can happen and people feel empowered, thanks to community dynamics and technological innovation. I also love nature, open-source, running on the beach, snowboarding and Tiramisu\u2019\",\"sameAs\":[\"https:\\\/\\\/rainbowbreeze.it\\\/\",\"https:\\\/\\\/www.instagram.com\\\/rainbowbreez3\\\/\",\"https:\\\/\\\/linkedin.com\\\/in\\\/alfredomorresi\",\"https:\\\/\\\/x.com\\\/rainbowbreeze\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Open WebUI and mcpo to use all kinds of MCP servers - Rainbowbreeze","description":"Configure Open WebUI to use mcpo, a MCP-to-OpenAPI proxy server, to access stdio, SSE and HTTP streamable MCP servers","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/","og_locale":"en_US","og_type":"article","og_title":"Open WebUI and mcpo to use all kinds of MCP servers - Rainbowbreeze","og_description":"Configure Open WebUI to use mcpo, a MCP-to-OpenAPI proxy server, to access stdio, SSE and HTTP streamable MCP servers","og_url":"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/","og_site_name":"Rainbowbreeze","article_published_time":"2025-10-26T19:54:10+00:00","article_modified_time":"2025-10-26T20:55:47+00:00","og_image":[{"url":"https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2025\/10\/image-1024x878.png","type":"","width":"","height":""}],"author":"Alfredo","twitter_card":"summary_large_image","twitter_creator":"@rainbowbreeze","twitter_site":"@rainbowbreeze","twitter_misc":{"Written by":"Alfredo","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/#article","isPartOf":{"@id":"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/"},"author":{"name":"Alfredo","@id":"https:\/\/rainbowbreeze.it\/#\/schema\/person\/00e63c64a3939938a7467e3aaf54f4cf"},"headline":"Open WebUI and mcpo to use all kinds of MCP servers","datePublished":"2025-10-26T19:54:10+00:00","dateModified":"2025-10-26T20:55:47+00:00","mainEntityOfPage":{"@id":"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/"},"wordCount":1217,"commentCount":0,"publisher":{"@id":"https:\/\/rainbowbreeze.it\/#\/schema\/person\/00e63c64a3939938a7467e3aaf54f4cf"},"image":{"@id":"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/#primaryimage"},"thumbnailUrl":"https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2025\/10\/image-1024x878.png","keywords":["LLM","MCP","OpenWebUI"],"articleSection":["Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/","url":"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/","name":"Open WebUI and mcpo to use all kinds of MCP servers - Rainbowbreeze","isPartOf":{"@id":"https:\/\/rainbowbreeze.it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/#primaryimage"},"image":{"@id":"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/#primaryimage"},"thumbnailUrl":"https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2025\/10\/image-1024x878.png","datePublished":"2025-10-26T19:54:10+00:00","dateModified":"2025-10-26T20:55:47+00:00","description":"Configure Open WebUI to use mcpo, a MCP-to-OpenAPI proxy server, to access stdio, SSE and HTTP streamable MCP servers","breadcrumb":{"@id":"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/#primaryimage","url":"https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2025\/10\/image.png","contentUrl":"https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2025\/10\/image.png","width":1290,"height":1106,"caption":"Example of an Open WebUI agent using a local MCP time server exposed via mcpo"},{"@type":"BreadcrumbList","@id":"https:\/\/rainbowbreeze.it\/openwebui-mcpo-for-mpc-sdio-sse-http\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rainbowbreeze.it\/"},{"@type":"ListItem","position":2,"name":"Open WebUI and mcpo to use all kinds of MCP servers"}]},{"@type":"WebSite","@id":"https:\/\/rainbowbreeze.it\/#website","url":"https:\/\/rainbowbreeze.it\/","name":"Rainbowbreeze","description":"Alfredo Morresi&#039;s digital harbor","publisher":{"@id":"https:\/\/rainbowbreeze.it\/#\/schema\/person\/00e63c64a3939938a7467e3aaf54f4cf"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rainbowbreeze.it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/rainbowbreeze.it\/#\/schema\/person\/00e63c64a3939938a7467e3aaf54f4cf","name":"Alfredo","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2021\/03\/rainbowbreeze_profile_700px.jpg","url":"https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2021\/03\/rainbowbreeze_profile_700px.jpg","contentUrl":"https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2021\/03\/rainbowbreeze_profile_700px.jpg","width":700,"height":700,"caption":"Alfredo"},"logo":{"@id":"https:\/\/rainbowbreeze.it\/wordpress\/wp-content\/uploads\/2021\/03\/rainbowbreeze_profile_700px.jpg"},"description":"79ers, Italian, with a passion for creating environments in which great ideas can happen and people feel empowered, thanks to community dynamics and technological innovation. I also love nature, open-source, running on the beach, snowboarding and Tiramisu\u2019","sameAs":["https:\/\/rainbowbreeze.it\/","https:\/\/www.instagram.com\/rainbowbreez3\/","https:\/\/linkedin.com\/in\/alfredomorresi","https:\/\/x.com\/rainbowbreeze"]}]}},"_links":{"self":[{"href":"https:\/\/rainbowbreeze.it\/wordpress\/wp-json\/wp\/v2\/posts\/11097","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rainbowbreeze.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rainbowbreeze.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rainbowbreeze.it\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/rainbowbreeze.it\/wordpress\/wp-json\/wp\/v2\/comments?post=11097"}],"version-history":[{"count":0,"href":"https:\/\/rainbowbreeze.it\/wordpress\/wp-json\/wp\/v2\/posts\/11097\/revisions"}],"wp:attachment":[{"href":"https:\/\/rainbowbreeze.it\/wordpress\/wp-json\/wp\/v2\/media?parent=11097"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rainbowbreeze.it\/wordpress\/wp-json\/wp\/v2\/categories?post=11097"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rainbowbreeze.it\/wordpress\/wp-json\/wp\/v2\/tags?post=11097"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}