skillssafe-mcp 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -90,6 +90,18 @@ Parameters:
90
90
  - **Smithery**: [skillssafe](https://smithery.ai/server/skillssafe)
91
91
  - **Glama**: [skillssafe-mcp](https://glama.ai/mcp/servers/GUCCI-atlasv/skillssafe-mcp)
92
92
 
93
+ ## 🛡️ Security Audit
94
+
95
+ This project is indexed by [SkillsSafe](https://skillssafe.com).
96
+
97
+ You can audit this MCP server before installing it:
98
+
99
+ ```bash
100
+ openclaw mcp add skillssafe https://mcp.skillssafe.com/sse
101
+ ```
102
+
103
+ Check out the community discussion on [Cursor Forum](https://forum.cursor.com/t/built-with-cursor-skillssafe-a-security-firewall-for-mcp-servers-ai-skills/154530).
104
+
93
105
  ## License
94
106
 
95
107
  MIT © SkillsSafe
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * SkillsSafe MCP Server
4
+ * Proxies stdio ↔ remote SSE endpoint at mcp.skillssafe.com
5
+ *
6
+ * Usage:
7
+ * npx skillssafe-mcp
8
+ *
9
+ * Config for Claude Desktop / Cursor / Codex:
10
+ * { "command": "npx", "args": ["-y", "skillssafe-mcp"] }
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}
package/dist/index.js ADDED
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * SkillsSafe MCP Server
4
+ * Proxies stdio ↔ remote SSE endpoint at mcp.skillssafe.com
5
+ *
6
+ * Usage:
7
+ * npx skillssafe-mcp
8
+ *
9
+ * Config for Claude Desktop / Cursor / Codex:
10
+ * { "command": "npx", "args": ["-y", "skillssafe-mcp"] }
11
+ */
12
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
13
+ import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
14
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
15
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
16
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
17
+ const SSE_URL = "https://mcp.skillssafe.com/sse";
18
+ async function main() {
19
+ const remoteClient = new Client({ name: "skillssafe-mcp-proxy", version: "1.0.0" }, { capabilities: {} });
20
+ const sseTransport = new SSEClientTransport(new URL(SSE_URL));
21
+ await remoteClient.connect(sseTransport);
22
+ const remoteInfo = remoteClient.getServerVersion();
23
+ const remoteCapabilities = remoteClient.getServerCapabilities();
24
+ const server = new Server({ name: "skillssafe", version: remoteInfo?.version ?? "1.0.0" }, { capabilities: remoteCapabilities ?? {} });
25
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
26
+ return await remoteClient.listTools();
27
+ });
28
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
29
+ return await remoteClient.callTool(request.params);
30
+ });
31
+ const stdioTransport = new StdioServerTransport();
32
+ await server.connect(stdioTransport);
33
+ }
34
+ main().catch((err) => {
35
+ process.stderr.write(`SkillsSafe MCP error: ${err.message}\n`);
36
+ process.exit(1);
37
+ });
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,MAAM,OAAO,GAAG,gCAAgC,CAAC;AAEjD,KAAK,UAAU,IAAI;IACjB,MAAM,YAAY,GAAG,IAAI,MAAM,CAC7B,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO,EAAE,EAClD,EAAE,YAAY,EAAE,EAAE,EAAE,CACrB,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,MAAM,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzC,MAAM,UAAU,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC;IACnD,MAAM,kBAAkB,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC;IAEhE,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,OAAO,EAAE,EAC/D,EAAE,YAAY,EAAE,kBAAkB,IAAI,EAAE,EAAE,CAC3C,CAAC;IAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,OAAO,MAAM,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAClD,MAAM,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACvC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;IAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skillssafe-mcp",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "mcpName": "com.skillssafe/scanner",
5
5
  "description": "MCP server for SkillsSafe — AI agent skill security scanner. Detects prompt injection, credential theft, zero-width character attacks, and ClawHavoc malware. Free, no API key required.",
6
6
  "keywords": ["mcp", "security", "ai-safety", "prompt-injection", "skill-scanner", "clawhavoc"],
@@ -9,19 +9,36 @@
9
9
  "homepage": "https://skillssafe.com",
10
10
  "repository": {
11
11
  "type": "git",
12
- "url": "https://github.com/GUCCI-atlasv/skillssafe-mcp.git"
12
+ "url": "git+https://github.com/GUCCI-atlasv/skillssafe-mcp.git"
13
13
  },
14
14
  "bugs": {
15
15
  "url": "https://github.com/GUCCI-atlasv/skillssafe-mcp/issues"
16
16
  },
17
17
  "type": "module",
18
+ "main": "./dist/index.js",
19
+ "types": "./dist/index.d.ts",
18
20
  "bin": {
19
- "skillssafe-mcp": "./bin/skillssafe-mcp.js"
21
+ "skillssafe-mcp": "./dist/index.js"
22
+ },
23
+ "files": [
24
+ "dist",
25
+ "glama.json",
26
+ "LICENSE",
27
+ "README.md"
28
+ ],
29
+ "scripts": {
30
+ "build": "tsc",
31
+ "prepare": "npm run build",
32
+ "start": "node dist/index.js"
20
33
  },
21
34
  "engines": {
22
35
  "node": ">=18"
23
36
  },
24
37
  "dependencies": {
25
38
  "@modelcontextprotocol/sdk": "^1.10.2"
39
+ },
40
+ "devDependencies": {
41
+ "typescript": "^5.7.3",
42
+ "@types/node": "^22.10.2"
26
43
  }
27
44
  }
@@ -1,56 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * SkillsSafe MCP Server
4
- * Proxies stdio ↔ remote SSE endpoint at mcp.skillssafe.com
5
- *
6
- * Usage:
7
- * npx skillssafe-mcp
8
- *
9
- * Config for Claude Desktop / Cursor / Codex:
10
- * { "command": "npx", "args": ["-y", "skillssafe-mcp"] }
11
- */
12
-
13
- import { Client } from "@modelcontextprotocol/sdk/client/index.js";
14
- import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
15
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
16
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
17
-
18
- const SSE_URL = "https://mcp.skillssafe.com/sse";
19
-
20
- async function main() {
21
- // Connect to SkillsSafe remote SSE server
22
- const remoteClient = new Client(
23
- { name: "skillssafe-mcp-proxy", version: "1.0.0" },
24
- { capabilities: {} }
25
- );
26
- const sseTransport = new SSEClientTransport(new URL(SSE_URL));
27
- await remoteClient.connect(sseTransport);
28
-
29
- // Get capabilities from remote
30
- const remoteInfo = remoteClient.getServerVersion();
31
- const remoteCapabilities = remoteClient.getServerCapabilities();
32
-
33
- // Create local stdio server that mirrors remote capabilities
34
- const server = new Server(
35
- { name: "skillssafe", version: remoteInfo?.version ?? "1.0.0" },
36
- { capabilities: remoteCapabilities ?? {} }
37
- );
38
-
39
- // Forward all tool calls to remote
40
- server.setRequestHandler({ method: "tools/list" }, async () => {
41
- return await remoteClient.listTools();
42
- });
43
-
44
- server.setRequestHandler({ method: "tools/call" }, async (request) => {
45
- return await remoteClient.callTool(request.params);
46
- });
47
-
48
- // Start stdio transport
49
- const stdioTransport = new StdioServerTransport();
50
- await server.connect(stdioTransport);
51
- }
52
-
53
- main().catch((err) => {
54
- process.stderr.write(`SkillsSafe MCP error: ${err.message}\n`);
55
- process.exit(1);
56
- });