[GH-ISSUE #14655] issue: [Tools] API calls ignore prefix when using Claude-compatible config, leading to 404 #32855

Closed
opened 2026-04-25 06:43:08 -05:00 by GiteaMirror · 2 comments
Owner

Originally created by @djimonta on GitHub (Jun 4, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/14655

Check Existing Issues

  • I have searched the existing issues and discussions.
  • I am using the latest version of Open WebUI.

Installation Method

Docker

Open WebUI Version

v0.6.13

Ollama Version (if applicable)

No response

Operating System

Ubuntu 22.04

Browser (if applicable)

No response

Confirmation

  • I have read and followed all instructions in README.md.
  • I am using the latest version of both Open WebUI and Ollama.
  • I have included the browser console logs.
  • I have included the Docker container logs.
  • I have provided every relevant configuration, setting, and environment variable used in my setup.
  • I have clearly listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc).
  • I have documented step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation. My steps:
  • Start with the initial platform/version/OS and dependencies used,
  • Specify exact install/launch/configure commands,
  • List URLs visited, user input (incl. example values/emails/passwords if needed),
  • Describe all options and toggles enabled or changed,
  • Include any files or environmental changes,
  • Identify the expected and actual result at each stage,
  • Ensure any reasonably skilled user can follow and hit the same issue.

Expected Behavior

Hi team👋

I'm integrating mcpo into OpenWebUI using the claude-compatible configuration method. My tool exposes an endpoint at /test/do_something as defined in my server, and I reference it correctly in the Claude config file.

{
    "mcpServers": {
        "test": {
            "command": "uv",
            "args": [
                "--directory",
                "/app/test_mcp_server",
                "run",
                "test_mcp_server"
            ],
            "env": {}
        },

Since my mcpo server is inside a docker container, I'm calling the tool inside OpenWebUI using http://mcpo:8000/test/openapi.json, where mcpo is the name of the docker service.

However, when the LLM tries to call the tool, it makes a POST request to /do_something instead of /test/do_something, resulting in a 404 Not Found.

When using Claude-compatible tool configuration, OpenWebUI should honor the full path defined in the tool config and not assume the tool is mounted at /.

Thanks a lot for the amazing project 🙏 Let me know if I can help with more debugging info!

Actual Behavior

OpenWebUI sends the request to /do_something, omitting the /test prefix. This causes:

"POST /do_something HTTP/1.1" 404 Not Found

Steps to Reproduce

  1. Define a Claude-style config pointing to /test/do_aomething
  2. Expose the tool using @app.list_tools() in MCP or any Claude-compatible server
  3. Trigger the tool via OpenWebUI
  4. Observe 404 due to incorrect endpoint being called

Logs & Screenshots

Starting MCP OpenAPI Proxy with config file: /app/config.json INFO: 172.0.0.1:59432 - "GET /docs HTTP/1.1" 200 OK INFO: 172.0.0.1:59432 - "GET /openapi.json HTTP/1.1" 200 OK INFO: 172.0.0.1:59432 - "GET /test/docs HTTP/1.1" 200 OK INFO: 172.0.0.1:59432 - "GET /test/openapi.json HTTP/1.1" 200 OK INFO: 172.0.0.3:59432 - "POST /do_something HTTP/1.1" 404 Not Found

Additional Information

No response

Originally created by @djimonta on GitHub (Jun 4, 2025). Original GitHub issue: https://github.com/open-webui/open-webui/issues/14655 ### Check Existing Issues - [x] I have searched the existing issues and discussions. - [x] I am using the latest version of Open WebUI. ### Installation Method Docker ### Open WebUI Version v0.6.13 ### Ollama Version (if applicable) _No response_ ### Operating System Ubuntu 22.04 ### Browser (if applicable) _No response_ ### Confirmation - [x] I have read and followed all instructions in `README.md`. - [x] I am using the latest version of **both** Open WebUI and Ollama. - [x] I have included the browser console logs. - [x] I have included the Docker container logs. - [x] I have **provided every relevant configuration, setting, and environment variable used in my setup.** - [x] I have clearly **listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup** (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc). - [x] I have documented **step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation**. My steps: - Start with the initial platform/version/OS and dependencies used, - Specify exact install/launch/configure commands, - List URLs visited, user input (incl. example values/emails/passwords if needed), - Describe all options and toggles enabled or changed, - Include any files or environmental changes, - Identify the expected and actual result at each stage, - Ensure any reasonably skilled user can follow and hit the same issue. ### Expected Behavior Hi team👋 I'm integrating [mcpo](https://github.com/open-webui/mcpo) into OpenWebUI using the claude-compatible configuration method. My tool exposes an endpoint at `/test/do_something` as defined in my server, and I reference it correctly in the Claude config file. ```json { "mcpServers": { "test": { "command": "uv", "args": [ "--directory", "/app/test_mcp_server", "run", "test_mcp_server" ], "env": {} }, ``` Since my `mcpo` server is inside a docker container, I'm calling the tool inside OpenWebUI using **http://mcpo:8000/test/openapi.json**, where mcpo is the name of the docker service. However, when the LLM tries to call the tool, it makes a `POST` request to `/do_something` instead of `/test/do_something`, resulting in a `404 Not Found`. When using Claude-compatible tool configuration, OpenWebUI should honor the full path defined in the tool config and not assume the tool is mounted at `/`. Thanks a lot for the amazing project 🙏 Let me know if I can help with more debugging info! ### Actual Behavior OpenWebUI sends the request to `/do_something`, omitting the `/test` prefix. This causes: ```bash "POST /do_something HTTP/1.1" 404 Not Found ``` ### Steps to Reproduce 1. Define a Claude-style config pointing to `/test/do_aomething` 2. Expose the tool using `@app.list_tools()` in MCP or any Claude-compatible server 3. Trigger the tool via OpenWebUI 4. Observe 404 due to incorrect endpoint being called ### Logs & Screenshots <Logs from mcpo> Starting MCP OpenAPI Proxy with config file: /app/config.json INFO: 172.0.0.1:59432 - "GET /docs HTTP/1.1" 200 OK INFO: 172.0.0.1:59432 - "GET /openapi.json HTTP/1.1" 200 OK INFO: 172.0.0.1:59432 - "GET /test/docs HTTP/1.1" 200 OK INFO: 172.0.0.1:59432 - "GET /test/openapi.json HTTP/1.1" 200 OK <Request coming from OpenWbUI> INFO: 172.0.0.3:59432 - "POST /do_something HTTP/1.1" 404 Not Found ### Additional Information _No response_
GiteaMirror added the bug label 2026-04-25 06:43:08 -05:00
Author
Owner

@tjbck commented on GitHub (Jun 4, 2025):

/test should be included as a base url, please refer to docs. https://docs.openwebui.com/openapi-servers/open-webui#-optional-using-a-config-file-with-mcpo

<!-- gh-comment-id:2939634419 --> @tjbck commented on GitHub (Jun 4, 2025): `/test` should be included as a base url, please refer to docs. https://docs.openwebui.com/openapi-servers/open-webui#-optional-using-a-config-file-with-mcpo
Author
Owner

@djimonta commented on GitHub (Jun 4, 2025):

Actually, I had already set /test as the base URL.
The mistake was assuming that /test should be added in the second input field (underneath), but in reality, it should be part of the first URL field at the top — even though the resulting baseURL ends up being the same and the connectivity test works.

I'm including some screenshots for reference, in case someone else runs into the same issue.

❌ Wrong

Image

✅ Correct

Image

<!-- gh-comment-id:2939693508 --> @djimonta commented on GitHub (Jun 4, 2025): Actually, I had already set `/test` as the base URL. The mistake was assuming that `/test` should be added in the second input field (underneath), but in reality, it should be part of the first URL field at the top — even though the resulting `baseURL` ends up being the same and the connectivity test works. I'm including some screenshots for reference, in case someone else runs into the same issue. ❌ Wrong ![Image](https://github.com/user-attachments/assets/d99eed02-7c51-45b1-9efc-764d399f27c4) ✅ Correct ![Image](https://github.com/user-attachments/assets/b425ca8a-324d-4456-a049-5f1707335986)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#32855