|
7 | 7 | [eca.features.tools.mcp :as f.mcp] |
8 | 8 | [eca.features.tools.shell :as f.tools.shell] |
9 | 9 | [eca.features.tools.util :as tools.util] |
10 | | - [eca.logger :as logger]) |
| 10 | + [eca.logger :as logger] |
| 11 | + [eca.messenger :as messenger]) |
11 | 12 | (:import |
12 | 13 | [java.util Map])) |
13 | 14 |
|
|
29 | 30 | (when (get-in config [:nativeTools :shell :enabled]) |
30 | 31 | f.tools.shell/definitions)))) |
31 | 32 |
|
| 33 | +(defn ^:private native-tools [db config] |
| 34 | + (mapv #(select-keys % [:name :description :parameters]) |
| 35 | + (vals (native-definitions db config)))) |
| 36 | + |
32 | 37 | (defn all-tools |
33 | 38 | "Returns all available tools, including both native ECA tools |
34 | 39 | (like filesystem and shell tools) and tools provided by MCP servers." |
35 | 40 | [db config] |
36 | | - (let [native-tools (concat |
37 | | - [] |
38 | | - (mapv #(select-keys % [:name :description :parameters]) |
39 | | - (vals (native-definitions db config)))) |
40 | | - mcp-tools (f.mcp/all-tools db)] |
41 | | - (concat |
42 | | - (mapv #(assoc % :origin :native) native-tools) |
43 | | - (mapv #(assoc % :origin :mcp) mcp-tools)))) |
| 41 | + (concat |
| 42 | + (mapv #(assoc % :origin :native) (native-tools db config)) |
| 43 | + (mapv #(assoc % :origin :mcp) (f.mcp/all-tools db)))) |
44 | 44 |
|
45 | 45 | (defn call-tool! [^String name ^Map arguments db config] |
46 | 46 | (logger/info logger-tag (format "Calling tool '%s' with args '%s'" name arguments)) |
47 | 47 | (if-let [native-tool-handler (get-in (native-definitions db config) [name :handler])] |
48 | 48 | (native-tool-handler arguments {:db db :config config}) |
49 | 49 | (f.mcp/call-tool! name arguments db))) |
| 50 | + |
| 51 | +(defn init-servers! [db* messenger config] |
| 52 | + (messenger/tool-server-updated messenger {:type :native |
| 53 | + :name "ECA" |
| 54 | + :status "running" |
| 55 | + :tools (native-tools @db* config)}) |
| 56 | + (f.mcp/initialize-servers-async! |
| 57 | + {:on-server-updated (fn [server] |
| 58 | + (messenger/tool-server-updated messenger (assoc server :type :mcp)))} |
| 59 | + db* |
| 60 | + config)) |
0 commit comments