Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion mcp-registry/schema/server-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -292,9 +292,12 @@
"is_official": {
"type": "boolean"
},
"is_archived": {
"type": "boolean"
},
"docker_url": {
"type": "string",
"description": "URL to the Docker Hub page for this server, empty if not available"
}
}
}
}
3 changes: 2 additions & 1 deletion mcp-registry/servers/aws-kb-retrieval.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,5 +102,6 @@
}
],
"is_official": true,
"is_archived": true,
"docker_url": "https://hub.docker.com/r/mcp/aws-kb-retrieval-server"
}
}
3 changes: 2 additions & 1 deletion mcp-registry/servers/brave-search.json
Original file line number Diff line number Diff line change
Expand Up @@ -117,5 +117,6 @@
}
],
"is_official": true,
"is_archived": true,
"docker_url": "https://hub.docker.com/r/mcp/brave-search"
}
}
3 changes: 2 additions & 1 deletion mcp-registry/servers/everart.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,5 +83,6 @@
}
],
"is_official": true,
"is_archived": true,
"docker_url": "https://hub.docker.com/r/mcp/everart"
}
}
3 changes: 2 additions & 1 deletion mcp-registry/servers/git.json
Original file line number Diff line number Diff line change
Expand Up @@ -299,5 +299,6 @@
}
],
"is_official": true,
"is_archived": true,
"docker_url": "https://hub.docker.com/r/mcp/git"
}
}
3 changes: 2 additions & 1 deletion mcp-registry/servers/github.json
Original file line number Diff line number Diff line change
Expand Up @@ -1039,5 +1039,6 @@
}
],
"is_official": true,
"is_archived": true,
"docker_url": "https://hub.docker.com/r/mcp/github"
}
}
3 changes: 2 additions & 1 deletion mcp-registry/servers/gitlab.json
Original file line number Diff line number Diff line change
Expand Up @@ -366,5 +366,6 @@
}
],
"is_official": true,
"is_archived": true,
"docker_url": "https://hub.docker.com/r/mcp/gitlab"
}
}
3 changes: 2 additions & 1 deletion mcp-registry/servers/google-drive.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,6 @@
}
],
"is_official": true,
"is_archived": true,
"docker_url": "https://hub.docker.com/r/mcp/gdrive"
}
}
3 changes: 2 additions & 1 deletion mcp-registry/servers/google-maps.json
Original file line number Diff line number Diff line change
Expand Up @@ -240,5 +240,6 @@
}
],
"is_official": true,
"is_archived": true,
"docker_url": "https://hub.docker.com/r/mcp/google-maps"
}
}
3 changes: 2 additions & 1 deletion mcp-registry/servers/postgresql.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,5 +55,6 @@
}
}
],
"is_official": true
"is_official": true,
"is_archived": true
}
3 changes: 2 additions & 1 deletion mcp-registry/servers/puppeteer.json
Original file line number Diff line number Diff line change
Expand Up @@ -180,5 +180,6 @@
}
],
"is_official": true,
"is_archived": true,
"docker_url": "https://hub.docker.com/r/mcp/puppeteer"
}
}
3 changes: 2 additions & 1 deletion mcp-registry/servers/sentry.json
Original file line number Diff line number Diff line change
Expand Up @@ -85,5 +85,6 @@
}
}
],
"is_official": true
"is_official": true,
"is_archived": true
}
3 changes: 2 additions & 1 deletion mcp-registry/servers/slack.json
Original file line number Diff line number Diff line change
Expand Up @@ -239,5 +239,6 @@
}
}
],
"is_official": true
"is_official": true,
"is_archived": true
}
3 changes: 2 additions & 1 deletion mcp-registry/servers/sqlite.json
Original file line number Diff line number Diff line change
Expand Up @@ -132,5 +132,6 @@
}
}
],
"is_official": true
"is_official": true,
"is_archived": true
}
72 changes: 54 additions & 18 deletions pages/registry/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,16 @@
<meta property="og:type" content="website">
<meta property="og:url" content="https://mcpm.sh/registry/">
<meta property="og:title" content="mcpm.sh - Server Registry">
<meta property="og:description" content="The single open source MCP registry we all need. Discover and explore MCP servers for your projects.">
<meta property="og:description"
content="The single open source MCP registry we all need. Discover and explore MCP servers for your projects.">
<meta property="og:image" content="https://mcpm.sh/assets/images/mcpm-social.png">

<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="https://mcpm.sh/registry/">
<meta property="twitter:title" content="mcpm.sh - Server Registry">
<meta property="twitter:description" content="The single open source MCP registry we all need. Discover and explore MCP servers for your projects.">
<meta property="twitter:description"
content="The single open source MCP registry we all need. Discover and explore MCP servers for your projects.">
<meta property="twitter:image" content="https://mcpm.sh/assets/images/mcpm-social.png">

<link rel="preconnect" href="https://fonts.googleapis.com">
Expand Down Expand Up @@ -1122,18 +1124,27 @@
}

/* Lists Styling */
.argument-list, .tool-list, .resource-list, .prompt-list {
.argument-list,
.tool-list,
.resource-list,
.prompt-list {
font-size: 0.8rem;
color: var(--secondary);
}

.argument-list ul, .tool-list ul, .resource-list ul, .prompt-list ul {
.argument-list ul,
.tool-list ul,
.resource-list ul,
.prompt-list ul {
margin: 0;
padding-left: 1.5rem;
list-style-type: none;
}

.argument-list li, .tool-list li, .resource-list li, .prompt-list li {
.argument-list li,
.tool-list li,
.resource-list li,
.prompt-list li {
margin-bottom: 0.25rem;
}

Expand All @@ -1142,18 +1153,18 @@
margin: 0.5rem 0;
}

details > summary {
details>summary {
cursor: pointer;
color: var(--accent-color);
font-weight: 600;
margin-bottom: 0.5rem;
}

details > summary:hover {
details>summary:hover {
color: var(--accent-highlight);
}

details > ul {
details>ul {
margin-left: 1rem !important;
padding: 0.5rem 0 0.5rem 1rem !important;
border-left: 2px solid var(--border);
Expand All @@ -1178,23 +1189,27 @@
}

/* Links */
.detail-value a, .meta-value a {
.detail-value a,
.meta-value a {
color: var(--accent-color);
text-decoration: none;
}

.detail-value a:hover, .meta-value a:hover {
.detail-value a:hover,
.meta-value a:hover {
text-decoration: underline;
}

/* Tags and Categories */
#detailCategories, #detailTags {
#detailCategories,
#detailTags {
display: flex;
flex-wrap: wrap;
gap: 0.25rem;
}

#detailCategories .category, #detailTags .tag {
#detailCategories .category,
#detailTags .tag {
display: inline-flex;
align-items: center;
padding: 0.1rem 0.3rem;
Expand Down Expand Up @@ -1239,6 +1254,20 @@
letter-spacing: 0.5px;
}

.archived-badge {
display: inline-block;
padding: 2px 6px;
background-color: #60491a;
color: var(--text-secondary);
font-size: 0.7rem;
font-weight: 600;
border-radius: 2px;
margin-left: 8px;
vertical-align: middle;
text-transform: uppercase;
letter-spacing: 0.5px;
}

.docker-icon {
display: inline-block;
margin-left: 8px;
Expand Down Expand Up @@ -1266,15 +1295,15 @@ <h1>MCP Server Registry</h1>
<p class="subtitle">The single open source MCP registry we all need.</p>

<div class="tabs">
<button class="tab-button active" data-tab="registry"><svg xmlns="http://www.w3.org/2000/svg" width="16"
height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round" style="margin-right: 5px; vertical-align: -3px;">
<button class="tab-button active" data-tab="registry"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" style="margin-right: 5px; vertical-align: -3px;">
<circle cx="12" cy="7" r="4"></circle>
<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path>
</svg> GUI</button>
<button class="tab-button" data-tab="json"><svg xmlns="http://www.w3.org/2000/svg" width="16"
height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
stroke-linecap="round" stroke-linejoin="round" style="margin-right: 5px; vertical-align: -3px;">
<button class="tab-button" data-tab="json"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" style="margin-right: 5px; vertical-align: -3px;">
<rect x="3" y="11" width="18" height="10" rx="2" ry="2"></rect>
<circle cx="12" cy="5" r="2"></circle>
<path d="M12 7v4"></path>
Expand Down Expand Up @@ -1905,6 +1934,13 @@ <h3>Raw Manifest:</h3>
heading.appendChild(officialBadge);
}

if (server.is_archived) {
const archivedBadge = document.createElement('span');
archivedBadge.className = 'archived-badge';
archivedBadge.textContent = 'Archived';
heading.appendChild(archivedBadge);
}

serverHeader.appendChild(heading);

// Add placeholder for GitHub stars in the header
Expand Down
27 changes: 19 additions & 8 deletions src/mcpm/commands/info.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,21 +27,24 @@ def info(server_name):
mcpm info github # Show details for the GitHub server
mcpm info pinecone # Show details for the Pinecone server
"""
console.print(f"[bold green]Showing information for MCP server:[/] [bold cyan]{server_name}[/]")
console.print(
f"[bold green]Showing information for MCP server:[/] [bold cyan]{server_name}[/]")

try:
# Get the server information
server = repo_manager.get_server_metadata(server_name)

if not server:
console.print(f"[yellow]Server '[bold]{server_name}[/]' not found.[/]")
console.print(
f"[yellow]Server '[bold]{server_name}[/]' not found.[/]")
return

# Display detailed information for this server
_display_server_info(server)

except Exception as e:
print_error(f"Error retrieving information for server '{server_name}'", str(e))
print_error(
f"Error retrieving information for server '{server_name}'", str(e))


def _display_server_info(server):
Expand All @@ -52,6 +55,7 @@ def _display_server_info(server):
description = server.get("description", "No description")
license_info = server.get("license", "Unknown")
is_official = server.get("is_official", False)
is_archived = server.get("is_archived", False)

# Get author info
author_info = server.get("author", {})
Expand Down Expand Up @@ -80,9 +84,12 @@ def _display_server_info(server):
console.print(f"Tags: {', '.join(tags)}")
if package:
console.print(f"Package: {package}")
console.print(f"Author: {author_name}" + (f" ({author_email})" if author_email else ""))
console.print(f"Author: {author_name}" +
(f" ({author_email})" if author_email else ""))
console.print(f"License: {license_info}")
console.print(f"Official: {is_official}")
if is_archived:
console.print(f"Archived: {is_archived}")
console.print("")

# URLs section
Expand Down Expand Up @@ -114,10 +121,13 @@ def _display_server_info(server):
console.print("[bold yellow]Installation Details:[/]")
for method_name, method in installations.items():
method_type = method.get("type", "unknown")
description = method.get("description", f"{method_type} installation")
recommended = " [green](recommended)[/]" if method.get("recommended", False) else ""
description = method.get(
"description", f"{method_type} installation")
recommended = " [green](recommended)[/]" if method.get(
"recommended", False) else ""

console.print(f"[cyan]{method_type}[/]: {description}{recommended}")
console.print(
f"[cyan]{method_type}[/]: {description}{recommended}")

# Show command if available
if "command" in method:
Expand All @@ -136,7 +146,8 @@ def _display_server_info(server):
if env_vars:
console.print("Environment Variables:")
for key, value in env_vars.items():
console.print(f' [bold blue]{key}[/] = [green]"{value}"[/]')
console.print(
f' [bold blue]{key}[/] = [green]"{value}"[/]')
console.print("")

# Examples section
Expand Down
Loading