SNAPKITTYWEST's picture
push from SNAPKITTYWEST/snapkitty-clojure-lisp-bridge
119e586 verified
Raw History Blame Contribute Delete
1.59 kB
(ns snapkitty.lisp.mcp.server
"MCP server entry point"
(:require ["@modelcontextprotocol/sdk/server/mcp.js" :refer [McpServer]]
["@modelcontextprotocol/sdk/server/stdio.js" :refer [StdioServerTransport]]
[promesa.core :as p]
[snapkitty.lisp.mcp.config :as config]
[snapkitty.lisp.mcp.tools :as tools]
[snapkitty.lisp.mcp.util :as util]
[snapkitty.lisp.knowledge.qdrant :as qdrant]
[snapkitty.lisp.native :as native]))
(defn start! []
"Start MCP server on stdio transport"
(let [cfg (config/load-config)
mcp-server (McpServer. (clj->js {:name "snapkitty-lisp"
:version "1.0.0"}))]
(util/log "[snapkitty-lisp] Loading configuration...")
(util/log "[snapkitty-lisp] Qdrant URL:" (:qdrant-url cfg))
(util/log "[snapkitty-lisp] Collection:" (:collection-name cfg))
(p/let [_ (qdrant/ensure-collection! cfg)]
(util/log "[snapkitty-lisp] Collection ready")
; Load native ASM library
(p/let [_ (native/load-native-library! "./native/build/Release/skclisp_native.node")]
(util/log "[snapkitty-lisp] Native ASM library loaded")
(tools/register-tools! mcp-server cfg)
(util/log "[snapkitty-lisp] Tools registered")
(let [transport (StdioServerTransport.)]
(p/let [_ (.connect mcp-server transport)]
(util/log "[snapkitty-lisp] MCP server ready on stdio"))))))))
;; Node.js entry point
(set! (.-default js/module.exports) start!)