Files
integreat/src/clj/dev_mcp.clj
2026-05-29 10:55:14 -07:00

33 lines
1.0 KiB
Clojure

(ns dev-mcp
"Leiningen task: start nREPL + web server on random ports."
(:require [clojure.java.io :as io]
[nrepl.server :as nrepl])
(:import [java.net ServerSocket]))
(defn available-port []
"Pick a random available TCP port."
(with-open [s (ServerSocket. 0)]
(.getLocalPort s)))
(defn- mcp-repl-task [& _args]
"Start nREPL server and HTTP server on random ports.
Writes ports to nrepl-port and .http-port files.
Connect with: clj-nrepl-eval -p $(cat nrepl-port)"
(let [nrepl-port (available-port)
http-port (available-port)]
(spit "nrepl-port" (str nrepl-port))
(spit ".http-port" (str http-port))
(println (format "nREPL port: %d (nrepl-port)" nrepl-port))
(println (format "HTTP port: %d (.http-port)" http-port))
(nrepl/start-server :port nrepl-port)
(require 'user)
((resolve 'user/start-dev) http-port)
(println "Ready.")
@(promise)))
(defn -main
"Entry point for: lein trampoline run -m dev-mcp"
[& args]
(apply mcp-repl-task args))