mcp-server-madeonsol 0.3.3 → 0.5.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 +2 -2
- package/dist/index.js +40 -8
- package/package.json +45 -45
package/README.md
CHANGED
|
@@ -51,8 +51,8 @@ Add to MCP settings with the same command and env vars.
|
|
|
51
51
|
|---|---|
|
|
52
52
|
| `madeonsol_kol_feed` | Real-time KOL trade feed (1,000+ wallets) |
|
|
53
53
|
| `madeonsol_kol_coordination` | Multi-KOL convergence signals |
|
|
54
|
-
| `madeonsol_kol_leaderboard` | KOL PnL and win rate rankings |
|
|
55
|
-
| `madeonsol_deployer_alerts` |
|
|
54
|
+
| `madeonsol_kol_leaderboard` | KOL PnL and win rate rankings (180 days of trade history; periods: today, 7d, 30d, 90d, 180d) |
|
|
55
|
+
| `madeonsol_deployer_alerts` | Pump.fun deployer launches. PRO/ULTRA: filter by deployer tier (elite/good/moderate/rising/cold). |
|
|
56
56
|
| `madeonsol_token_info` | Token intelligence — price, market cap, volume, deployer, KOL activity |
|
|
57
57
|
| `madeonsol_api_status` | System health — service status and uptime (no auth required) |
|
|
58
58
|
| `madeonsol_discovery` | List all endpoints and prices (free) |
|
package/dist/index.js
CHANGED
|
@@ -80,7 +80,7 @@ async function query(path, params) {
|
|
|
80
80
|
}
|
|
81
81
|
function registerTools(server) {
|
|
82
82
|
const readOnlyAnnotations = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true };
|
|
83
|
-
server.tool("madeonsol_kol_feed", "Get real-time Solana KOL trades from
|
|
83
|
+
server.tool("madeonsol_kol_feed", "Get real-time Solana KOL trades from 1,000+ tracked wallets.", {
|
|
84
84
|
limit: z.number().min(1).max(100).default(10).describe("Number of trades to return (1-100)"),
|
|
85
85
|
action: z.enum(["buy", "sell"]).optional().describe("Filter by trade type: buy or sell"),
|
|
86
86
|
kol: z.string().optional().describe("Filter by specific KOL wallet address (base58)"),
|
|
@@ -105,11 +105,12 @@ function registerTools(server) {
|
|
|
105
105
|
}, readOnlyAnnotations, async ({ period, limit }) => ({
|
|
106
106
|
content: [{ type: "text", text: await query("/api/x402/kol/leaderboard", { period, limit }) }],
|
|
107
107
|
}));
|
|
108
|
-
server.tool("madeonsol_deployer_alerts", "Get real-time alerts from
|
|
108
|
+
server.tool("madeonsol_deployer_alerts", "Get real-time alerts from Pump.fun deployers with KOL buy enrichment. PRO/ULTRA subscribers can filter by deployer tier (elite/good/moderate/rising/cold).", {
|
|
109
109
|
limit: z.number().min(1).max(100).default(10).describe("Number of deployer alerts to return (1-100)"),
|
|
110
110
|
offset: z.number().min(0).default(0).describe("Pagination offset for deployer alerts"),
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
tier: z.enum(["elite", "good", "moderate", "rising", "cold"]).optional().describe("Filter by deployer tier. PRO/ULTRA only — BASIC callers receive HTTP 403."),
|
|
112
|
+
}, readOnlyAnnotations, async ({ limit, offset, tier }) => ({
|
|
113
|
+
content: [{ type: "text", text: await query("/api/x402/deployer-hunter/alerts", { limit, offset, ...(tier ? { tier } : {}) }) }],
|
|
113
114
|
}));
|
|
114
115
|
server.tool("madeonsol_kol_pairs", "KOL affinity matrix — discover which KOLs frequently co-trade the same tokens within a time window.", {
|
|
115
116
|
period: z.enum(["7d", "30d"]).default("7d").describe("Time period: 7d or 30d"),
|
|
@@ -156,6 +157,29 @@ function registerTools(server) {
|
|
|
156
157
|
}, readOnlyAnnotations, async ({ period, min_kols, limit }) => ({
|
|
157
158
|
content: [{ type: "text", text: await query("/api/x402/kol/tokens/hot", { period, min_kols, limit }) }],
|
|
158
159
|
}));
|
|
160
|
+
server.tool("madeonsol_kol_pnl", "Deep per-wallet PnL breakdown — realized PnL, win rate, profit factor, max drawdown, daily equity curve, closed/open positions. BASIC: summary only. PRO: + curve + closed. ULTRA: + open positions.", {
|
|
161
|
+
wallet: z.string().describe("KOL wallet address (base58)"),
|
|
162
|
+
period: z.enum(["7d", "30d", "90d", "180d"]).default("30d").describe("Time period for PnL calculation"),
|
|
163
|
+
}, readOnlyAnnotations, async ({ wallet, period }) => {
|
|
164
|
+
const hasRestAuth = authMode === "madeonsol" || authMode === "rapidapi";
|
|
165
|
+
if (hasRestAuth) {
|
|
166
|
+
const headers = { ...apiKeyHeaders() };
|
|
167
|
+
const res = await fetch(`${BASE_URL}/api/v1/kol/${wallet}/pnl?period=${period}`, { headers });
|
|
168
|
+
if (!res.ok) {
|
|
169
|
+
const body = await res.text().catch(() => "");
|
|
170
|
+
return { content: [{ type: "text", text: `Error ${res.status}: ${body}` }] };
|
|
171
|
+
}
|
|
172
|
+
return { content: [{ type: "text", text: JSON.stringify(await res.json(), null, 2) }] };
|
|
173
|
+
}
|
|
174
|
+
return { content: [{ type: "text", text: "KOL PnL requires API key or RapidAPI key auth." }] };
|
|
175
|
+
});
|
|
176
|
+
server.tool("madeonsol_kol_trending_tokens", "Tokens ranked by KOL buy volume — pure capital-flow signal. Sub-hour periods (5m/15m/30m) require PRO/ULTRA.", {
|
|
177
|
+
period: z.enum(["5m", "15m", "30m", "1h", "2h", "4h", "12h"]).default("1h").describe("Time window"),
|
|
178
|
+
min_kols: z.number().min(1).max(20).default(1).describe("Minimum KOL buyers"),
|
|
179
|
+
limit: z.number().min(1).max(50).default(20).describe("Number of trending tokens to return"),
|
|
180
|
+
}, readOnlyAnnotations, async ({ period, min_kols, limit }) => ({
|
|
181
|
+
content: [{ type: "text", text: await query("/api/x402/kol/tokens/trending", { period, min_kols, limit }) }],
|
|
182
|
+
}));
|
|
159
183
|
server.tool("madeonsol_discovery", "List all available MadeOnSol API endpoints with prices and parameter docs. Free, no auth required.", {}, { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }, async () => {
|
|
160
184
|
const res = await fetch(new URL("/api/x402", BASE_URL).toString());
|
|
161
185
|
const data = await res.json();
|
|
@@ -256,10 +280,10 @@ async function main() {
|
|
|
256
280
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
257
281
|
res.end(JSON.stringify({
|
|
258
282
|
name: "madeonsol",
|
|
259
|
-
description: "Solana KOL trading intelligence and deployer analytics. Real-time data from
|
|
283
|
+
description: "Solana KOL trading intelligence and deployer analytics. Real-time data from 1,000+ KOL wallets and 4000+ Pump.fun deployers. Supports API key, RapidAPI, or x402 micropayments.",
|
|
260
284
|
version: "0.1.0",
|
|
261
285
|
tools: [
|
|
262
|
-
{ name: "madeonsol_kol_feed", description: "Get real-time Solana KOL trades from
|
|
286
|
+
{ name: "madeonsol_kol_feed", description: "Get real-time Solana KOL trades from 1,000+ tracked wallets." },
|
|
263
287
|
{ name: "madeonsol_kol_coordination", description: "Get KOL convergence signals — tokens multiple KOLs are accumulating." },
|
|
264
288
|
{ name: "madeonsol_kol_leaderboard", description: "Get KOL performance rankings by PnL and win rate." },
|
|
265
289
|
{ name: "madeonsol_deployer_alerts", description: "Get elite Pump.fun deployer alerts with KOL enrichment." },
|
|
@@ -267,6 +291,8 @@ async function main() {
|
|
|
267
291
|
{ name: "madeonsol_kol_timing", description: "KOL entry/exit timing profile. Pro/Ultra." },
|
|
268
292
|
{ name: "madeonsol_deployer_trajectory", description: "Deployer skill curve — streaks, trend. Pro/Ultra." },
|
|
269
293
|
{ name: "madeonsol_kol_hot_tokens", description: "KOL momentum tokens — accelerating buy interest." },
|
|
294
|
+
{ name: "madeonsol_kol_pnl", description: "Deep per-wallet PnL: equity curve, risk metrics, positions." },
|
|
295
|
+
{ name: "madeonsol_kol_trending_tokens", description: "Tokens ranked by KOL buy volume (5m–12h windows)." },
|
|
270
296
|
{ name: "madeonsol_discovery", description: "List all available endpoints with prices. Free." },
|
|
271
297
|
{ name: "madeonsol_create_webhook", description: "Register a webhook for real-time push notifications. Pro/Ultra." },
|
|
272
298
|
{ name: "madeonsol_list_webhooks", description: "List your registered webhooks. Pro/Ultra." },
|
|
@@ -314,8 +340,14 @@ async function main() {
|
|
|
314
340
|
res.writeHead(404);
|
|
315
341
|
res.end("Not found");
|
|
316
342
|
});
|
|
317
|
-
|
|
318
|
-
|
|
343
|
+
// Bind to 127.0.0.1 only — defense in depth. UFW already blocks the port
|
|
344
|
+
// externally, but binding to all interfaces would expose the server to any
|
|
345
|
+
// misconfigured firewall rule. Override with HOST=0.0.0.0 if you ever need
|
|
346
|
+
// to expose it directly (e.g. for hosted environments behind a separate
|
|
347
|
+
// reverse proxy).
|
|
348
|
+
const HOST = process.env.HOST || "127.0.0.1";
|
|
349
|
+
httpServer.listen(PORT, HOST, () => {
|
|
350
|
+
console.error(`[madeonsol-mcp] HTTP server listening on ${HOST}:${PORT}`);
|
|
319
351
|
});
|
|
320
352
|
}
|
|
321
353
|
else {
|
package/package.json
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "mcp-server-madeonsol",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"mcpName": "io.github.lambopoewert/madeonsol",
|
|
5
|
-
"description": "MCP server for MadeOnSol Solana KOL intelligence API
|
|
6
|
-
"type": "module",
|
|
7
|
-
"bin": {
|
|
8
|
-
"mcp-server-madeonsol": "dist/index.js"
|
|
9
|
-
},
|
|
10
|
-
"main": "dist/index.js",
|
|
11
|
-
"files": [
|
|
12
|
-
"dist",
|
|
13
|
-
"README.md",
|
|
14
|
-
"LICENSE",
|
|
15
|
-
"glama.json"
|
|
16
|
-
],
|
|
17
|
-
"scripts": {
|
|
18
|
-
"build": "tsc",
|
|
19
|
-
"prepublishOnly": ""
|
|
20
|
-
},
|
|
21
|
-
"keywords": [
|
|
22
|
-
"mcp",
|
|
23
|
-
"solana",
|
|
24
|
-
"x402",
|
|
25
|
-
"kol",
|
|
26
|
-
"trading",
|
|
27
|
-
"claude",
|
|
28
|
-
"cursor"
|
|
29
|
-
],
|
|
30
|
-
"license": "MIT",
|
|
31
|
-
"repository": {
|
|
32
|
-
"type": "git",
|
|
33
|
-
"url": "https://github.com/LamboPoewert/mcp-server-madeonsol"
|
|
34
|
-
},
|
|
35
|
-
"dependencies": {
|
|
36
|
-
"@modelcontextprotocol/sdk": "^1.12.1"
|
|
37
|
-
},
|
|
38
|
-
"peerDependencies": {
|
|
39
|
-
"@x402/fetch": ">=0.1.0",
|
|
40
|
-
"@x402/core": ">=0.1.0",
|
|
41
|
-
"@x402/svm": ">=0.1.0",
|
|
42
|
-
"@solana/kit": ">=2.0.0",
|
|
43
|
-
"@scure/base": ">=1.0.0"
|
|
44
|
-
}
|
|
45
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "mcp-server-madeonsol",
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"mcpName": "io.github.lambopoewert/madeonsol",
|
|
5
|
+
"description": "MCP server for MadeOnSol Solana KOL intelligence API \u00e2\u20ac\u201d use from Claude, Cursor, or any MCP client",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"mcp-server-madeonsol": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"main": "dist/index.js",
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"README.md",
|
|
14
|
+
"LICENSE",
|
|
15
|
+
"glama.json"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"prepublishOnly": ""
|
|
20
|
+
},
|
|
21
|
+
"keywords": [
|
|
22
|
+
"mcp",
|
|
23
|
+
"solana",
|
|
24
|
+
"x402",
|
|
25
|
+
"kol",
|
|
26
|
+
"trading",
|
|
27
|
+
"claude",
|
|
28
|
+
"cursor"
|
|
29
|
+
],
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "https://github.com/LamboPoewert/mcp-server-madeonsol"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@modelcontextprotocol/sdk": "^1.12.1"
|
|
37
|
+
},
|
|
38
|
+
"peerDependencies": {
|
|
39
|
+
"@x402/fetch": ">=0.1.0",
|
|
40
|
+
"@x402/core": ">=0.1.0",
|
|
41
|
+
"@x402/svm": ">=0.1.0",
|
|
42
|
+
"@solana/kit": ">=2.0.0",
|
|
43
|
+
"@scure/base": ">=1.0.0"
|
|
44
|
+
}
|
|
45
|
+
}
|