@elytrasec/mcp 0.1.0 → 0.2.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/LICENSE +1 -1
- package/README.md +17 -4
- package/dist/index.js +3 -3
- package/package.json +13 -23
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# @elytrasec/mcp
|
|
2
2
|
|
|
3
|
-
Elytra Security as a Model Context Protocol server. Give your AI coding agent the ability to scan smart contracts and code,
|
|
3
|
+
Elytra Security as a Model Context Protocol server. Give your AI coding agent (Claude Desktop, Cursor, Cline, Zed) the ability to scan smart contracts and code, check 12 famous-hack patterns, and return public Elytra security receipts — without leaving the IDE.
|
|
4
|
+
|
|
5
|
+
173 detection rules. ERC-8004 verified agent. x402 pay-per-call in USDC on Base + Solana.
|
|
4
6
|
|
|
5
7
|
## Install
|
|
6
8
|
|
|
@@ -13,7 +15,7 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
|
|
|
13
15
|
"mcpServers": {
|
|
14
16
|
"elytra": {
|
|
15
17
|
"command": "npx",
|
|
16
|
-
"args": ["-y", "@elytrasec/mcp"]
|
|
18
|
+
"args": ["-y", "@elytrasec/mcp@latest"]
|
|
17
19
|
}
|
|
18
20
|
}
|
|
19
21
|
}
|
|
@@ -26,7 +28,7 @@ Restart Claude Desktop. The 4 Elytra tools appear in the MCP indicator.
|
|
|
26
28
|
Settings → MCP → Add server:
|
|
27
29
|
|
|
28
30
|
```json
|
|
29
|
-
{ "command": "npx", "args": ["-y", "@elytrasec/mcp"] }
|
|
31
|
+
{ "command": "npx", "args": ["-y", "@elytrasec/mcp@latest"] }
|
|
30
32
|
```
|
|
31
33
|
|
|
32
34
|
### Cline / Continue / any MCP-compatible client
|
|
@@ -39,9 +41,20 @@ Same one-liner — install as a stdio server with the npx command above.
|
|
|
39
41
|
|---|---|
|
|
40
42
|
| `elytra_scan` | Scan a code snippet for security vulnerabilities |
|
|
41
43
|
| `elytra_scan_address` | Scan a deployed contract by 0x address (Ethereum / Base / Arbitrum / Optimism / Polygon) |
|
|
42
|
-
| `elytra_replay_hacks` | Test code against
|
|
44
|
+
| `elytra_replay_hacks` | Test code against 12 famous-exploit patterns ($3.04B combined losses): Bybit, Ronin, Euler, Beanstalk, Multichain, Curve, Radiant, zkSync, Cream, Wormhole, Nomad, Mango |
|
|
43
45
|
| `elytra_agent_identity` | Return Elytra's onchain agent card (ERC-8004, pricing, capabilities) |
|
|
44
46
|
|
|
47
|
+
## Privacy & safety
|
|
48
|
+
|
|
49
|
+
This MCP server is a thin, read-only client over Elytra's public HTTP API. Specifically:
|
|
50
|
+
|
|
51
|
+
- **No shell execution.** The server never spawns child processes or executes shell commands.
|
|
52
|
+
- **No file writes.** The server reads nothing from disk and writes nothing to disk.
|
|
53
|
+
- **No private keys.** The server never reads, requests, generates, or stores private keys.
|
|
54
|
+
- **No wallet signing.** The server never signs transactions or messages. Any onchain payments (x402) are settled by Elytra's facilitators, not by this server.
|
|
55
|
+
- **Sends only what you ask it to.** Each tool call forwards exactly the code, address, or query the AI agent passed in — nothing more. No telemetry, no ambient file reads, no background uploads.
|
|
56
|
+
- **May return public receipt URLs.** Depending on Elytra's API mode, a scan can produce a public receipt page at `https://elytrasec.io/r/<id>`. The URL is returned to you; you decide whether to share it.
|
|
57
|
+
|
|
45
58
|
## Optional env vars
|
|
46
59
|
|
|
47
60
|
- `ELYTRA_API_KEY` — Bearer key for the paid `/api/v1/scan` endpoint (bypasses x402 micropayment for higher throughput). Contact hello@elytrasec.io.
|
package/dist/index.js
CHANGED
|
@@ -113,7 +113,7 @@ var TOOLS = [
|
|
|
113
113
|
},
|
|
114
114
|
{
|
|
115
115
|
name: "elytra_replay_hacks",
|
|
116
|
-
description: "Run the
|
|
116
|
+
description: "Run the 12 famous-exploit pattern detectors against submitted source code. Encodes patterns from $3.04B in losses: Bybit ($1.46B), Ronin ($625M), Wormhole ($325M), Euler ($197M), Nomad ($190M), Beanstalk ($182M), Cream ($130M), Multichain ($126M), Mango ($114M), Curve ($73M), Radiant ($53M), zkSync ($5M). Returns only matches against these specific historic attack vectors. Use this when you want to check 'have I made any of the famous mistakes?'",
|
|
117
117
|
inputSchema: {
|
|
118
118
|
type: "object",
|
|
119
119
|
properties: {
|
|
@@ -161,7 +161,7 @@ async function runReplayHacks(args) {
|
|
|
161
161
|
...r.data,
|
|
162
162
|
findings: r.data.findings.filter((f) => f.ruleId.startsWith("cp-hack-"))
|
|
163
163
|
};
|
|
164
|
-
const text = onlyHacks.findings.length === 0 ? "No famous-hack patterns matched against this code. \u2713\n\nThis means none of: Bybit \xB7 Ronin \xB7 Euler \xB7 Beanstalk \xB7 Multichain \xB7 Curve \xB7 Radiant \xB7 zkSync fingerprints fired.\n\nNote: hack-replay is a narrow pattern check \u2014 run elytra_scan for the full
|
|
164
|
+
const text = onlyHacks.findings.length === 0 ? "No famous-hack patterns matched against this code. \u2713\n\nThis means none of: Bybit \xB7 Ronin \xB7 Wormhole \xB7 Euler \xB7 Nomad \xB7 Beanstalk \xB7 Cream \xB7 Multichain \xB7 Mango \xB7 Curve \xB7 Radiant \xB7 zkSync fingerprints fired.\n\nNote: hack-replay is a narrow pattern check \u2014 run elytra_scan for the full 173-rule set." : formatScan(onlyHacks, "Famous-hack pattern matches");
|
|
165
165
|
return { content: [{ type: "text", text }] };
|
|
166
166
|
}
|
|
167
167
|
async function runAgentIdentity() {
|
|
@@ -192,7 +192,7 @@ async function runAgentIdentity() {
|
|
|
192
192
|
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
193
193
|
}
|
|
194
194
|
var server = new Server(
|
|
195
|
-
{ name: "elytrasec", version: "0.
|
|
195
|
+
{ name: "elytrasec", version: "0.2.0" },
|
|
196
196
|
{ capabilities: { tools: {} } }
|
|
197
197
|
);
|
|
198
198
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
|
package/package.json
CHANGED
|
@@ -1,29 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elytrasec/mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Elytra Security as a Model Context Protocol server — give your AI agent
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Elytra Security as a Model Context Protocol server — give your AI agent the ability to scan smart contracts and code, check 12 famous-hack patterns, and return public Elytra security receipts.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "ElytraSec <hello@elytrasec.io>",
|
|
7
7
|
"homepage": "https://elytrasec.io/agents",
|
|
8
|
-
"bugs": "https://github.com/ElytraSec/
|
|
9
|
-
"keywords": [
|
|
10
|
-
"mcp",
|
|
11
|
-
"model-context-protocol",
|
|
12
|
-
"security",
|
|
13
|
-
"scanner",
|
|
14
|
-
"solidity",
|
|
15
|
-
"defi",
|
|
16
|
-
"ai-agent",
|
|
17
|
-
"claude",
|
|
18
|
-
"cursor"
|
|
19
|
-
],
|
|
8
|
+
"bugs": "https://github.com/ElytraSec/mcp/issues",
|
|
9
|
+
"keywords": ["mcp", "model-context-protocol", "security", "scanner", "solidity", "defi", "ai-agent", "claude", "cursor"],
|
|
20
10
|
"engines": {
|
|
21
11
|
"node": ">=20"
|
|
22
12
|
},
|
|
23
13
|
"repository": {
|
|
24
14
|
"type": "git",
|
|
25
|
-
"url": "https://github.com/ElytraSec/
|
|
26
|
-
"directory": "packages/mcp"
|
|
15
|
+
"url": "https://github.com/ElytraSec/mcp.git"
|
|
27
16
|
},
|
|
28
17
|
"publishConfig": {
|
|
29
18
|
"access": "public"
|
|
@@ -34,8 +23,14 @@
|
|
|
34
23
|
},
|
|
35
24
|
"files": [
|
|
36
25
|
"dist",
|
|
37
|
-
"README.md"
|
|
26
|
+
"README.md",
|
|
27
|
+
"LICENSE"
|
|
38
28
|
],
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsup",
|
|
31
|
+
"dev": "tsup src/index.ts --format esm --watch",
|
|
32
|
+
"start": "node dist/index.js"
|
|
33
|
+
},
|
|
39
34
|
"dependencies": {
|
|
40
35
|
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
41
36
|
"zod": "^3.23.8"
|
|
@@ -44,10 +39,5 @@
|
|
|
44
39
|
"@types/node": "^22.13.4",
|
|
45
40
|
"tsup": "^8.5.1",
|
|
46
41
|
"typescript": "^5.7.3"
|
|
47
|
-
},
|
|
48
|
-
"scripts": {
|
|
49
|
-
"build": "tsup",
|
|
50
|
-
"dev": "tsup src/index.ts --format esm --watch",
|
|
51
|
-
"start": "node dist/index.js"
|
|
52
42
|
}
|
|
53
|
-
}
|
|
43
|
+
}
|