@@ -340,6 +384,8 @@ function ServerRow({
export function McpSettings() {
const { servers, selectedServer, isLoading, error, fetchServers, createServer, updateServer, deleteServer, toggleServer, reconnectServer, selectServer } = useMcpStore()
const addToast = useUIStore((s) => s.addToast)
+ const sessions = useSessionStore((s) => s.sessions)
+ const activeSessionId = useSessionStore((s) => s.activeSessionId)
const t = useTranslation()
const [view, setView] = useState
({ type: 'list' })
const [draft, setDraft] = useState(createEmptyDraft)
@@ -348,20 +394,27 @@ export function McpSettings() {
const [busyServerName, setBusyServerName] = useState(null)
const [pendingDeleteServer, setPendingDeleteServer] = useState(null)
- useEffect(() => {
- void fetchServers(undefined, undefined)
- }, [fetchServers])
+ const activeSession = sessions.find((session) => session.id === activeSessionId)
+ const currentWorkDir = activeSession?.workDir || undefined
- const globalServers = useMemo(
- () => servers.filter((server) => server.scope === 'user'),
- [servers],
- )
+ useEffect(() => {
+ void fetchServers(undefined, currentWorkDir)
+ }, [fetchServers, currentWorkDir])
+
+ const groupedServers = useMemo(() => {
+ const groups: Partial> = {}
+ for (const server of servers) {
+ const key = getServerGroupKey(server)
+ ;(groups[key] ??= []).push(server)
+ }
+ return groups
+ }, [servers])
const stats = useMemo(() => ({
- total: globalServers.length,
- connected: globalServers.filter((server) => server.status === 'connected').length,
- attention: globalServers.filter((server) => server.status === 'failed' || server.status === 'needs-auth').length,
- }), [globalServers])
+ total: servers.length,
+ connected: servers.filter((server) => server.status === 'connected').length,
+ attention: servers.filter((server) => server.status === 'failed' || server.status === 'needs-auth').length,
+ }), [servers])
const beginCreate = () => {
setDraft(createEmptyDraft())
@@ -546,7 +599,7 @@ export function McpSettings() {
-
+
@@ -763,9 +816,6 @@ export function McpSettings() {
{t('settings.mcp.description')}
-
- {t('settings.mcp.globalOnlyHint')}
-