|
259 | 259 | (fn [arguments] |
260 | 260 | (logger/trace |
261 | 261 | (-> arguments |
262 | | - (merge |
263 | | - (db/parameter-values (:name params)) |
264 | | - (select-keys (-> @db* :servers (get server-id)) [:roots])) |
| 262 | + (merge |
| 263 | + (db/parameter-values (:name params)) |
| 264 | + (select-keys (-> @db* :servers (get server-id)) [:roots])) |
265 | 265 | (json/generate-string))))) |
266 | 266 | :id "1"}]) |
267 | 267 | (async/reduce conj []) |
|
307 | 307 | (when (= f "registry.yaml") |
308 | 308 | (try |
309 | 309 | (db/add-refs (db/registry-refs registry)) |
310 | | - (doseq [producer @jsonrpc.state/producers] |
| 310 | + (doseq [producer (vals @jsonrpc.state/producers)] |
311 | 311 | (try |
312 | 312 | (producer/publish-tool-list-changed producer {}) |
313 | 313 | (producer/publish-prompt-list-changed producer {}) |
|
317 | 317 | (when (string/ends-with? f ".md") |
318 | 318 | (try |
319 | 319 | (db/update-prompt opts (string/replace f #"\.md" "") (slurp (str "/prompts/" f))) |
320 | | - (doseq [producer @jsonrpc.state/producers] |
| 320 | + (doseq [producer (vals @jsonrpc.state/producers)] |
321 | 321 | (try |
322 | 322 | (producer/publish-tool-list-changed producer {}) |
323 | 323 | (producer/publish-prompt-list-changed producer {}) |
|
375 | 375 | :trace-level trace-level |
376 | 376 | :keyword-function keyword |
377 | 377 | :server-context-factory |
378 | | - (fn [server] |
| 378 | + (fn [server state-id] |
379 | 379 | (let [producer (producer/->McpProducer server db*)] |
380 | | - (swap! jsonrpc.state/producers conj producer) |
| 380 | + (swap! jsonrpc.state/producers assoc state-id producer) |
381 | 381 | {:db* db* |
382 | 382 | :logger timbre-logger |
383 | 383 | :producer producer |
|
399 | 399 | :out System/out}))] |
400 | 400 | (logger/info "Starting server...") |
401 | 401 | ;; only on lsp.server/start will the stdio channels start being used |
402 | | - (let [{:keys [producer] :as context} |
403 | | - (assoc |
404 | | - ((:server-context-factory server-opts) server) |
405 | | - :server-id (swap! jsonrpc.state/server-counter inc))] |
| 402 | + (let [server-id (swap! jsonrpc.state/server-counter inc) |
| 403 | + {:keys [producer] :as context} |
| 404 | + ((:server-context-factory server-opts) server server-id)] |
406 | 405 | [producer (lsp.server/start server context)])))) |
407 | 406 |
|
0 commit comments