refactor(MCP): Simplify IPC handlers and improve server management
This commit is contained in:
parent
632b0c17aa
commit
db2b92421a
@ -214,43 +214,23 @@ export function registerIpc(mainWindow: BrowserWindow, app: Electron.App) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
// Register MCP handlers
|
// Register MCP handlers
|
||||||
ipcMain.on('mcp:servers-from-renderer', (_event, servers) => {
|
ipcMain.on('mcp:servers-from-renderer', (_, servers) => mcpService.setServers(servers))
|
||||||
mcpService.setServers(servers)
|
ipcMain.handle('mcp:list-servers', async () => mcpService.listAvailableServices())
|
||||||
})
|
ipcMain.handle('mcp:add-server', async (_, server: MCPServer) => mcpService.addServer(server))
|
||||||
|
ipcMain.handle('mcp:update-server', async (_, server: MCPServer) => mcpService.updateServer(server))
|
||||||
ipcMain.handle('mcp:list-servers', async () => {
|
ipcMain.handle('mcp:delete-server', async (_, serverName: string) => mcpService.deleteServer(serverName))
|
||||||
return mcpService.listAvailableServices()
|
ipcMain.handle('mcp:set-server-active', async (_, { name, isActive }) =>
|
||||||
})
|
mcpService.setServerActive({ name, isActive })
|
||||||
|
)
|
||||||
ipcMain.handle('mcp:add-server', async (_, server: MCPServer) => {
|
|
||||||
return mcpService.addServer(server)
|
|
||||||
})
|
|
||||||
|
|
||||||
ipcMain.handle('mcp:update-server', async (_, server: MCPServer) => {
|
|
||||||
return mcpService.updateServer(server)
|
|
||||||
})
|
|
||||||
|
|
||||||
ipcMain.handle('mcp:delete-server', async (_, serverName: string) => {
|
|
||||||
return mcpService.deleteServer(serverName)
|
|
||||||
})
|
|
||||||
|
|
||||||
ipcMain.handle('mcp:set-server-active', async (_, { name, isActive }) => {
|
|
||||||
return mcpService.setServerActive({ name, isActive })
|
|
||||||
})
|
|
||||||
|
|
||||||
// According to preload, this should take no parameters, but our implementation accepts
|
// According to preload, this should take no parameters, but our implementation accepts
|
||||||
// an optional serverName for better flexibility
|
// an optional serverName for better flexibility
|
||||||
ipcMain.handle('mcp:list-tools', async (_, serverName?: string) => {
|
ipcMain.handle('mcp:list-tools', async (_, serverName?: string) => mcpService.listTools(serverName))
|
||||||
return mcpService.listTools(serverName)
|
ipcMain.handle('mcp:call-tool', async (_, params: { client: string; name: string; args: any }) =>
|
||||||
})
|
mcpService.callTool(params)
|
||||||
|
)
|
||||||
|
|
||||||
ipcMain.handle('mcp:call-tool', async (_, params: { client: string; name: string; args: any }) => {
|
ipcMain.handle('mcp:cleanup', async () => mcpService.cleanup())
|
||||||
return mcpService.callTool(params)
|
|
||||||
})
|
|
||||||
|
|
||||||
ipcMain.handle('mcp:cleanup', async () => {
|
|
||||||
return mcpService.cleanup()
|
|
||||||
})
|
|
||||||
|
|
||||||
// Listen for changes in MCP servers and notify renderer
|
// Listen for changes in MCP servers and notify renderer
|
||||||
mcpService.on('servers-updated', (servers) => {
|
mcpService.on('servers-updated', (servers) => {
|
||||||
@ -258,7 +238,5 @@ export function registerIpc(mainWindow: BrowserWindow, app: Electron.App) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// Clean up MCP services when app quits
|
// Clean up MCP services when app quits
|
||||||
app.on('before-quit', async () => {
|
app.on('before-quit', () => mcpService.cleanup())
|
||||||
await mcpService.cleanup()
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -134,6 +134,7 @@ const MCPSettings: FC = () => {
|
|||||||
window.api.mcp
|
window.api.mcp
|
||||||
.addServer(mcpServer)
|
.addServer(mcpServer)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
dispatch(addMCPServer(mcpServer))
|
||||||
window.message.success(t('settings.mcp.addSuccess'))
|
window.message.success(t('settings.mcp.addSuccess'))
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
setIsModalVisible(false)
|
setIsModalVisible(false)
|
||||||
@ -143,7 +144,6 @@ const MCPSettings: FC = () => {
|
|||||||
window.message.error(`${t('settings.mcp.addError')}: ${error.message}`)
|
window.message.error(`${t('settings.mcp.addError')}: ${error.message}`)
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
})
|
})
|
||||||
dispatch(addMCPServer(mcpServer))
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { FunctionCall, FunctionDeclaration, SchemaType, Tool as geminiToool } fr
|
|||||||
import { MCPServer, MCPTool, MCPToolResponse } from '@renderer/types'
|
import { MCPServer, MCPTool, MCPToolResponse } from '@renderer/types'
|
||||||
import { ChatCompletionMessageToolCall, ChatCompletionTool } from 'openai/resources'
|
import { ChatCompletionMessageToolCall, ChatCompletionTool } from 'openai/resources'
|
||||||
|
|
||||||
import { ChunkCallbackData } from '.'
|
import { ChunkCallbackData } from '../providers'
|
||||||
|
|
||||||
const supportedAttributes = [
|
const supportedAttributes = [
|
||||||
'type',
|
'type',
|
||||||
Loading…
x
Reference in New Issue
Block a user