|
1 | 1 | import { Client } from "@modelcontextprotocol/sdk/client/index.js" |
| 2 | +import { PEARAI_URL } from "../../shared/api" |
2 | 3 | import { StdioClientTransport, StdioServerParameters } from "@modelcontextprotocol/sdk/client/stdio.js" |
3 | 4 | import { |
4 | 5 | CallToolResultSchema, |
@@ -98,7 +99,7 @@ export class McpHub { |
98 | 99 | mcpSettingsFilePath, |
99 | 100 | `{ |
100 | 101 | "mcpServers": { |
101 | | - |
| 102 | +
|
102 | 103 | } |
103 | 104 | }`, |
104 | 105 | ) |
@@ -136,12 +137,46 @@ export class McpHub { |
136 | 137 | ) |
137 | 138 | } |
138 | 139 |
|
| 140 | + private async fetchDefaultSettings(): Promise<Record<string, any>> { |
| 141 | + try { |
| 142 | + const response = await fetch(`${PEARAI_URL}/getDefaultAgentMCPSettings`) |
| 143 | + if (!response.ok) { |
| 144 | + throw new Error(`HTTP error! status: ${response.status}`) |
| 145 | + } |
| 146 | + const data = await response.json() |
| 147 | + if (data && data.mcpServers) { |
| 148 | + return data.mcpServers |
| 149 | + } |
| 150 | + return {} |
| 151 | + } catch (error) { |
| 152 | + console.error("Failed to fetch default MCP settings:", error) |
| 153 | + return {} |
| 154 | + } |
| 155 | + } |
| 156 | + |
139 | 157 | private async initializeMcpServers(): Promise<void> { |
140 | 158 | try { |
141 | 159 | const settingsPath = await this.getMcpSettingsFilePath() |
142 | 160 | const content = await fs.readFile(settingsPath, "utf-8") |
143 | 161 | const config = JSON.parse(content) |
144 | | - await this.updateServerConnections(config.mcpServers || {}) |
| 162 | + |
| 163 | + // Fetch default settings |
| 164 | + const defaultSettings = await this.fetchDefaultSettings() |
| 165 | + |
| 166 | + console.dir(defaultSettings) |
| 167 | + |
| 168 | + // Only add new servers from default settings that don't exist in current settings |
| 169 | + const mergedServers = { ...(config.mcpServers || {}) } |
| 170 | + for (const [serverName, serverConfig] of Object.entries(defaultSettings)) { |
| 171 | + if (!mergedServers[serverName]) { |
| 172 | + mergedServers[serverName] = serverConfig |
| 173 | + } |
| 174 | + } |
| 175 | + |
| 176 | + // Update the settings file with merged settings |
| 177 | + await fs.writeFile(settingsPath, JSON.stringify({ mcpServers: mergedServers }, null, 2)) |
| 178 | + |
| 179 | + await this.updateServerConnections(mergedServers) |
145 | 180 | } catch (error) { |
146 | 181 | console.error("Failed to initialize MCP servers:", error) |
147 | 182 | } |
|
0 commit comments