Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions src/io/modelcontext/clojure_sdk/server.clj
Original file line number Diff line number Diff line change
Expand Up @@ -309,10 +309,17 @@
;;; Server Spec

(defn validate-spec!
"Validates the server-spec and throws if invalid.
Strips handler functions before logging to avoid JSON serialization errors."
[server-spec]
(when-not (specs/valid-server-spec? server-spec)
(let [msg "Invalid server-spec definition"]
(log/debug :msg msg :spec server-spec)
(let [msg "Invalid server-spec definition"
;; Strip handlers before logging to avoid JSON serialization errors
loggable-spec (-> server-spec
(update :tools (fn [tools] (mapv #(dissoc % :handler) tools)))
(update :prompts (fn [prompts] (mapv #(dissoc % :handler) prompts)))
(update :resources (fn [resources] (mapv #(dissoc % :handler) resources))))]
(log/debug :msg msg :spec loggable-spec)
(throw (ex-info msg (specs/explain-server-spec server-spec)))))
server-spec)

Expand Down
2 changes: 1 addition & 1 deletion src/io/modelcontext/clojure_sdk/specs.clj
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,7 @@
;; Definition for a tool the client can call.
(s/def :tool/name string?)
(s/def :tool/description string?)
(s/def :tool/properties (s/map-of string? any?))
(s/def :tool/properties (s/map-of (s/or :str string? :kw keyword?) any?))
(s/def :tool/required (s/coll-of string?))
(s/def :schema/type #{"object"})
;; A JSON Schema object defining the expected parameters for the tool.
Expand Down