Skip to content

Commit 3b22e37

Browse files
committed
feat(frontend): add runtime and tags display to MCP server card
1 parent 45f7088 commit 3b22e37

File tree

1 file changed

+47
-1
lines changed

1 file changed

+47
-1
lines changed

services/frontend/src/components/mcp-server/McpServerSquareCard.vue

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import { useI18n } from 'vue-i18n'
33
import { useRouter } from 'vue-router'
44
import { Button } from '@/components/ui/button'
5+
import { Badge } from '@/components/ui/badge'
56
import { Github, Star } from 'lucide-vue-next'
67
import type { McpServer } from '@/views/admin/mcp-server-catalog/types'
78
@@ -44,6 +45,22 @@ const getGitHubAvatarUrl = (server: McpServer) => {
4445
if (!server.github_account_id) return null
4546
return `https://avatars.githubusercontent.com/u/${server.github_account_id}?v=4&s=64`
4647
}
48+
49+
const getRuntimeBadgeClass = (runtime: string | null | undefined) => {
50+
if (!runtime) return 'bg-gray-100 text-gray-800'
51+
52+
const runtimeLower = runtime.toLowerCase()
53+
54+
if (runtimeLower === 'node') {
55+
return 'bg-green-100 text-green-800'
56+
} else if (runtimeLower === 'python') {
57+
return 'bg-blue-100 text-blue-800'
58+
} else if (runtimeLower === 'http') {
59+
return 'bg-purple-100 text-purple-800'
60+
}
61+
62+
return 'bg-gray-100 text-gray-800'
63+
}
4764
</script>
4865

4966
<template>
@@ -67,6 +84,11 @@ const getGitHubAvatarUrl = (server: McpServer) => {
6784
{{ server.name }}
6885
</dt>
6986
</div>
87+
<div class="flex-none pt-6 pr-6">
88+
<Badge v-if="server.runtime" variant="secondary" :class="['font-mono text-xs', getRuntimeBadgeClass(server.runtime)]">
89+
{{ server.runtime }}
90+
</Badge>
91+
</div>
7092
<div class="mt-6 flex w-full flex-none gap-x-4 items-center border-t border-gray-900/5 px-6 pt-6">
7193
<dt class="flex-none">
7294
<span class="sr-only">{{ t('mcpInstallations.view.fields.repository') }}</span>
@@ -91,7 +113,24 @@ const getGitHubAvatarUrl = (server: McpServer) => {
91113
</dd>
92114
</div>
93115
<div class="mt-4 flex w-full flex-none gap-x-4 px-6">
94-
<dd class="text-sm text-gray-600 line-clamp-3 min-h-[3.75rem]">{{ getServerDescription(server) }}</dd>
116+
<dd class="text-sm text-gray-600 line-clamp-3 min-h-[3.75rem]">
117+
{{ getServerDescription(server) }}
118+
</dd>
119+
</div>
120+
<div v-if="server.tags && server.tags.length > 0" class="mt-2 flex w-full flex-none px-6 min-h-[3rem]">
121+
<dd class="flex flex-wrap gap-1.5 items-center line-clamp-2">
122+
<Badge
123+
v-for="tag in server.tags"
124+
:key="tag"
125+
variant="outline"
126+
class="text-xs px-2 py-0.5"
127+
>
128+
{{ tag }}
129+
</Badge>
130+
</dd>
131+
</div>
132+
<div v-else class="mt-2 flex w-full flex-none px-6 min-h-[3rem]">
133+
<!-- Empty space to maintain consistent card height -->
95134
</div>
96135
</dl>
97136
<div class="mt-6 border-t border-gray-900/5 px-6 py-6">
@@ -114,4 +153,11 @@ const getGitHubAvatarUrl = (server: McpServer) => {
114153
-webkit-box-orient: vertical;
115154
overflow: hidden;
116155
}
156+
157+
.line-clamp-2 {
158+
display: -webkit-box;
159+
-webkit-line-clamp: 2;
160+
-webkit-box-orient: vertical;
161+
overflow: hidden;
162+
}
117163
</style>

0 commit comments

Comments
 (0)