From e7aa07fb545fb5f99be87437d6505880d9981e19 Mon Sep 17 00:00:00 2001 From: Jim Clark Date: Fri, 31 Jan 2025 14:38:12 -0500 Subject: [PATCH] Remove warnings --- gordon-mcp.yml | 12 ++++++++++++ src/jsonrpc/db.clj | 3 +-- src/jsonrpc/server.clj | 6 ++++-- src/script.clj | 4 ++-- src/volumes.clj | 6 +++--- 5 files changed, 22 insertions(+), 9 deletions(-) create mode 100644 gordon-mcp.yml diff --git a/gordon-mcp.yml b/gordon-mcp.yml new file mode 100644 index 0000000..1b2a1ff --- /dev/null +++ b/gordon-mcp.yml @@ -0,0 +1,12 @@ +services: + mcp_docker: + image: mcp/docker:latest + command: serve --mcp --register github:docker/labs-ai-tools-for-devs?path=prompts/bootstrap.md + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - docker-prompts:/prompts + x-mcp-autoremove: false + +volumes: + docker-prompts: + external: true diff --git a/src/jsonrpc/db.clj b/src/jsonrpc/db.clj index 316c4e1..b7d706e 100644 --- a/src/jsonrpc/db.clj +++ b/src/jsonrpc/db.clj @@ -45,8 +45,7 @@ (add {:register ["github:docker/labs-ai-tools-for-devs?path=prompts/examples/explain_dockerfile.md" "github:docker/labs-ai-tools-for-devs?path=prompts/examples/hello_world.md"]})) -#_{:clj-kondo/ignore [:redefined-var]} -(defn merge [{:keys [registry-content] :as opts}] +(defn merge-dynamic-prompts [{:keys [registry-content] :as opts}] (logger/info "adding dynamic prompts" registry-content) (try (let [{:keys [registry]} (yaml/parse-string registry-content) diff --git a/src/jsonrpc/server.clj b/src/jsonrpc/server.clj index 2336f89..b442c9d 100644 --- a/src/jsonrpc/server.clj +++ b/src/jsonrpc/server.clj @@ -295,6 +295,7 @@ log-path (logger/setup timbre-logger) db* db/db* log-ch (async/chan (async/sliding-buffer 20)) + ;; server will start watching stdio/stdout immediately server (stdio-server (merge {;:keyword-function identity @@ -320,7 +321,7 @@ (logger/error t)))) ;; register dynamic prompts (when (fs/exists? (fs/file "/prompts/registry.yaml")) - (db/merge (assoc opts :registry-content (slurp "/prompts/registry.yaml")))) + (db/merge-dynamic-prompts (assoc opts :registry-content (slurp "/prompts/registry.yaml")))) ;; watch dynamic prompts in background (async/thread (let [{x :container} @@ -333,7 +334,7 @@ (let [[_dir _event f] (string/split line #"\s+")] (when (= f "registry.yaml") (try - (db/merge (assoc opts :registry-content (slurp "/prompts/registry.yaml"))) + (db/merge-dynamic-prompts (assoc opts :registry-content (slurp "/prompts/registry.yaml"))) (producer/publish-tool-list-changed producer {}) (producer/publish-prompt-list-changed producer {}) (catch Throwable t @@ -345,6 +346,7 @@ (docker/delete x))))) (monitor-server-logs log-ch) (logger/info "Starting server...") + ;; only on lsp.server/start will the stdio channels start being used [producer (lsp.server/start server components)]))) (comment diff --git a/src/script.clj b/src/script.clj index 444f9c8..fe1db8b 100644 --- a/src/script.clj +++ b/src/script.clj @@ -1,7 +1,7 @@ (ns script) -(defmacro read [path] +(defmacro read-script-at-compile-time [path] (slurp path)) (comment - (macroexpand '(read "src/volumes/collect.clj"))) + (macroexpand '(read-script-at-compile-time "src/volumes/collect.clj"))) diff --git a/src/volumes.clj b/src/volumes.clj index f89bb6f..6c7e726 100644 --- a/src/volumes.clj +++ b/src/volumes.clj @@ -34,7 +34,7 @@ :thread-id thread-id :command [(json/generate-string {:directory "/thread"} keyword) - (script/read "src/volumes/collect.clj")]}) + (script/read-script-at-compile-time "src/volumes/collect.clj")]}) :pty-output (json/parse-string keyword)) (catch Throwable t @@ -42,7 +42,7 @@ {}))) (comment - (script/read "src/volumes/collect.clj")) + (script/read-script-at-compile-time "src/volumes/collect.clj")) (comment (-> @@ -52,7 +52,7 @@ :workdir "/project" :command [(json/generate-string {:directory "/project"}) - (script/read "src/volumes/collect.clj")]}) + (script/read-script-at-compile-time "src/volumes/collect.clj")]}) :pty-output #_(json/parse-string keyword)))