Skip to content

Commit cf54bf3

Browse files
committed
Fix non sse remote mcps not working.
1 parent 7b9e9bf commit cf54bf3

3 files changed

Lines changed: 12 additions & 10 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## Unreleased
44

5+
- Fix non sse remote mcps not working.
6+
57
## 0.97.2
68

79
- Do not try to oauth remote mcp servers if they have Authorization header.

src/eca/features/tools/mcp.clj

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,12 @@
5959
(str "$" var1)
6060
(str "${" var2 "}"))))))
6161

62-
(defn ^:private split-sse-url
63-
"Split an SSE URL into base URI and endpoint path.
62+
(defn ^:private split-url
63+
"Split a URL into base URI and endpoint path.
6464
Examples:
6565
- 'https://api.example.com/v1/sse' -> ['https://api.example.com', '/v1/sse']
66-
- 'https://mcp.example.com/sse?key=abc' -> ['https://mcp.example.com', '/sse?key=abc']"
66+
- 'https://mcp.example.com/sse?key=abc' -> ['https://mcp.example.com', '/sse?key=abc']
67+
- 'https://api.z.ai/api/mcp/web_reader/mcp' -> ['https://api.z.ai', '/api/mcp/web_reader/mcp']"
6768
[^String url]
6869
(let [uri (java.net.URI. url)
6970
scheme (.getScheme uri)
@@ -90,15 +91,16 @@
9091
(when-let [access-token (get-in db [:mcp-auth server-name :access-token])]
9192
(.header builder "Authorization" (str "Bearer " access-token)))))]
9293
(if sse?
93-
(let [[base-uri sse-endpoint] (split-sse-url url)]
94+
(let [[base-uri sse-endpoint] (split-url url)]
9495
(logger/info logger-tag (format "Creating SSE transport for server '%s' - base: %s, endpoint: %s" server-name base-uri sse-endpoint))
9596
(-> (HttpClientSseClientTransport/builder base-uri)
9697
(.sseEndpoint sse-endpoint)
9798
(.httpRequestCustomizer customizer)
9899
(.build)))
99-
(do
100-
(logger/info logger-tag (format "Creating HTTP transport for server '%s' at URL: %s" server-name url))
101-
(-> (HttpClientStreamableHttpTransport/builder url)
100+
(let [[base-uri endpoint] (split-url url)]
101+
(logger/info logger-tag (format "Creating HTTP transport for server '%s' - base: %s, endpoint: %s" server-name base-uri endpoint))
102+
(-> (HttpClientStreamableHttpTransport/builder base-uri)
103+
(.endpoint endpoint)
102104
(.httpRequestCustomizer customizer)
103105
(.build)))))
104106

@@ -266,6 +268,7 @@
266268
(let [db @db*
267269
workspaces (:workspace-folders @db*)
268270
server-config (get-in config [:mcpServers name])
271+
_ (on-server-updated (->server name server-config :starting db))
269272
url (:url server-config)
270273
;; Skip OAuth entirely if Authorization header is configured
271274
has-static-auth? (some-> server-config :headers :Authorization some?)
@@ -305,7 +308,6 @@
305308
(on-server-updated (->server name server-config :running @db*))))
306309
client (->client name transport init-timeout workspaces
307310
{:on-tools-change on-tools-change})]
308-
(on-server-updated (->server name server-config :starting db))
309311
(swap! db* assoc-in [:mcp-clients name] {:client client :status :starting})
310312
(try
311313
(.initialize client)

src/eca/handlers.clj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
[eca.features.rewrite :as f.rewrite]
1010
[eca.features.tools :as f.tools]
1111
[eca.features.tools.mcp :as f.mcp]
12-
[eca.logger :as logger]
1312
[eca.messenger :as messenger]
1413
[eca.metrics :as metrics]
1514
[eca.models :as models]
@@ -21,7 +20,6 @@
2120
(metrics/task metrics :eca/initialize
2221
(reset! config/initialization-config* (shared/map->camel-cased-map (:initialization-options params)))
2322
(let [config (config/all @db*)]
24-
(logger/debug "Considered config: " config)
2523
(swap! db* assoc
2624
:client-info (:client-info params)
2725
:workspace-folders (:workspace-folders params)

0 commit comments

Comments
 (0)