@cryptoquant_official/mcp 0.0.5 → 0.0.7
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 +306 -60
- package/dist/ai-sdk/execute.d.ts +35 -0
- package/dist/ai-sdk/execute.d.ts.map +1 -0
- package/dist/ai-sdk/execute.js +531 -0
- package/dist/ai-sdk/execute.js.map +1 -0
- package/dist/ai-sdk/index.d.ts +51 -0
- package/dist/ai-sdk/index.d.ts.map +1 -0
- package/dist/ai-sdk/index.js +54 -0
- package/dist/ai-sdk/index.js.map +1 -0
- package/dist/ai-sdk/prompts.d.ts +34 -0
- package/dist/ai-sdk/prompts.d.ts.map +1 -0
- package/dist/ai-sdk/prompts.js +74 -0
- package/dist/ai-sdk/prompts.js.map +1 -0
- package/dist/ai-sdk/schemas.d.ts +66 -0
- package/dist/ai-sdk/schemas.d.ts.map +1 -0
- package/dist/ai-sdk/schemas.js +136 -0
- package/dist/ai-sdk/schemas.js.map +1 -0
- package/dist/ai-sdk/tools.d.ts +165 -0
- package/dist/ai-sdk/tools.d.ts.map +1 -0
- package/dist/ai-sdk/tools.js +152 -0
- package/dist/ai-sdk/tools.js.map +1 -0
- package/dist/ai-sdk/types.d.ts +149 -0
- package/dist/ai-sdk/types.d.ts.map +1 -0
- package/dist/ai-sdk/types.js +5 -0
- package/dist/ai-sdk/types.js.map +1 -0
- package/dist/core/auth/storage.d.ts.map +1 -0
- package/dist/core/auth/storage.js.map +1 -0
- package/dist/core/cache/storage.d.ts +110 -0
- package/dist/core/cache/storage.d.ts.map +1 -0
- package/dist/core/cache/storage.js +356 -0
- package/dist/core/cache/storage.js.map +1 -0
- package/dist/core/cache/summary.d.ts.map +1 -0
- package/dist/core/cache/summary.js.map +1 -0
- package/dist/{cache → core/cache}/types.d.ts +25 -0
- package/dist/{cache → core/cache}/types.d.ts.map +1 -1
- package/dist/core/cache/types.js.map +1 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/discovery.d.ts.map +1 -0
- package/dist/core/discovery.js.map +1 -0
- package/dist/core/index.d.ts +16 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +19 -0
- package/dist/core/index.js.map +1 -0
- package/dist/{permissions.d.ts → core/permissions.d.ts} +1 -1
- package/dist/core/permissions.d.ts.map +1 -0
- package/dist/{permissions.js → core/permissions.js} +6 -6
- package/dist/core/permissions.js.map +1 -0
- package/dist/core/plan-limits.d.ts.map +1 -0
- package/dist/core/plan-limits.js.map +1 -0
- package/dist/core/utils.d.ts.map +1 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/http/chat-proxy.d.ts +32 -0
- package/dist/http/chat-proxy.d.ts.map +1 -0
- package/dist/http/chat-proxy.js +305 -0
- package/dist/http/chat-proxy.js.map +1 -0
- package/dist/http/index.d.ts +16 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +26 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/server.d.ts +20 -0
- package/dist/http/server.d.ts.map +1 -0
- package/dist/http/server.js +204 -0
- package/dist/http/server.js.map +1 -0
- package/dist/index.d.ts +8 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -28
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +6 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tools/auth.d.ts.map +1 -0
- package/dist/{tools → mcp/tools}/auth.js +10 -8
- package/dist/mcp/tools/auth.js.map +1 -0
- package/dist/mcp/tools/core.d.ts.map +1 -0
- package/dist/{tools → mcp/tools}/core.js +32 -145
- package/dist/mcp/tools/core.js.map +1 -0
- package/dist/shared/metrics-data.generated.d.ts +176 -0
- package/dist/shared/metrics-data.generated.d.ts.map +1 -0
- package/dist/shared/metrics-data.generated.js +3077 -0
- package/dist/shared/metrics-data.generated.js.map +1 -0
- package/package.json +41 -4
- package/dist/auth/storage.d.ts.map +0 -1
- package/dist/auth/storage.js.map +0 -1
- package/dist/cache/storage.d.ts +0 -47
- package/dist/cache/storage.d.ts.map +0 -1
- package/dist/cache/storage.js +0 -140
- package/dist/cache/storage.js.map +0 -1
- package/dist/cache/summary.d.ts.map +0 -1
- package/dist/cache/summary.js.map +0 -1
- package/dist/cache/types.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/discovery.d.ts.map +0 -1
- package/dist/discovery.js.map +0 -1
- package/dist/permissions.d.ts.map +0 -1
- package/dist/permissions.js.map +0 -1
- package/dist/plan-limits.d.ts.map +0 -1
- package/dist/plan-limits.js.map +0 -1
- package/dist/tools/auth.d.ts.map +0 -1
- package/dist/tools/auth.js.map +0 -1
- package/dist/tools/core.d.ts.map +0 -1
- package/dist/tools/core.js.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js.map +0 -1
- /package/dist/{auth → core/auth}/storage.d.ts +0 -0
- /package/dist/{auth → core/auth}/storage.js +0 -0
- /package/dist/{cache → core/cache}/summary.d.ts +0 -0
- /package/dist/{cache → core/cache}/summary.js +0 -0
- /package/dist/{cache → core/cache}/types.js +0 -0
- /package/dist/{config.d.ts → core/config.d.ts} +0 -0
- /package/dist/{config.js → core/config.js} +0 -0
- /package/dist/{discovery.d.ts → core/discovery.d.ts} +0 -0
- /package/dist/{discovery.js → core/discovery.js} +0 -0
- /package/dist/{plan-limits.d.ts → core/plan-limits.d.ts} +0 -0
- /package/dist/{plan-limits.js → core/plan-limits.js} +0 -0
- /package/dist/{utils.d.ts → core/utils.d.ts} +0 -0
- /package/dist/{utils.js → core/utils.js} +0 -0
- /package/dist/{tools → mcp/tools}/auth.d.ts +0 -0
- /package/dist/{tools → mcp/tools}/core.d.ts +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP module - HTTP server and chat proxy
|
|
3
|
+
*
|
|
4
|
+
* Can be used as:
|
|
5
|
+
* 1. Library: import { startHttpServer } from '@cryptoquant_official/mcp/http'
|
|
6
|
+
* 2. CLI: MCP_TRANSPORT=http npx @cryptoquant_official/mcp
|
|
7
|
+
*/
|
|
8
|
+
import { logger } from "../core/utils.js";
|
|
9
|
+
// Re-exports for library usage
|
|
10
|
+
export { startHttpServer, cleanupStaleSessions } from "./server.js";
|
|
11
|
+
export { handleChat, getToolsSchema } from "./chat-proxy.js";
|
|
12
|
+
/**
|
|
13
|
+
* HTTP server main entry point
|
|
14
|
+
* Called when MCP_TRANSPORT=http
|
|
15
|
+
*/
|
|
16
|
+
export async function main() {
|
|
17
|
+
const { startHttpServer } = await import("./server.js");
|
|
18
|
+
await startHttpServer({
|
|
19
|
+
port: parseInt(process.env.MCP_HTTP_PORT ?? "3100", 10),
|
|
20
|
+
host: process.env.MCP_HTTP_HOST ?? "0.0.0.0",
|
|
21
|
+
corsOrigins: process.env.MCP_CORS_ORIGINS ?? "*",
|
|
22
|
+
enableLegacySse: process.env.MCP_ENABLE_LEGACY_SSE === "true",
|
|
23
|
+
});
|
|
24
|
+
logger.info("CryptoQuant HTTP Server started");
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,+BAA+B;AAC/B,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG7D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAExD,MAAM,eAAe,CAAC;QACpB,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM,EAAE,EAAE,CAAC;QACvD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,SAAS;QAC5C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,GAAG;QAChD,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,MAAM;KAC9D,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Transport Server for MCP
|
|
3
|
+
* Enables web applications to connect to the MCP server via HTTP/SSE
|
|
4
|
+
*/
|
|
5
|
+
interface HttpServerConfig {
|
|
6
|
+
port?: number;
|
|
7
|
+
host?: string;
|
|
8
|
+
corsOrigins?: string | string[];
|
|
9
|
+
enableLegacySse?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Start HTTP server with Streamable HTTP transport
|
|
13
|
+
*/
|
|
14
|
+
export declare function startHttpServer(config?: HttpServerConfig): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Clean up stale sessions (older than 1 hour)
|
|
17
|
+
*/
|
|
18
|
+
export declare function cleanupStaleSessions(): void;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA4BD;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsLlF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAW3C"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Transport Server for MCP
|
|
3
|
+
* Enables web applications to connect to the MCP server via HTTP/SSE
|
|
4
|
+
*/
|
|
5
|
+
import express from "express";
|
|
6
|
+
import cors from "cors";
|
|
7
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
8
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
9
|
+
import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
|
|
10
|
+
import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js";
|
|
11
|
+
import { randomUUID } from "crypto";
|
|
12
|
+
import { registerAuthTools } from "../mcp/tools/auth.js";
|
|
13
|
+
import { registerCoreTools } from "../mcp/tools/core.js";
|
|
14
|
+
import { logger } from "../core/utils.js";
|
|
15
|
+
import { handleChat, getToolsSchema } from "./chat-proxy.js";
|
|
16
|
+
// Session storage for Streamable HTTP
|
|
17
|
+
const sessions = new Map();
|
|
18
|
+
// Legacy SSE transport storage
|
|
19
|
+
let legacySseTransport = null;
|
|
20
|
+
/**
|
|
21
|
+
* Create and configure the MCP server instance
|
|
22
|
+
*/
|
|
23
|
+
function createMcpServer() {
|
|
24
|
+
const server = new McpServer({
|
|
25
|
+
name: "cryptoquant",
|
|
26
|
+
version: "1.0.0",
|
|
27
|
+
});
|
|
28
|
+
registerAuthTools(server);
|
|
29
|
+
registerCoreTools(server);
|
|
30
|
+
return server;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Start HTTP server with Streamable HTTP transport
|
|
34
|
+
*/
|
|
35
|
+
export async function startHttpServer(config = {}) {
|
|
36
|
+
const port = config.port ?? parseInt(process.env.MCP_HTTP_PORT ?? "3100", 10);
|
|
37
|
+
const host = config.host ?? process.env.MCP_HTTP_HOST ?? "0.0.0.0";
|
|
38
|
+
const corsOrigins = config.corsOrigins ?? process.env.MCP_CORS_ORIGINS ?? "*";
|
|
39
|
+
const enableLegacySse = config.enableLegacySse ?? process.env.MCP_ENABLE_LEGACY_SSE === "true";
|
|
40
|
+
const app = express();
|
|
41
|
+
// Middleware
|
|
42
|
+
app.use(cors({
|
|
43
|
+
origin: corsOrigins,
|
|
44
|
+
credentials: true,
|
|
45
|
+
exposedHeaders: ["mcp-session-id"],
|
|
46
|
+
}));
|
|
47
|
+
app.use(express.json());
|
|
48
|
+
// Health check endpoint
|
|
49
|
+
app.get("/health", (_req, res) => {
|
|
50
|
+
res.json({
|
|
51
|
+
status: "ok",
|
|
52
|
+
transport: "streamable-http",
|
|
53
|
+
sessions: sessions.size,
|
|
54
|
+
legacySse: enableLegacySse,
|
|
55
|
+
chatProxy: true,
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
// =========================================================================
|
|
59
|
+
// Chat Proxy Endpoints (Claude API Integration)
|
|
60
|
+
// =========================================================================
|
|
61
|
+
// POST /chat - Chat with Claude + automatic tool execution
|
|
62
|
+
app.post("/chat", async (req, res) => {
|
|
63
|
+
const chatRequest = req.body;
|
|
64
|
+
if (!chatRequest.message) {
|
|
65
|
+
res.status(400).json({ error: "message is required" });
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (!chatRequest.claude_api_key) {
|
|
69
|
+
res.status(400).json({ error: "claude_api_key is required" });
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const result = await handleChat(chatRequest);
|
|
74
|
+
res.json(result);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
logger.error("[/chat] error:", error);
|
|
78
|
+
res.status(500).json({
|
|
79
|
+
success: false,
|
|
80
|
+
error: error instanceof Error ? error.message : "Chat request failed",
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
// GET /tools/schema - Get Claude-compatible tool definitions
|
|
85
|
+
app.get("/tools/schema", (_req, res) => {
|
|
86
|
+
res.json({
|
|
87
|
+
tools: getToolsSchema(),
|
|
88
|
+
usage: "Use these tool definitions with Claude API's tool_use feature",
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
// =========================================================================
|
|
92
|
+
// Streamable HTTP Transport (Modern)
|
|
93
|
+
// =========================================================================
|
|
94
|
+
// POST /mcp - Handle MCP requests
|
|
95
|
+
app.post("/mcp", async (req, res) => {
|
|
96
|
+
const sessionId = req.headers["mcp-session-id"];
|
|
97
|
+
const session = sessionId ? sessions.get(sessionId) : undefined;
|
|
98
|
+
// Check if this is an initialization request
|
|
99
|
+
const isInit = isInitializeRequest(req.body);
|
|
100
|
+
if (isInit || !session) {
|
|
101
|
+
// Create new session
|
|
102
|
+
const newSessionId = randomUUID();
|
|
103
|
+
const server = createMcpServer();
|
|
104
|
+
const transport = new StreamableHTTPServerTransport({
|
|
105
|
+
sessionIdGenerator: () => newSessionId,
|
|
106
|
+
onsessioninitialized: (id) => {
|
|
107
|
+
logger.info(`Session initialized: ${id}`);
|
|
108
|
+
sessions.set(id, { transport, createdAt: Date.now() });
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
transport.onclose = () => {
|
|
112
|
+
logger.info(`Session closed: ${newSessionId}`);
|
|
113
|
+
sessions.delete(newSessionId);
|
|
114
|
+
};
|
|
115
|
+
await server.connect(transport);
|
|
116
|
+
await transport.handleRequest(req, res, req.body);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// Use existing session
|
|
120
|
+
await session.transport.handleRequest(req, res, req.body);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
// GET /mcp - SSE stream for server-to-client notifications
|
|
124
|
+
app.get("/mcp", async (req, res) => {
|
|
125
|
+
const sessionId = req.headers["mcp-session-id"];
|
|
126
|
+
if (!sessionId) {
|
|
127
|
+
res.status(400).json({ error: "Missing mcp-session-id header" });
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const session = sessions.get(sessionId);
|
|
131
|
+
if (!session) {
|
|
132
|
+
res.status(404).json({ error: "Session not found" });
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
await session.transport.handleRequest(req, res);
|
|
136
|
+
});
|
|
137
|
+
// DELETE /mcp - Close session
|
|
138
|
+
app.delete("/mcp", async (req, res) => {
|
|
139
|
+
const sessionId = req.headers["mcp-session-id"];
|
|
140
|
+
if (!sessionId) {
|
|
141
|
+
res.status(400).json({ error: "Missing mcp-session-id header" });
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const session = sessions.get(sessionId);
|
|
145
|
+
if (!session) {
|
|
146
|
+
res.status(404).json({ error: "Session not found" });
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
await session.transport.close();
|
|
150
|
+
sessions.delete(sessionId);
|
|
151
|
+
res.status(204).send();
|
|
152
|
+
});
|
|
153
|
+
// =========================================================================
|
|
154
|
+
// Legacy SSE Transport (for backwards compatibility)
|
|
155
|
+
// =========================================================================
|
|
156
|
+
if (enableLegacySse) {
|
|
157
|
+
// GET /sse - Establish SSE connection
|
|
158
|
+
app.get("/sse", async (_req, res) => {
|
|
159
|
+
logger.info("Legacy SSE connection requested");
|
|
160
|
+
const server = createMcpServer();
|
|
161
|
+
legacySseTransport = new SSEServerTransport("/messages", res);
|
|
162
|
+
legacySseTransport.onclose = () => {
|
|
163
|
+
logger.info("Legacy SSE connection closed");
|
|
164
|
+
legacySseTransport = null;
|
|
165
|
+
};
|
|
166
|
+
await server.connect(legacySseTransport);
|
|
167
|
+
});
|
|
168
|
+
// POST /messages - Handle client messages for legacy SSE
|
|
169
|
+
app.post("/messages", async (req, res) => {
|
|
170
|
+
if (!legacySseTransport) {
|
|
171
|
+
res.status(503).json({ error: "No active SSE connection" });
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
await legacySseTransport.handlePostMessage(req, res);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
// Start server
|
|
178
|
+
app.listen(port, host, () => {
|
|
179
|
+
logger.info(`CryptoQuant MCP HTTP Server running at http://${host}:${port}`);
|
|
180
|
+
logger.info(` - Chat Proxy: POST /chat`);
|
|
181
|
+
logger.info(` - Tool Schema: GET /tools/schema`);
|
|
182
|
+
logger.info(` - Streamable HTTP: POST/GET/DELETE /mcp`);
|
|
183
|
+
if (enableLegacySse) {
|
|
184
|
+
logger.info(` - Legacy SSE: GET /sse, POST /messages`);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Clean up stale sessions (older than 1 hour)
|
|
190
|
+
*/
|
|
191
|
+
export function cleanupStaleSessions() {
|
|
192
|
+
const maxAge = 60 * 60 * 1000; // 1 hour
|
|
193
|
+
const now = Date.now();
|
|
194
|
+
for (const [id, session] of sessions) {
|
|
195
|
+
if (now - session.createdAt > maxAge) {
|
|
196
|
+
logger.info(`Cleaning up stale session: ${id}`);
|
|
197
|
+
session.transport.close();
|
|
198
|
+
sessions.delete(id);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// Run cleanup every 15 minutes
|
|
203
|
+
setInterval(cleanupStaleSessions, 15 * 60 * 1000);
|
|
204
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export {
|
|
10
|
-
export { getCacheFilePath, isCacheValid, readCache, writeCache, invalidateCache, clearAllCaches, getCacheAgeDays, getCacheStatus, getCachePath, } from "./cache/storage.js";
|
|
11
|
-
export { generateSummary, extractRawResponse } from "./cache/summary.js";
|
|
12
|
-
export type { StoredCredentials } from "./auth/storage.js";
|
|
13
|
-
export { getStoredApiKey, saveApiKey, updateValidatedAt, clearCredentials, getCredentialsPath, } from "./auth/storage.js";
|
|
14
|
-
export { jsonResponse, errorResponse, getPlanNote, capitalizeFirst, logger, } from "./utils.js";
|
|
15
|
-
export { getApiUrl, getApiBaseUrl } from "./config.js";
|
|
16
|
-
export { registerAuthTools } from "./tools/auth.js";
|
|
17
|
-
export { registerCoreTools } from "./tools/core.js";
|
|
2
|
+
/**
|
|
3
|
+
* MCP Server Entry Point (stdio mode)
|
|
4
|
+
*
|
|
5
|
+
* For HTTP mode, use:
|
|
6
|
+
* - MCP_TRANSPORT=http node dist/index.js
|
|
7
|
+
* - Or import from '@cryptoquant_official/mcp/http'
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
18
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG"}
|
package/dist/index.js
CHANGED
|
@@ -1,41 +1,30 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* MCP Server Entry Point (stdio mode)
|
|
4
|
+
*
|
|
5
|
+
* For HTTP mode, use:
|
|
6
|
+
* - MCP_TRANSPORT=http node dist/index.js
|
|
7
|
+
* - Or import from '@cryptoquant_official/mcp/http'
|
|
8
|
+
*/
|
|
2
9
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
10
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
-
import { registerAuthTools } from "./
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
export { fetchDiscoveryEndpoints, getEndpointCatalog, isDiscoveryLoaded, searchEndpoints, getEndpointByPath, getParameterOptions, getDiscoverySummary, getAssetCategoryMap, resetDiscovery, } from "./discovery.js";
|
|
8
|
-
export { initializePermissions, getPermissionState, setGuestMode, resetPermissions, clearDiscoveryCache, getDiscoveryCachePath, getCachedDiscovery, } from "./permissions.js";
|
|
9
|
-
export { fetchPlanLimits, getPlanLimitsState, getPlanLimit, getEndpointResultLimit, getEndpointWindowLimits, hasEndpointAccess, parseDurationToDate, getEarliestAllowedDate, validateDateRange, getRequiredPlan, getApiRateLimit, getStaticEndpoints, resetPlanLimits, loadPlanLimitsFromCache, getAccessibleEndpointsSummary, detectPlanFromLimits, } from "./plan-limits.js";
|
|
10
|
-
export { CACHE_VERSION, CACHE_TTL_DAYS } from "./cache/types.js";
|
|
11
|
-
export { getCacheFilePath, isCacheValid, readCache, writeCache, invalidateCache, clearAllCaches, getCacheAgeDays, getCacheStatus, getCachePath, } from "./cache/storage.js";
|
|
12
|
-
export { generateSummary, extractRawResponse } from "./cache/summary.js";
|
|
13
|
-
export { getStoredApiKey, saveApiKey, updateValidatedAt, clearCredentials, getCredentialsPath, } from "./auth/storage.js";
|
|
14
|
-
// =============================================================================
|
|
15
|
-
// Utility Exports
|
|
16
|
-
// =============================================================================
|
|
17
|
-
export { jsonResponse, errorResponse, getPlanNote, capitalizeFirst, logger, } from "./utils.js";
|
|
18
|
-
// =============================================================================
|
|
19
|
-
// Config Exports
|
|
20
|
-
// =============================================================================
|
|
21
|
-
export { getApiUrl, getApiBaseUrl } from "./config.js";
|
|
22
|
-
// =============================================================================
|
|
23
|
-
// Tool Registration Exports
|
|
24
|
-
// =============================================================================
|
|
25
|
-
export { registerAuthTools } from "./tools/auth.js";
|
|
26
|
-
export { registerCoreTools } from "./tools/core.js";
|
|
27
|
-
// =============================================================================
|
|
28
|
-
// MCP Server Startup
|
|
29
|
-
// =============================================================================
|
|
11
|
+
import { registerAuthTools, registerCoreTools } from "./mcp/index.js";
|
|
12
|
+
import { logger } from "./core/utils.js";
|
|
13
|
+
import { main as httpMain } from "./http/index.js";
|
|
30
14
|
async function main() {
|
|
15
|
+
// Check if HTTP mode is requested
|
|
16
|
+
const mode = process.env.MCP_TRANSPORT?.toLowerCase();
|
|
17
|
+
if (mode === "http" || mode === "sse") {
|
|
18
|
+
await httpMain();
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// Start stdio server for CLI/desktop applications
|
|
31
22
|
const server = new McpServer({
|
|
32
23
|
name: "cryptoquant",
|
|
33
24
|
version: "1.0.0",
|
|
34
25
|
});
|
|
35
|
-
// Register tool categories
|
|
36
26
|
registerAuthTools(server);
|
|
37
27
|
registerCoreTools(server);
|
|
38
|
-
// Start server with stdio transport
|
|
39
28
|
const transport = new StdioServerTransport();
|
|
40
29
|
await server.connect(transport);
|
|
41
30
|
logger.info("CryptoQuant MCP Server running on stdio");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnD,KAAK,UAAU,IAAI;IACjB,kCAAkC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;IACtD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACtC,MAAM,QAAQ,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,kDAAkD;IAClD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;AACzD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqDzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmMzD"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { initializePermissions, resetPermissions, getDiscoverySummary, getPermissionState, clearDiscoveryCache, getDiscoveryCachePath, getCachedDiscovery, } from "
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
2
|
+
import { initializePermissions, resetPermissions, getDiscoverySummary, getPermissionState, clearDiscoveryCache, getDiscoveryCachePath, getCachedDiscovery, } from "../../core/permissions.js";
|
|
3
|
+
import { getStorageType } from "../../core/cache/storage.js";
|
|
4
|
+
import { getAssetCategoryMap } from "../../core/discovery.js";
|
|
5
|
+
import { getStoredApiKey, saveApiKey, clearCredentials, getCredentialsPath, updateValidatedAt, } from "../../core/auth/storage.js";
|
|
6
|
+
import { getPlanLimitsState, getAccessibleEndpointsSummary } from "../../core/plan-limits.js";
|
|
7
|
+
import { getApiUrl } from "../../core/config.js";
|
|
8
|
+
import { jsonResponse, getPlanNote, logger } from "../../core/utils.js";
|
|
8
9
|
const initializeSchema = {
|
|
9
10
|
api_key: z.string().optional().describe("API key (optional if CRYPTOQUANT_API_KEY env var is set)"),
|
|
10
11
|
};
|
|
@@ -177,8 +178,9 @@ export function registerAuthTools(server) {
|
|
|
177
178
|
clearCredentials();
|
|
178
179
|
clearedItems.push("credentials");
|
|
179
180
|
}
|
|
180
|
-
|
|
181
|
-
|
|
181
|
+
// Skip cache clearing in redis mode (web server) - use Redis CLI for that
|
|
182
|
+
if (params.clear_cache && getStorageType() === "file") {
|
|
183
|
+
await clearDiscoveryCache(apiUrl);
|
|
182
184
|
clearedItems.push("discovery cache");
|
|
183
185
|
}
|
|
184
186
|
const message = clearedItems.length === 1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/mcp/tools/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqIzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoZzD"}
|