@@ -105,6 +105,29 @@ const formatDate = (dateString: string) => {
105105 })
106106}
107107
108+ // Helper to determine server source type
109+ const getServerSourceType = (installation : McpInstallation ): ' github' | ' remote' | ' catalog' => {
110+ if (installation .server ?.source === ' github' ) return ' github'
111+ if (installation .server ?.runtime === ' http' || installation .server ?.runtime === ' sse' ) return ' remote'
112+ return ' catalog'
113+ }
114+
115+ // Helper to get source label
116+ const getSourceLabel = (installation : McpInstallation ): string => {
117+ const type = getServerSourceType (installation )
118+ if (type === ' github' ) return t (' mcpCatalog.source.github' )
119+ if (type === ' remote' ) return t (' mcpCatalog.source.remote' )
120+ return t (' mcpCatalog.source.catalog' )
121+ }
122+
123+ // Helper to extract GitHub repo name from URL
124+ const getGitHubRepoName = (repositoryUrl : string | null | undefined ): string | null => {
125+ if (! repositoryUrl ) return null
126+ // Extract "owner/repo" from "https://github.com/owner/repo.git"
127+ const match = repositoryUrl .match (/ github\. com\/ ([^ \/ ] + \/ [^ \/\. ] + )/ )
128+ return match ?.[1 ] ?? null
129+ }
130+
108131const handleViewInstallation = (installationId : string ) => {
109132 router .push (` /mcp-server/installation/${installationId } ` )
110133}
@@ -246,14 +269,19 @@ onUnmounted(() => {
246269 class =" shrink-0 hidden sm:flex"
247270 />
248271
249- <dl class =" flex-1 grid grid-cols-2 gap-x-8 gap-y-1 text-xs/5 text-gray-500 sm:grid-cols-3" >
250- <div >
251- <dt class =" font-medium text-gray-700" >Satellite </dt >
252- <dd >{{ installation.installation_type }}</dd >
272+ <dl class =" flex-1 grid grid-cols-2 gap-x-8 gap-y-1 text-xs/5 text-gray-500 sm:grid-cols-3 items-start " >
273+ <div class = " flex flex-col " >
274+ <dt class =" font-medium text-gray-700 leading-5 " >{{ t('mcpCatalog.source.label') }} </dt >
275+ <dd class = " leading-5 " >{{ getSourceLabel( installation) }}</dd >
253276 </div >
254- <div >
255- <dt class =" font-medium text-gray-700" >{{ t('mcpInstallations.table.columns.category') }}</dt >
256- <dd >
277+ <div class =" flex flex-col" >
278+ <dt class =" font-medium text-gray-700 leading-5" >
279+ {{ getServerSourceType(installation) === 'github' ? t('mcpCatalog.repository.label') : t('mcpInstallations.table.columns.category') }}
280+ </dt >
281+ <dd v-if =" getServerSourceType(installation) === 'github'" class =" leading-5" >
282+ {{ getGitHubRepoName(installation.server?.repository_url) || 'N/A' }}
283+ </dd >
284+ <dd v-else class =" leading-5" >
257285 <CategoryDisplay
258286 :category-id =" installation.server?.category_id"
259287 :show-not-provided =" true"
@@ -262,9 +290,9 @@ onUnmounted(() => {
262290 />
263291 </dd >
264292 </div >
265- <div >
266- <dt class =" font-medium text-gray-700" >{{ t('mcpInstallations.table.columns.runtime') }}</dt >
267- <dd >{{ installation.server?.runtime }}</dd >
293+ <div class = " flex flex-col " >
294+ <dt class =" font-medium text-gray-700 leading-5 " >{{ t('mcpInstallations.table.columns.runtime') }}</dt >
295+ <dd class = " leading-5 " >{{ installation.server?.runtime }}</dd >
268296 </div >
269297 </dl >
270298 </div >
@@ -273,7 +301,7 @@ onUnmounted(() => {
273301 <div
274302 class =" flex shrink-0 items-center gap-x-4"
275303 >
276- <div class =" hidden sm:flex sm:flex-col sm:items-end" >
304+ <div class =" hidden sm:flex sm:flex-col sm:items-end sm:min-w-[140px] " >
277305 <InstallationStatusBadge
278306 :status-data =" installation.status ? {
279307 installation_id: installation.id,
0 commit comments