From 555c5baafad31eede66f7cc8f28eda50cbf0352f Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Sun, 16 Mar 2025 21:05:24 +0800 Subject: [PATCH] feat: integrate MCP server initialization into app initialization process - Added useInitMCPServers hook to manage MCP server state and communication with the main process. - Updated useAppInit to include useInitMCPServers for improved server management during app initialization. --- src/renderer/src/hooks/useAppInit.ts | 3 ++- src/renderer/src/hooks/useMCPServers.ts | 18 +++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/renderer/src/hooks/useAppInit.ts b/src/renderer/src/hooks/useAppInit.ts index c1460e6f..6dab8c40 100644 --- a/src/renderer/src/hooks/useAppInit.ts +++ b/src/renderer/src/hooks/useAppInit.ts @@ -10,6 +10,7 @@ import { useEffect } from 'react' import { useDefaultModel } from './useAssistant' import useFullScreenNotice from './useFullScreenNotice' +import { useInitMCPServers } from './useMCPServers' import { useRuntime } from './useRuntime' import { useSettings } from './useSettings' import useUpdateHandler from './useUpdateHandler' @@ -22,8 +23,8 @@ export function useAppInit() { const avatar = useLiveQuery(() => db.settings.get('image://avatar')) useUpdateHandler() - useFullScreenNotice() + useInitMCPServers() useEffect(() => { avatar?.value && dispatch(setAvatar(avatar.value)) diff --git a/src/renderer/src/hooks/useMCPServers.ts b/src/renderer/src/hooks/useMCPServers.ts index 67678ef4..30692484 100644 --- a/src/renderer/src/hooks/useMCPServers.ts +++ b/src/renderer/src/hooks/useMCPServers.ts @@ -10,19 +10,10 @@ ipcRenderer.on('mcp:servers-changed', (_event, servers) => { store.dispatch(setMCPServers(servers)) }) -// Send initial servers state to main process -const initialServers = store.getState().mcp.servers -ipcRenderer.send('mcp:servers-from-renderer', initialServers) - export const useMCPServers = () => { const mcpServers = useAppSelector((state) => state.mcp.servers) const dispatch = useAppDispatch() - // Send servers to main process when they change in Redux - useEffect(() => { - ipcRenderer.send('mcp:servers-from-renderer', mcpServers) - }, [mcpServers]) - // Initial load of MCP servers from main process useEffect(() => { const loadServers = async () => { @@ -90,3 +81,12 @@ export const useMCPServers = () => { getActiveMCPServers } } + +export const useInitMCPServers = () => { + const mcpServers = useAppSelector((state) => state.mcp.servers) + + // Send servers to main process when they change in Redux + useEffect(() => { + ipcRenderer.send('mcp:servers-from-renderer', mcpServers) + }, [mcpServers]) +}