catalog: pin exact package versions, drop firecrawl, add last_release
CI / Tests (py3.12 / windows-latest) (pull_request) Failing after 16s
CI / Lint (ruff) (pull_request) Successful in 52s
CI / Tests (py3.10 / ubuntu-latest) (pull_request) Successful in 12s
CI / Tests (py3.12 / ubuntu-latest) (pull_request) Successful in 14s
CI / Tests (py3.13 / ubuntu-latest) (pull_request) Successful in 14s

- Pin every basic-tier entry to an exact published version (npm @x.y.z,
  uvx @x.y.z, docker :tag). Unpinned npx -y <pkg> means a package
  compromised AFTER we ship auto-upgrades into every user; a pin bounds
  supply-chain compromise to versions we actually reviewed.
- Drop firecrawl from the seed (19 entries). npm publish rights are held
  solely by hello_sideguide/sideguide.dev, which has no visible
  relationship to firecrawl.dev, while the package is presented as
  official. Publisher identity we cannot tie to the vendor is exactly
  what this catalog must not execute on a user's machine. Retained in the
  research pool pending confirmation.
- postgres: ship --access-mode=restricted, not unrestricted. A curated
  catalog must not default to handing an LLM write access to your DB.
- Add last_release (ISO date, from the live registry) so the UI can show
  freshness; postgres-mcp and mcp-obsidian are both ~14mo stale.
This commit is contained in:
the_og
2026-07-12 17:35:48 -04:00
parent 48904c7787
commit 88e93edc6c
+54 -62
View File
@@ -2,6 +2,7 @@
"schema": 1, "schema": 1,
"version": 1, "version": 1,
"updated": "2026-07-12", "updated": "2026-07-12",
"signed_at": "2026-07-12T21:35:19Z",
"servers": [ "servers": [
{ {
"id": "filesystem", "id": "filesystem",
@@ -16,7 +17,7 @@
"command": "npx", "command": "npx",
"args": [ "args": [
"-y", "-y",
"@modelcontextprotocol/server-filesystem", "@modelcontextprotocol/server-filesystem@2026.7.10",
"<ALLOWED_DIR>" "<ALLOWED_DIR>"
] ]
}, },
@@ -25,7 +26,8 @@
}, },
"env_required": {}, "env_required": {},
"docs_url": "https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem", "docs_url": "https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem",
"notes": "Part of the official modelcontextprotocol/servers reference monorepo (star count is for the whole repo). Clients that support MCP 'roots' can also grant directories dynamically instead of via args." "notes": "Part of the official modelcontextprotocol/servers reference monorepo (star count is for the whole repo). Clients that support MCP 'roots' can also grant directories dynamically instead of via args.",
"last_release": "2026-07-10"
}, },
{ {
"id": "fetch", "id": "fetch",
@@ -39,13 +41,14 @@
"config": { "config": {
"command": "uvx", "command": "uvx",
"args": [ "args": [
"mcp-server-fetch" "mcp-server-fetch@2026.7.10"
] ]
}, },
"placeholders": {}, "placeholders": {},
"env_required": {}, "env_required": {},
"docs_url": "https://github.com/modelcontextprotocol/servers/tree/main/src/fetch", "docs_url": "https://github.com/modelcontextprotocol/servers/tree/main/src/fetch",
"notes": "Can access local/internal IPs, so treat as a mild security risk on untrusted networks. Add '--ignore-robots-txt' or '--user-agent=...' as extra args if needed." "notes": "Can access local/internal IPs, so treat as a mild security risk on untrusted networks. Add '--ignore-robots-txt' or '--user-agent=...' as extra args if needed.",
"last_release": "2026-07-10"
}, },
{ {
"id": "memory", "id": "memory",
@@ -60,13 +63,14 @@
"command": "npx", "command": "npx",
"args": [ "args": [
"-y", "-y",
"@modelcontextprotocol/server-memory" "@modelcontextprotocol/server-memory@2026.7.4"
] ]
}, },
"placeholders": {}, "placeholders": {},
"env_required": {}, "env_required": {},
"docs_url": "https://github.com/modelcontextprotocol/servers/tree/main/src/memory", "docs_url": "https://github.com/modelcontextprotocol/servers/tree/main/src/memory",
"notes": "Stores entities/relations as a local JSON knowledge graph (path configurable via MEMORY_FILE_PATH env var)." "notes": "Stores entities/relations as a local JSON knowledge graph (path configurable via MEMORY_FILE_PATH env var).",
"last_release": "2026-07-04"
}, },
{ {
"id": "sequential-thinking", "id": "sequential-thinking",
@@ -81,13 +85,14 @@
"command": "npx", "command": "npx",
"args": [ "args": [
"-y", "-y",
"@modelcontextprotocol/server-sequential-thinking" "@modelcontextprotocol/server-sequential-thinking@2026.7.4"
] ]
}, },
"placeholders": {}, "placeholders": {},
"env_required": {}, "env_required": {},
"docs_url": "https://github.com/modelcontextprotocol/servers/tree/main/src/sequentialthinking", "docs_url": "https://github.com/modelcontextprotocol/servers/tree/main/src/sequentialthinking",
"notes": "Set DISABLE_THOUGHT_LOGGING=true to stop it from printing each thought step to the console." "notes": "Set DISABLE_THOUGHT_LOGGING=true to stop it from printing each thought step to the console.",
"last_release": "2026-07-04"
}, },
{ {
"id": "git", "id": "git",
@@ -101,7 +106,7 @@
"config": { "config": {
"command": "uvx", "command": "uvx",
"args": [ "args": [
"mcp-server-git", "mcp-server-git@2026.7.10",
"--repository", "--repository",
"<REPO_PATH>" "<REPO_PATH>"
] ]
@@ -111,7 +116,8 @@
}, },
"env_required": {}, "env_required": {},
"docs_url": "https://github.com/modelcontextprotocol/servers/tree/main/src/git", "docs_url": "https://github.com/modelcontextprotocol/servers/tree/main/src/git",
"notes": "Operates on a local checkout only; it does not talk to GitHub/GitLab APIs (pair with the GitHub or GitLab server for that)." "notes": "Operates on a local checkout only; it does not talk to GitHub/GitLab APIs (pair with the GitHub or GitLab server for that).",
"last_release": "2026-07-10"
}, },
{ {
"id": "github", "id": "github",
@@ -130,7 +136,7 @@
"--rm", "--rm",
"-e", "-e",
"GITHUB_PERSONAL_ACCESS_TOKEN", "GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server" "ghcr.io/github/github-mcp-server:v1.0.1"
] ]
}, },
"placeholders": {}, "placeholders": {},
@@ -152,13 +158,14 @@
"config": { "config": {
"command": "npx", "command": "npx",
"args": [ "args": [
"@playwright/mcp@latest" "@playwright/mcp@0.0.78"
] ]
}, },
"placeholders": {}, "placeholders": {},
"env_required": {}, "env_required": {},
"docs_url": "https://github.com/microsoft/playwright-mcp#readme", "docs_url": "https://github.com/microsoft/playwright-mcp#readme",
"notes": "Maintained by the Playwright team at Microsoft. Add '--isolated' for a throwaway profile, or '--browser firefox|webkit|msedge' to change engine. A persistent browser profile is used by default so logins carry over between sessions." "notes": "Maintained by the Playwright team at Microsoft. Add '--isolated' for a throwaway profile, or '--browser firefox|webkit|msedge' to change engine. A persistent browser profile is used by default so logins carry over between sessions.",
"last_release": "2026-07-09"
}, },
{ {
"id": "chrome-devtools", "id": "chrome-devtools",
@@ -173,13 +180,14 @@
"command": "npx", "command": "npx",
"args": [ "args": [
"-y", "-y",
"chrome-devtools-mcp@latest" "chrome-devtools-mcp@1.5.0"
] ]
}, },
"placeholders": {}, "placeholders": {},
"env_required": {}, "env_required": {},
"docs_url": "https://github.com/ChromeDevTools/chrome-devtools-mcp#readme", "docs_url": "https://github.com/ChromeDevTools/chrome-devtools-mcp#readme",
"notes": "Maintained by the Google Chrome DevTools team; only officially supports Google Chrome / Chrome for Testing. Exposes the browser's content to the MCP client, so avoid sensitive sites while connected. Add '--slim --headless' for a minimal 3-tool basic-automation mode." "notes": "Maintained by the Google Chrome DevTools team; only officially supports Google Chrome / Chrome for Testing. Exposes the browser's content to the MCP client, so avoid sensitive sites while connected. Add '--slim --headless' for a minimal 3-tool basic-automation mode.",
"last_release": "2026-07-03"
}, },
{ {
"id": "postgres", "id": "postgres",
@@ -193,8 +201,8 @@
"config": { "config": {
"command": "uvx", "command": "uvx",
"args": [ "args": [
"postgres-mcp", "postgres-mcp@0.3.0",
"--access-mode=unrestricted" "--access-mode=restricted"
] ]
}, },
"placeholders": {}, "placeholders": {},
@@ -202,7 +210,8 @@
"DATABASE_URI": "" "DATABASE_URI": ""
}, },
"docs_url": "https://github.com/crystaldba/postgres-mcp#readme", "docs_url": "https://github.com/crystaldba/postgres-mcp#readme",
"notes": "The official reference Postgres server was archived by the MCP team; this community server (Crystal DBA) is the most capable/most-referenced replacement, adding index tuning and EXPLAIN-plan analysis. Use --access-mode=restricted for read-only/production use. Docker image also available (crystaldba/postgres-mcp)." "notes": "The official reference Postgres server was archived by the MCP team; this community server (Crystal DBA) is the most capable/most-referenced replacement, adding index tuning and EXPLAIN-plan analysis. Use --access-mode=restricted for read-only/production use. Docker image also available (crystaldba/postgres-mcp). Catalog ships --access-mode=restricted (read-only); switch to unrestricted yourself if you want writes.",
"last_release": "2025-05-16"
}, },
{ {
"id": "n8n", "id": "n8n",
@@ -216,7 +225,7 @@
"config": { "config": {
"command": "npx", "command": "npx",
"args": [ "args": [
"n8n-mcp" "n8n-mcp@2.63.2"
] ]
}, },
"placeholders": {}, "placeholders": {},
@@ -226,7 +235,8 @@
"N8N_API_KEY": "" "N8N_API_KEY": ""
}, },
"docs_url": "https://github.com/czlonkowski/n8n-mcp", "docs_url": "https://github.com/czlonkowski/n8n-mcp",
"notes": "Set MCP_MODE=stdio (required for Claude Desktop, prevents debug logs from breaking the protocol). N8N_API_URL/N8N_API_KEY are optional \u2014 without them you still get full node documentation, validation, and template search; with them you get live workflow create/update/execute against your own n8n instance. A hosted free-tier alternative exists at dashboard.n8n-mcp.com." "notes": "Set MCP_MODE=stdio (required for Claude Desktop, prevents debug logs from breaking the protocol). N8N_API_URL/N8N_API_KEY are optional without them you still get full node documentation, validation, and template search; with them you get live workflow create/update/execute against your own n8n instance. A hosted free-tier alternative exists at dashboard.n8n-mcp.com.",
"last_release": "2026-07-09"
}, },
{ {
"id": "notion", "id": "notion",
@@ -241,7 +251,7 @@
"command": "npx", "command": "npx",
"args": [ "args": [
"-y", "-y",
"@notionhq/notion-mcp-server" "@notionhq/notion-mcp-server@2.4.1"
] ]
}, },
"placeholders": {}, "placeholders": {},
@@ -249,7 +259,8 @@
"NOTION_TOKEN": "" "NOTION_TOKEN": ""
}, },
"docs_url": "https://developers.notion.com/docs/mcp", "docs_url": "https://developers.notion.com/docs/mcp",
"notes": "Notion is prioritizing its hosted remote MCP (OAuth, https://mcp.notion.com/mcp) and may eventually sunset this local package, but the stdio server still works today and is the simplest way to get a static config with an internal-integration token." "notes": "Notion is prioritizing its hosted remote MCP (OAuth, https://mcp.notion.com/mcp) and may eventually sunset this local package, but the stdio server still works today and is the simplest way to get a static config with an internal-integration token.",
"last_release": "2026-06-22"
}, },
{ {
"id": "obsidian", "id": "obsidian",
@@ -263,7 +274,7 @@
"config": { "config": {
"command": "uvx", "command": "uvx",
"args": [ "args": [
"mcp-obsidian" "mcp-obsidian@0.2.2"
] ]
}, },
"placeholders": {}, "placeholders": {},
@@ -273,7 +284,8 @@
"OBSIDIAN_PORT": "" "OBSIDIAN_PORT": ""
}, },
"docs_url": "https://github.com/MarkusPfundstein/mcp-obsidian", "docs_url": "https://github.com/MarkusPfundstein/mcp-obsidian",
"notes": "Requires the Obsidian Local REST API community plugin installed and enabled in Obsidian; copy the API key from the plugin settings. OBSIDIAN_HOST defaults to 127.0.0.1 and OBSIDIAN_PORT to 27124 if omitted." "notes": "Requires the Obsidian Local REST API community plugin installed and enabled in Obsidian; copy the API key from the plugin settings. OBSIDIAN_HOST defaults to 127.0.0.1 and OBSIDIAN_PORT to 27124 if omitted.",
"last_release": "2025-04-01"
}, },
{ {
"id": "brave-search", "id": "brave-search",
@@ -288,7 +300,7 @@
"command": "npx", "command": "npx",
"args": [ "args": [
"-y", "-y",
"@brave/brave-search-mcp-server", "@brave/brave-search-mcp-server@2.0.85",
"--transport", "--transport",
"stdio" "stdio"
] ]
@@ -298,7 +310,8 @@
"BRAVE_API_KEY": "" "BRAVE_API_KEY": ""
}, },
"docs_url": "https://github.com/brave/brave-search-mcp-server", "docs_url": "https://github.com/brave/brave-search-mcp-server",
"notes": "Official Brave server; replaced the old archived modelcontextprotocol/servers brave-search entry (now in modelcontextprotocol/servers-archived). Get an API key from the Brave Search API dashboard." "notes": "Official Brave server; replaced the old archived modelcontextprotocol/servers brave-search entry (now in modelcontextprotocol/servers-archived). Get an API key from the Brave Search API dashboard.",
"last_release": "2026-06-15"
}, },
{ {
"id": "tavily", "id": "tavily",
@@ -312,8 +325,7 @@
"config": { "config": {
"command": "npx", "command": "npx",
"args": [ "args": [
"-y", "tavily-mcp@0.2.21"
"tavily-mcp@latest"
] ]
}, },
"placeholders": {}, "placeholders": {},
@@ -321,30 +333,8 @@
"TAVILY_API_KEY": "" "TAVILY_API_KEY": ""
}, },
"docs_url": "https://github.com/tavily-ai/tavily-mcp", "docs_url": "https://github.com/tavily-ai/tavily-mcp",
"notes": "Tavily also offers a hosted remote MCP endpoint (mcp.tavily.com) with OAuth as an alternative to running the local npx server." "notes": "Tavily also offers a hosted remote MCP endpoint (mcp.tavily.com) with OAuth as an alternative to running the local npx server.",
}, "last_release": "2026-07-10"
{
"id": "firecrawl",
"display": "Firecrawl",
"description": "Turn any website into clean, LLM-ready data with scraping, crawling, and search tools.",
"category": "search",
"homepage": "https://github.com/firecrawl/firecrawl-mcp-server",
"stars": 6924,
"official": true,
"setup": "basic",
"config": {
"command": "npx",
"args": [
"-y",
"firecrawl-mcp"
]
},
"placeholders": {},
"env_required": {
"FIRECRAWL_API_KEY": ""
},
"docs_url": "https://github.com/firecrawl/firecrawl-mcp-server",
"notes": "Repo moved from mendableai/firecrawl-mcp-server to firecrawl/firecrawl-mcp-server. A keyless free tier works for scrape/search with rate limits; set FIRECRAWL_API_URL instead of the key to point at a self-hosted Firecrawl instance."
}, },
{ {
"id": "home-assistant", "id": "home-assistant",
@@ -365,7 +355,7 @@
"HA_URL", "HA_URL",
"-e", "-e",
"HA_TOKEN", "HA_TOKEN",
"voska/hass-mcp" "voska/hass-mcp:0.5.0"
] ]
}, },
"placeholders": {}, "placeholders": {},
@@ -379,7 +369,7 @@
{ {
"id": "kubernetes", "id": "kubernetes",
"display": "Kubernetes", "display": "Kubernetes",
"description": "Lets Claude inspect and manage Kubernetes/OpenShift resources \u2014 pods, deployments, logs, Helm releases \u2014 using your local kubeconfig.", "description": "Lets Claude inspect and manage Kubernetes/OpenShift resources pods, deployments, logs, Helm releases using your local kubeconfig.",
"category": "infra", "category": "infra",
"homepage": "https://github.com/containers/kubernetes-mcp-server", "homepage": "https://github.com/containers/kubernetes-mcp-server",
"stars": 1626, "stars": 1626,
@@ -389,13 +379,14 @@
"command": "npx", "command": "npx",
"args": [ "args": [
"-y", "-y",
"kubernetes-mcp-server@latest" "kubernetes-mcp-server@0.0.64"
] ]
}, },
"placeholders": {}, "placeholders": {},
"env_required": {}, "env_required": {},
"docs_url": "https://github.com/containers/kubernetes-mcp-server#readme", "docs_url": "https://github.com/containers/kubernetes-mcp-server#readme",
"notes": "Not an official Kubernetes SIG project, but a Go-native (no kubectl dependency) implementation maintained under the 'containers' GitHub org (Podman/Red Hat-adjacent) that's widely regarded as the most capable K8s MCP server, supporting Kubernetes and OpenShift. Uses your existing ~/.kube/config automatically; add --read-only to prevent writes." "notes": "Not an official Kubernetes SIG project, but a Go-native (no kubectl dependency) implementation maintained under the 'containers' GitHub org (Podman/Red Hat-adjacent) that's widely regarded as the most capable K8s MCP server, supporting Kubernetes and OpenShift. Uses your existing ~/.kube/config automatically; add --read-only to prevent writes.",
"last_release": "2026-07-10"
}, },
{ {
"id": "aws-api-mcp-server", "id": "aws-api-mcp-server",
@@ -409,13 +400,14 @@
"config": { "config": {
"command": "uvx", "command": "uvx",
"args": [ "args": [
"awslabs.aws-api-mcp-server@latest" "awslabs.aws-api-mcp-server@1.3.46"
] ]
}, },
"placeholders": {}, "placeholders": {},
"env_required": {}, "env_required": {},
"docs_url": "https://awslabs.github.io/mcp/servers/aws-api-mcp-server", "docs_url": "https://awslabs.github.io/mcp/servers/aws-api-mcp-server",
"notes": "AWS credentials are NOT set in this MCP config \u2014 configure them beforehand via `aws configure` (or set AWS_API_MCP_PROFILE_NAME to pick a named profile) so boto3's standard credential chain can find them. Optional env vars: AWS_REGION (default us-east-1), READ_OPERATIONS_ONLY=true to block all mutating AWS calls. AWS notes this server is being superseded by a newer unified AWS MCP server referenced in their agent-toolkit docs." "notes": "AWS credentials are NOT set in this MCP config configure them beforehand via `aws configure` (or set AWS_API_MCP_PROFILE_NAME to pick a named profile) so boto3's standard credential chain can find them. Optional env vars: AWS_REGION (default us-east-1), READ_OPERATIONS_ONLY=true to block all mutating AWS calls. AWS notes this server is being superseded by a newer unified AWS MCP server referenced in their agent-toolkit docs.",
"last_release": "2026-06-25"
}, },
{ {
"id": "grafana", "id": "grafana",
@@ -429,7 +421,7 @@
"config": { "config": {
"command": "uvx", "command": "uvx",
"args": [ "args": [
"mcp-grafana" "mcp-grafana@0.17.1"
], ],
"env": { "env": {
"GRAFANA_URL": "<GRAFANA_URL>" "GRAFANA_URL": "<GRAFANA_URL>"
@@ -442,7 +434,8 @@
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "" "GRAFANA_SERVICE_ACCOUNT_TOKEN": ""
}, },
"docs_url": "https://grafana.com/docs/grafana/latest/developer-resources/mcp/", "docs_url": "https://grafana.com/docs/grafana/latest/developer-resources/mcp/",
"notes": "Requires Grafana 9.0+ for full functionality \u2014 datasource-related tools may not work correctly on older versions." "notes": "Requires Grafana 9.0+ for full functionality datasource-related tools may not work correctly on older versions.",
"last_release": "2026-07-07"
}, },
{ {
"id": "slack", "id": "slack",
@@ -457,6 +450,5 @@
"docs_url": "https://docs.slack.dev/changelog/2026/02/17/slack-mcp/", "docs_url": "https://docs.slack.dev/changelog/2026/02/17/slack-mcp/",
"notes": "Slack's own MCP server went GA Feb 17, 2026 (streamable HTTP at https://mcp.slack.com/mcp, OAuth). No stdio one-liner is published because it's a hosted, permissioned connector. A well-known community alternative, korotovsky/slack-mcp-server (~1.6k GitHub stars, MIT, not an official Slack product), supports stdio/SSE/HTTP with bot or browser-session tokens and no app-install requirement if a stdio option is preferred." "notes": "Slack's own MCP server went GA Feb 17, 2026 (streamable HTTP at https://mcp.slack.com/mcp, OAuth). No stdio one-liner is published because it's a hosted, permissioned connector. A well-known community alternative, korotovsky/slack-mcp-server (~1.6k GitHub stars, MIT, not an official Slack product), supports stdio/SSE/HTTP with bot or browser-session tokens and no app-install requirement if a stdio option is preferred."
} }
], ]
"signed_at": "2026-07-12T00:00:00Z"
} }