mirror of
https://github.com/anthropics/claude-plugins-official.git
synced 2026-05-20 05:12:40 +00:00
Compare commits
10 Commits
bump-box-p
...
tobin/manu
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c3b3f2960 | ||
|
|
237a6b9707 | ||
|
|
0c54d4ac15 | ||
|
|
61b760aafc | ||
|
|
f475d3ce58 | ||
|
|
d7b273d2b4 | ||
|
|
b5a156b6ec | ||
|
|
32b176e6aa | ||
|
|
d8e4105231 | ||
|
|
5dbfa0fade |
@@ -19,7 +19,7 @@
|
||||
"url": "https://github.com/42Crunch-AI/claude-plugins.git",
|
||||
"path": "plugins/api-security-testing",
|
||||
"ref": "v1.0.1",
|
||||
"sha": "56273e0e20762d76640838300a7431c4260cad32"
|
||||
"sha": "faf5305385de8afed9468904e8639be737aff39e"
|
||||
},
|
||||
"homepage": "https://42crunch.com"
|
||||
},
|
||||
@@ -35,7 +35,7 @@
|
||||
"url": "https://github.com/adobe/skills.git",
|
||||
"path": "plugins/creative-cloud/adobe-for-creativity",
|
||||
"ref": "main",
|
||||
"sha": "0f1ad97af8b4de2107c2417184fc4c3114bda9d3"
|
||||
"sha": "9ca1da262869ca2fb5f6c3daae2f7eeb648c937d"
|
||||
},
|
||||
"homepage": "https://github.com/adobe/skills/tree/main/plugins/creative-cloud/adobe-for-creativity"
|
||||
},
|
||||
@@ -57,7 +57,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/SalesforceAIResearch/agentforce-adlc.git",
|
||||
"sha": "9ef4d9b1958d4ed21179017d0452a81ec13c1de2"
|
||||
"sha": "d645d2c8ce0689a568224436061872ab9f0ab179"
|
||||
},
|
||||
"homepage": "https://github.com/SalesforceAIResearch/agentforce-adlc"
|
||||
},
|
||||
@@ -77,7 +77,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/AikidoSec/aikido-claude-plugin.git",
|
||||
"sha": "5d9c13d367218e9b43a11d4502f623ab98859225"
|
||||
"sha": "79ac524f87c9faa9a356ff3d495b8a5b77e01bbd"
|
||||
},
|
||||
"homepage": "https://github.com/AikidoSec/aikido-claude-plugin"
|
||||
},
|
||||
@@ -107,7 +107,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/gemini-cli-extensions/alloydb.git",
|
||||
"sha": "0723d3ada808fe8f33e1b2808fd7a843c3d63ad2"
|
||||
"sha": "4a75653275b095fcacf1508796b0fee8cc758c07"
|
||||
},
|
||||
"homepage": "https://cloud.google.com/alloydb"
|
||||
},
|
||||
@@ -120,7 +120,7 @@
|
||||
"url": "https://github.com/awslabs/agent-plugins.git",
|
||||
"path": "plugins/amazon-location-service",
|
||||
"ref": "main",
|
||||
"sha": "6cfb70e55aa142a8eda66e6ef7966d5921bdf9a2"
|
||||
"sha": "95381e8bcb92f58a28edb4f83eb7e163c7461a0a"
|
||||
},
|
||||
"homepage": "https://github.com/awslabs/agent-plugins"
|
||||
},
|
||||
@@ -165,7 +165,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/astronomer/agents.git",
|
||||
"sha": "5935c4330dea4dfb8e93568956b10a543ecdb3d1"
|
||||
"sha": "535a040ca9e27aaed6da13f0f959625fb3294820"
|
||||
},
|
||||
"homepage": "https://github.com/astronomer/agents"
|
||||
},
|
||||
@@ -175,7 +175,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/atlanhq/agent-toolkit.git",
|
||||
"sha": "acdf284da6aa98b14f8dad90a9827006d8df425c"
|
||||
"sha": "790398c87378f128bdc74c31bb7ecfb8e4695f29"
|
||||
},
|
||||
"homepage": "https://docs.atlan.com/"
|
||||
},
|
||||
@@ -217,7 +217,7 @@
|
||||
"url": "https://github.com/auth0/agent-skills.git",
|
||||
"path": "plugins/auth0",
|
||||
"ref": "main",
|
||||
"sha": "f7724bf7984c5b00496cac0f54526bb1cf505dcb"
|
||||
"sha": "1c32754fcb934109451435ecd4a6ea9b068f0937"
|
||||
},
|
||||
"homepage": "https://auth0.com/docs/quickstart/agent-skills"
|
||||
},
|
||||
@@ -233,7 +233,7 @@
|
||||
"url": "https://github.com/aws/agent-toolkit-for-aws.git",
|
||||
"path": "plugins/aws-agents",
|
||||
"ref": "main",
|
||||
"sha": "750230758fbf23acd60d075dedd7ead4092127ce"
|
||||
"sha": "14780bf3440aa1532eadfbb2ff547f58969fcfb2"
|
||||
},
|
||||
"homepage": "https://github.com/aws/agent-toolkit-for-aws"
|
||||
},
|
||||
@@ -246,7 +246,7 @@
|
||||
"url": "https://github.com/awslabs/agent-plugins.git",
|
||||
"path": "plugins/aws-amplify",
|
||||
"ref": "main",
|
||||
"sha": "6cfb70e55aa142a8eda66e6ef7966d5921bdf9a2"
|
||||
"sha": "95381e8bcb92f58a28edb4f83eb7e163c7461a0a"
|
||||
},
|
||||
"homepage": "https://github.com/awslabs/agent-plugins"
|
||||
},
|
||||
@@ -262,7 +262,7 @@
|
||||
"url": "https://github.com/aws/agent-toolkit-for-aws.git",
|
||||
"path": "plugins/aws-core",
|
||||
"ref": "main",
|
||||
"sha": "750230758fbf23acd60d075dedd7ead4092127ce"
|
||||
"sha": "14780bf3440aa1532eadfbb2ff547f58969fcfb2"
|
||||
},
|
||||
"homepage": "https://github.com/aws/agent-toolkit-for-aws"
|
||||
},
|
||||
@@ -278,7 +278,7 @@
|
||||
"url": "https://github.com/aws/agent-toolkit-for-aws.git",
|
||||
"path": "plugins/aws-data-analytics",
|
||||
"ref": "main",
|
||||
"sha": "750230758fbf23acd60d075dedd7ead4092127ce"
|
||||
"sha": "14780bf3440aa1532eadfbb2ff547f58969fcfb2"
|
||||
},
|
||||
"homepage": "https://github.com/aws/agent-toolkit-for-aws"
|
||||
},
|
||||
@@ -307,7 +307,7 @@
|
||||
"url": "https://github.com/awslabs/agent-plugins.git",
|
||||
"path": "plugins/aws-serverless",
|
||||
"ref": "main",
|
||||
"sha": "6cfb70e55aa142a8eda66e6ef7966d5921bdf9a2"
|
||||
"sha": "95381e8bcb92f58a28edb4f83eb7e163c7461a0a"
|
||||
},
|
||||
"homepage": "https://github.com/awslabs/agent-plugins"
|
||||
},
|
||||
@@ -318,7 +318,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/microsoft/azure-skills.git",
|
||||
"sha": "ed25b85a13ec001c53f538b07e0bfbe732673885"
|
||||
"sha": "2a5c5080b8c501d00408eb00f7ee4ed8effa7b2c"
|
||||
},
|
||||
"homepage": "https://github.com/microsoft/azure-skills"
|
||||
},
|
||||
@@ -327,7 +327,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/AzureCosmosDB/cosmosdb-claude-code-plugin.git",
|
||||
"sha": "23c168856e4435793bd27a72d4714f022a3a1e90"
|
||||
"sha": "f1e0498579a9251e5f3179b92d25d6ce3409bae5"
|
||||
},
|
||||
"description": "Expert assistant for Azure Cosmos DB — data modeling, query optimization, performance tuning, and best practices.",
|
||||
"category": "database",
|
||||
@@ -340,7 +340,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/base44/skills.git",
|
||||
"sha": "c7039b37eca0e2916a565a7395040c00055bcf8b"
|
||||
"sha": "ec420cf2edd2c7e9a523d5afe2e71498a6357fa4"
|
||||
},
|
||||
"homepage": "https://docs.base44.com"
|
||||
},
|
||||
@@ -356,7 +356,7 @@
|
||||
"url": "https://github.com/Bigdata-com/bigdata-plugins-marketplace.git",
|
||||
"path": "plugins/bigdata-com",
|
||||
"ref": "main",
|
||||
"sha": "274b5365bdc61130225de736d3f3ca5210c0e37d"
|
||||
"sha": "c77a09caabdc8783adbcbf8bbe05a0f57da12b19"
|
||||
},
|
||||
"homepage": "https://docs.bigdata.com"
|
||||
},
|
||||
@@ -367,8 +367,15 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/box/box-for-ai.git",
|
||||
"sha": "0fb23244e3c35cd562206c80eff1e22c456046ea"
|
||||
"sha": "16f1a0427710b0812519ea634cd5ce6830bde8fc"
|
||||
},
|
||||
"skills": [
|
||||
"./skills/box",
|
||||
"./skills/box-legal-workflows",
|
||||
"./skills/box-legal-workflows-contract",
|
||||
"./skills/box-legal-workflows-intake",
|
||||
"./skills/box-legal-workflows-ma"
|
||||
],
|
||||
"homepage": "https://github.com/box/box-for-ai"
|
||||
},
|
||||
{
|
||||
@@ -377,10 +384,26 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/brightdata/skills.git",
|
||||
"sha": "44b24797d82cfd535c5b97831d5c6ba86c9d60df"
|
||||
"sha": "37145178dfc9b52e28dd224afeccc7184f7711fc"
|
||||
},
|
||||
"homepage": "https://docs.brightdata.com"
|
||||
},
|
||||
{
|
||||
"name": "carta-cap-table",
|
||||
"description": "Carta Cap Table plugin — skills and hooks for querying cap tables, grants, SAFEs, 409A valuations, waterfall scenarios, and more",
|
||||
"author": {
|
||||
"name": "Carta Engineering"
|
||||
},
|
||||
"category": "productivity",
|
||||
"source": {
|
||||
"source": "git-subdir",
|
||||
"url": "https://github.com/carta/plugins.git",
|
||||
"path": "plugins/carta-cap-table",
|
||||
"ref": "main",
|
||||
"sha": "980fd3966ec79b61ff94f39db4592f7df9d6ed80"
|
||||
},
|
||||
"homepage": "https://carta.com"
|
||||
},
|
||||
{
|
||||
"name": "cds-mcp",
|
||||
"description": "AI-assisted development of SAP Cloud Application Programming Model (CAP) projects. Search CDS models and CAP documentation.",
|
||||
@@ -404,7 +427,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/ChromeDevTools/chrome-devtools-mcp.git",
|
||||
"sha": "a1612be8e01401cf1711c64bc2ef5da5763ba956"
|
||||
"sha": "32dc50d59bdb87242c67391ddc755368ebe77104"
|
||||
},
|
||||
"homepage": "https://github.com/ChromeDevTools/chrome-devtools-mcp"
|
||||
},
|
||||
@@ -610,7 +633,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/CrowdStrike/foundry-skills.git",
|
||||
"sha": "e7fa0260b5a413d9a459d3afbc5ba427da6c6e04"
|
||||
"sha": "4b517aa5729d5bb5e397ff779f98eb05c91d1b21"
|
||||
},
|
||||
"homepage": "https://github.com/CrowdStrike/foundry-skills"
|
||||
},
|
||||
@@ -1365,7 +1388,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/PagerDuty/claude-code-plugins.git",
|
||||
"sha": "b16c23e0d790deceaa7a6182616d0e36673f2eae"
|
||||
"sha": "761cba75bd50fd561405c3b173ecf36084432089"
|
||||
},
|
||||
"homepage": "https://github.com/PagerDuty/claude-code-plugins"
|
||||
},
|
||||
@@ -1641,7 +1664,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/Digital-Process-Tools/claude-remember.git",
|
||||
"sha": "914445ac5f06a164800ea90ba4db41a0486321ae"
|
||||
"sha": "aa55ba3f553e23f4d84387f5d7ece1ba0ce68d93"
|
||||
},
|
||||
"homepage": "https://github.com/Digital-Process-Tools/claude-remember"
|
||||
},
|
||||
@@ -1710,7 +1733,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/sanity-io/agent-toolkit.git",
|
||||
"sha": "bc09fa9854507c538a856648aafbd4e1a775a95c"
|
||||
"sha": "236348e29b31e834ce71e4e2e3072184dd1c1e27"
|
||||
},
|
||||
"homepage": "https://www.sanity.io"
|
||||
},
|
||||
@@ -1726,7 +1749,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/cap-js/mcp-server.git",
|
||||
"sha": "8ce2e13ac70bd78415aedeaab0061af9396d3372"
|
||||
"sha": "ef840d4315fa34264be6b71d0077a3b5288cb5fa"
|
||||
},
|
||||
"homepage": "https://cap.cloud.sap/"
|
||||
},
|
||||
@@ -1744,7 +1767,7 @@
|
||||
"url": "https://github.com/SAP/open-ux-tools.git",
|
||||
"path": "packages/fiori-mcp-server",
|
||||
"ref": "main",
|
||||
"sha": "d9d4ab7e69fe453f8fd682304ff1e3ac40a216c6"
|
||||
"sha": "157120fda8577fda6fb7546ed1b2305bfa65b9f5"
|
||||
},
|
||||
"homepage": "https://github.com/SAP/open-ux-tools/tree/main/packages/fiori-mcp-server"
|
||||
},
|
||||
@@ -1760,10 +1783,26 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/SAP/mdk-mcp-server.git",
|
||||
"sha": "af81fe6c2421c5748388c65241da6a1b319a2c8f"
|
||||
"sha": "10ff6ccfee094b9fb3b3877a41f00fa278b1bcc4"
|
||||
},
|
||||
"homepage": "https://help.sap.com/docs/MDK"
|
||||
},
|
||||
{
|
||||
"name": "save-to-spotify",
|
||||
"description": "Create polished audio episodes with TTS narration, rich timelines, cover images, and save them to Spotify via the save-to-spotify CLI.",
|
||||
"author": {
|
||||
"name": "Spotify"
|
||||
},
|
||||
"category": "productivity",
|
||||
"source": {
|
||||
"source": "git-subdir",
|
||||
"url": "https://github.com/spotify/save-to-spotify.git",
|
||||
"path": "plugin",
|
||||
"ref": "main",
|
||||
"sha": "b3d362f7851d184098dcb220ba2fab10c996d1f2"
|
||||
},
|
||||
"homepage": "https://github.com/spotify/save-to-spotify"
|
||||
},
|
||||
{
|
||||
"name": "security-guidance",
|
||||
"description": "Security reminder hook that warns about potential security issues when editing files, including command injection, XSS, and unsafe code patterns",
|
||||
@@ -1783,7 +1822,7 @@
|
||||
"source": "git-subdir",
|
||||
"url": "https://github.com/semgrep/mcp-marketplace.git",
|
||||
"path": "plugin",
|
||||
"sha": "3711c33ad790df16e67c911eca792c473ec9a2a4"
|
||||
"sha": "274846f6f9da5f56be53b19170bc008d357142a7"
|
||||
},
|
||||
"homepage": "https://github.com/semgrep/mcp-marketplace.git"
|
||||
},
|
||||
@@ -1794,7 +1833,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/getsentry/sentry-for-claude.git",
|
||||
"sha": "fb398fdfff2055abc3d55917f6b6f0c0d5ad5e3b"
|
||||
"sha": "cf7efd373069d6fb073413324fe313319fb54ad9"
|
||||
},
|
||||
"homepage": "https://github.com/getsentry/sentry-for-claude/tree/main"
|
||||
},
|
||||
@@ -1859,7 +1898,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/Shopify/Shopify-AI-Toolkit.git",
|
||||
"sha": "c5c18d86ce7b2a7ca51ebac7c4b1a4eda00c8e25"
|
||||
"sha": "c164cf45c4bc1d17bbc105168d99a4f744cfaac2"
|
||||
},
|
||||
"homepage": "https://shopify.dev"
|
||||
},
|
||||
@@ -1897,7 +1936,7 @@
|
||||
"url": "https://github.com/Snowflake-Labs/snowflake-ai-kit.git",
|
||||
"path": "plugins/cortex-code",
|
||||
"ref": "main",
|
||||
"sha": "28192345cae4a758a909f5e510e24fea10666400"
|
||||
"sha": "b16692d548e9c785be640c06f3f3220ddf46c065"
|
||||
},
|
||||
"homepage": "https://docs.snowflake.com/en/user-guide/cortex-code"
|
||||
},
|
||||
@@ -1911,7 +1950,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/SonarSource/sonarqube-agent-plugins.git",
|
||||
"sha": "91eb175d6cf5d47a3edadbe61bdf782c31f0a65a"
|
||||
"sha": "c64e09af314406a8d8806d57cd11cda81578ce20"
|
||||
},
|
||||
"homepage": "https://www.sonarsource.com"
|
||||
},
|
||||
@@ -1944,7 +1983,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/spotify/ads-claude-plugin.git",
|
||||
"sha": "63585cc919da51dd24fab594d829869595301922"
|
||||
"sha": "cc3db744f4a4c14f7265ef3e9fb50f44cf08e0e7"
|
||||
},
|
||||
"homepage": "https://github.com/spotify/ads-claude-plugin"
|
||||
},
|
||||
@@ -1957,7 +1996,7 @@
|
||||
"url": "https://github.com/stripe/ai.git",
|
||||
"path": "providers/claude/plugin",
|
||||
"ref": "main",
|
||||
"sha": "14623416d84fdfad0aea8744d4c6f838ebc87654"
|
||||
"sha": "ec93d4c4b9ffdbc994ac45ce692d4ec1cdb755f0"
|
||||
},
|
||||
"homepage": "https://github.com/stripe/ai/tree/main/providers/claude/plugin"
|
||||
},
|
||||
@@ -2041,7 +2080,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/twilio/ai.git",
|
||||
"sha": "0713fb1f40b5e871cad4c1c99f603c812431692a"
|
||||
"sha": "7d15b215240df28e86a0b7305520524a2c005005"
|
||||
},
|
||||
"homepage": "https://www.twilio.com"
|
||||
},
|
||||
@@ -2089,7 +2128,7 @@
|
||||
"url": "https://github.com/UI5/plugins-claude.git",
|
||||
"path": "plugins/ui5",
|
||||
"ref": "main",
|
||||
"sha": "cec940abd4b7b6866de8e7e4522f3dba0449379d"
|
||||
"sha": "19b2fb384719425a25d55830d5dcdba75f13045c"
|
||||
},
|
||||
"homepage": "https://github.com/UI5/plugins-claude"
|
||||
},
|
||||
@@ -2107,7 +2146,7 @@
|
||||
"url": "https://github.com/UI5/plugins-claude.git",
|
||||
"path": "plugins/ui5-typescript-conversion",
|
||||
"ref": "main",
|
||||
"sha": "cec940abd4b7b6866de8e7e4522f3dba0449379d"
|
||||
"sha": "19b2fb384719425a25d55830d5dcdba75f13045c"
|
||||
},
|
||||
"homepage": "https://github.com/UI5/plugins-claude"
|
||||
},
|
||||
@@ -2121,7 +2160,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/VantaInc/vanta-mcp-plugin.git",
|
||||
"sha": "a9dac8bef2ccda299b3a4ba7a1bc7e0dbb7195ac"
|
||||
"sha": "345d86b55faa649e955b7ea5569cf52d8425c2d5"
|
||||
},
|
||||
"homepage": "https://help.vanta.com/en/articles/14094979-connecting-to-vanta-mcp#h_887ce3f337"
|
||||
},
|
||||
@@ -2132,7 +2171,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/vercel/vercel-plugin.git",
|
||||
"sha": "61f1903bed7b322c9745f6ba67095bc006de7e63"
|
||||
"sha": "1edb125d13a29a1e6212f5ca5afcdf1b89b9b211"
|
||||
},
|
||||
"homepage": "https://github.com/vercel/vercel-plugin"
|
||||
},
|
||||
@@ -2157,7 +2196,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/wix/skills.git",
|
||||
"sha": "bf25b5a45b2413b3581f3dcbcd63f3737791a051"
|
||||
"sha": "7ae38286b49e5e0cbf7069b6fd8cf6b5db2ba786"
|
||||
},
|
||||
"homepage": "https://dev.wix.com/docs/wix-cli/guides/development/about-wix-skills"
|
||||
},
|
||||
@@ -2181,7 +2220,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/youdotcom-oss/agent-skills.git",
|
||||
"sha": "362d510732362bd679e1647f72f734ca2d2fa710"
|
||||
"sha": "4712250ae8e5ce3095cad3b43b62b33608888863"
|
||||
},
|
||||
"homepage": "https://you.com"
|
||||
},
|
||||
@@ -2219,10 +2258,24 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/zoom/zoom-plugin.git",
|
||||
"sha": "ab0f09b2ddc6682a7f69055c7861009ec6062775"
|
||||
"sha": "88f6ca3529c2dca7a38db24359ecf6fd15a23379"
|
||||
},
|
||||
"homepage": "https://developers.zoom.us/"
|
||||
},
|
||||
{
|
||||
"name": "zoominfo",
|
||||
"description": "Search companies and contacts, enrich leads, find lookalikes, and get AI-ranked contact recommendations. Pre-built skills chain multiple ZoomInfo tools into complete B2B sales workflows.",
|
||||
"author": {
|
||||
"name": "ZoomInfo"
|
||||
},
|
||||
"category": "productivity",
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/Zoominfo/zoominfo-mcp-plugin.git",
|
||||
"sha": "14752e4553312d8af3eb3a3264a97d76bb3e0215"
|
||||
},
|
||||
"homepage": "https://www.zoominfo.com"
|
||||
},
|
||||
{
|
||||
"name": "zscaler",
|
||||
"description": "Manage Zscaler cloud security platform including ZPA (private access), ZIA (internet access), ZDX (digital experience), ZCC (client connector), EASM (attack surface), and Z-Insights (analytics). Create and manage policies, troubleshoot connectivity, audit security configurations, and investigate incidents across the full Zscaler ecosystem.",
|
||||
@@ -2233,7 +2286,7 @@
|
||||
"source": {
|
||||
"source": "url",
|
||||
"url": "https://github.com/zscaler/zscaler-mcp-server.git",
|
||||
"sha": "6cf365968eb3b1e11306c973c51c1e54e98e704a"
|
||||
"sha": "246430c8d2d99726ad6cdcb00d1adc4e316cb966"
|
||||
},
|
||||
"homepage": "https://github.com/zscaler/zscaler-mcp-server"
|
||||
}
|
||||
|
||||
129
.github/workflows/check-mcp-urls.yml
vendored
Normal file
129
.github/workflows/check-mcp-urls.yml
vendored
Normal file
@@ -0,0 +1,129 @@
|
||||
name: Check MCP URLs
|
||||
|
||||
# Liveness check for http/sse MCP server URLs declared by plugins vendored
|
||||
# in this repo. Catches typos in new submissions and upstream endpoints that
|
||||
# disappear after merge.
|
||||
#
|
||||
# Scope: only plugins whose files live in this working tree (marketplace
|
||||
# entries with a string `source`, e.g. "./plugins/foo"). External entries
|
||||
# are pinned to an upstream repo at a SHA — reading their .mcp.json would
|
||||
# mean cloning every upstream on each run, which is slow and flaky. Those
|
||||
# are out of scope for now.
|
||||
#
|
||||
# What counts as "alive": anything that proves the hostname/path resolves to
|
||||
# a server. 401/403/405/5xx all pass — auth and method errors are expected
|
||||
# without credentials. Only 404/410 and connection/DNS/TLS failures fail.
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- '.claude-plugin/marketplace.json'
|
||||
- 'plugins/**'
|
||||
- 'external_plugins/**'
|
||||
- '.github/workflows/check-mcp-urls.yml'
|
||||
schedule:
|
||||
- cron: '0 6 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 15
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Discover and probe MCP server URLs
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
MARKETPLACE=".claude-plugin/marketplace.json"
|
||||
|
||||
# Each line: "<plugin>\t<server>\t<url>". Marketplace entries with a
|
||||
# string `source` are local paths; objects describe an external repo
|
||||
# pinned at a SHA, which we don't have checked out — skip those.
|
||||
discover() {
|
||||
jq -r '.plugins[] | select(.source | type == "string") | "\(.name)\t\(.source)"' "$MARKETPLACE" |
|
||||
while IFS=$'\t' read -r plugin src; do
|
||||
dir="${src#./}"
|
||||
[[ -d "$dir" ]] || continue
|
||||
for cfg in "$dir/.mcp.json" "$dir/mcp.json" "$dir/.claude-plugin/plugin.json"; do
|
||||
[[ -f "$cfg" ]] || continue
|
||||
# MCP config comes in two shapes: a bare map of server name ->
|
||||
# config, or wrapped under a top-level "mcpServers" key (also
|
||||
# the shape inside plugin.json). Normalize, then keep entries
|
||||
# with an http/sse type and a string url.
|
||||
jq -r --arg plugin "$plugin" '
|
||||
(if (type == "object" and has("mcpServers")) then .mcpServers else . end)
|
||||
| to_entries[]
|
||||
| select((.value | type) == "object")
|
||||
| select(.value.type == "http" or .value.type == "sse")
|
||||
| select(.value.url | type == "string")
|
||||
| "\($plugin)\t\(.key)\t\(.value.url)"
|
||||
' "$cfg" 2>/dev/null || true
|
||||
done
|
||||
done | sort -u
|
||||
}
|
||||
|
||||
# Returns 0 on pass, 1 on fail; prints "PASS|FAIL <code> <note>".
|
||||
probe() {
|
||||
local url="$1"
|
||||
local code
|
||||
# HEAD first — cheap and covers plain web endpoints. -L follows
|
||||
# redirects so a permanent redirect to a live page still passes.
|
||||
code="$(curl -sS -o /dev/null -w '%{http_code}' \
|
||||
--connect-timeout 10 --max-time 10 \
|
||||
--retry 2 --retry-delay 2 \
|
||||
-L -I "$url" 2>/dev/null || echo "000")"
|
||||
|
||||
# MCP endpoints typically reject HEAD (404/405) but answer POST
|
||||
# with a JSON-RPC body. Retry as a real MCP client would.
|
||||
if [[ "$code" == "000" || "$code" == "404" || "$code" == "405" ]]; then
|
||||
code="$(curl -sS -o /dev/null -w '%{http_code}' \
|
||||
--connect-timeout 10 --max-time 10 \
|
||||
--retry 2 --retry-delay 2 \
|
||||
-L -X POST \
|
||||
-H 'Content-Type: application/json' \
|
||||
-H 'Accept: application/json, text/event-stream' \
|
||||
--data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"ci","version":"0"}}}' \
|
||||
"$url" 2>/dev/null || echo "000")"
|
||||
fi
|
||||
|
||||
case "$code" in
|
||||
000) echo "FAIL $code unreachable"; return 1 ;;
|
||||
404|410) echo "FAIL $code gone"; return 1 ;;
|
||||
*) echo "PASS $code"; return 0 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
entries="$(discover)"
|
||||
if [[ -z "$entries" ]]; then
|
||||
echo "::notice::No http/sse MCP server URLs found in vendored plugins."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
failures=0
|
||||
printf '%-24s %-18s %-52s %s\n' "PLUGIN" "SERVER" "URL" "RESULT"
|
||||
while IFS=$'\t' read -r plugin server url; do
|
||||
# Skip URLs with template placeholders — they need user config
|
||||
# and can't be probed as-is.
|
||||
if [[ "$url" == *'${'* || "$url" == *'{{'* ]]; then
|
||||
printf '%-24s %-18s %-52s %s\n' "$plugin" "$server" "$url" "SKIP templated"
|
||||
continue
|
||||
fi
|
||||
result="$(probe "$url")" || true
|
||||
printf '%-24s %-18s %-52s %s\n' "$plugin" "$server" "$url" "$result"
|
||||
if [[ "$result" == FAIL* ]]; then
|
||||
failures=$((failures + 1))
|
||||
echo "::error::MCP server URL for plugin '$plugin' (server '$server') is unreachable: $url ($result)"
|
||||
fi
|
||||
done <<< "$entries"
|
||||
|
||||
echo
|
||||
if (( failures > 0 )); then
|
||||
echo "::error::$failures MCP server URL(s) failed liveness check."
|
||||
exit 1
|
||||
fi
|
||||
echo "All MCP server URLs reachable."
|
||||
Reference in New Issue
Block a user