diff --git a/apps/code/src/renderer/features/settings/components/sections/McpServersSettings.tsx b/apps/code/src/renderer/features/settings/components/sections/McpServersSettings.tsx
index 333dcfc53..5d3c9b385 100644
--- a/apps/code/src/renderer/features/settings/components/sections/McpServersSettings.tsx
+++ b/apps/code/src/renderer/features/settings/components/sections/McpServersSettings.tsx
@@ -1,6 +1,5 @@
import { useAuthenticatedMutation } from "@hooks/useAuthenticatedMutation";
import {
- CheckCircle,
MagnifyingGlassIcon,
PlugIcon,
Plus,
@@ -321,12 +320,10 @@ function ServerRow({
function RecommendedServerRow({
server,
- isInstalled,
onInstall,
isInstalling,
}: {
server: McpRecommendedServer;
- isInstalled: boolean;
onInstall: () => void;
isInstalling: boolean;
}) {
@@ -359,22 +356,15 @@ function RecommendedServerRow({
- {isInstalled ? (
-
-
- Active
-
- ) : (
-
- )}
+
);
@@ -430,14 +420,15 @@ export function McpServersSettings() {
const filteredServers = useMemo(() => {
if (!servers) return [];
- if (!searchTerm) return servers;
+ const available = servers.filter((s) => !installedUrls.has(s.url));
+ if (!searchTerm) return available;
const term = searchTerm.toLowerCase();
- return servers.filter(
+ return available.filter(
(s) =>
s.name.toLowerCase().includes(term) ||
s.description.toLowerCase().includes(term),
);
- }, [servers, searchTerm]);
+ }, [servers, searchTerm, installedUrls]);
const handleUninstall = useCallback(() => {
if (uninstallTarget) {
@@ -546,7 +537,6 @@ export function McpServersSettings() {
installRecommended(server)}
isInstalling={installingUrl === server.url}
/>