Skip to content

Commit b81e005

Browse files
committed
Improve MCP logs on stderr.
1 parent ee82d0a commit b81e005

File tree

5 files changed

+26
-10
lines changed

5 files changed

+26
-10
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## Unreleased
44

55
- Bump MCP java sdk to 0.13.1
6+
- Improve MCP logs on stderr.
67

78
## 0.57.0
89

deps.edn

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
com.github.steffan-westcott/clj-otel-sdk-extension-autoconfigure {:mvn/version "0.2.9"}
1616
com.github.steffan-westcott/clj-otel-exporter-otlp {:mvn/version "0.2.9"}
1717
camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.3"}
18-
org.slf4j/slf4j-simple {:mvn/version "2.0.17"}
18+
ch.qos.logback/logback-classic {:mvn/version "1.5.18"}
1919
com.googlecode.java-diff-utils/diffutils {:mvn/version "1.3.0"}
2020
cheshire/cheshire {:mvn/version "6.0.0"}}
2121
:aliases

resources/logback.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration>
3+
<!-- Console appender that writes to stderr instead of stdout -->
4+
<appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
5+
<target>System.err</target>
6+
<encoder>
7+
<pattern>[MCP] %msg%n</pattern>
8+
</encoder>
9+
</appender>
10+
11+
<!-- Root logger configuration -->
12+
<root level="${LOGBACK_LEVEL:-${logback.level:-INFO}}">
13+
<appender-ref ref="STDERR" />
14+
</root>
15+
</configuration>

resources/simplelogger.properties

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/eca/features/tools/mcp.clj

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
(str "$" var1)
5252
(str "${" var2 "}"))))))
5353

54-
(defn ^:private ->transport ^McpTransport [server-config workspaces]
54+
(defn ^:private ->transport ^McpTransport [server-name server-config workspaces]
5555
(if (:url server-config)
5656
;; HTTP Streamable transport
5757
(let [url (replace-env-vars (:url server-config))]
@@ -74,10 +74,13 @@
7474
first
7575
:uri
7676
shared/uri->filename)
77-
(config/get-property "user.home"))]
78-
(proxy [StdioClientTransport] [(.build b) (McpJsonMapper/getDefault)]
79-
(getProcessBuilder [] (-> (ProcessBuilder. ^List pb-init-args)
80-
(.directory (io/file work-dir))))))))
77+
(config/get-property "user.home"))
78+
stdio-transport (proxy [StdioClientTransport] [(.build b) (McpJsonMapper/getDefault)]
79+
(getProcessBuilder [] (-> (ProcessBuilder. ^List pb-init-args)
80+
(.directory (io/file work-dir)))))]
81+
(.setStdErrorHandler stdio-transport (fn [msg]
82+
(logger/info logger-tag (format "[%s] %s" server-name msg))))
83+
stdio-transport)))
8184

8285
(defn ^:private ->client ^McpSyncClient [name transport init-timeout workspaces]
8386
(-> (McpClient/sync transport)
@@ -166,7 +169,7 @@
166169
server-config (get-in config [:mcpServers name])
167170
obj-mapper (ObjectMapper.)
168171
init-timeout (:mcpTimeoutSeconds config)
169-
transport (->transport server-config workspaces)
172+
transport (->transport name server-config workspaces)
170173
client (->client name transport init-timeout workspaces)]
171174
(on-server-updated (->server name server-config :starting db))
172175
(swap! db* assoc-in [:mcp-clients name] {:client client :status :starting})

0 commit comments

Comments
 (0)