nitrostack 1.0.17 → 1.0.19
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/ARCHITECTURE.md +302 -0
- package/dist/cli/commands/build.js +1 -1
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/start.js +3 -3
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/mcp-dev-wrapper.js +2 -0
- package/dist/cli/mcp-dev-wrapper.js.map +1 -1
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +58 -14
- package/dist/core/server.js.map +1 -1
- package/dist/core/transports/streamable-http.d.ts +145 -0
- package/dist/core/transports/streamable-http.d.ts.map +1 -0
- package/dist/core/transports/streamable-http.js +691 -0
- package/dist/core/transports/streamable-http.js.map +1 -0
- package/package.json +2 -2
- package/src/studio/app/auth/callback/page.tsx +17 -2
- package/templates/typescript-auth/src/index.ts +27 -13
- package/templates/typescript-auth-api-key/src/index.ts +29 -14
- package/templates/typescript-auth-api-key/src/widgets/next.config.js +9 -1
- package/templates/typescript-oauth/src/index.ts +30 -9
- package/templates/typescript-oauth/src/widgets/next.config.js +9 -1
- package/templates/typescript-starter/src/index.ts +28 -4
- package/templates/typescript-starter/src/widgets/next.config.js +9 -1
- package/src/studio/package-lock.json +0 -3129
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streamable HTTP Transport for MCP
|
|
3
|
+
*
|
|
4
|
+
* Implements the MCP Streamable HTTP transport specification (2025-06-18).
|
|
5
|
+
* https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#streamable-http
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Single MCP endpoint supporting both POST and GET
|
|
9
|
+
* - POST for sending messages to server
|
|
10
|
+
* - GET for SSE streams from server
|
|
11
|
+
* - Session management with Mcp-Session-Id header
|
|
12
|
+
* - Resumability support with Last-Event-ID
|
|
13
|
+
* - Multiple concurrent client connections
|
|
14
|
+
* - Protocol version header support
|
|
15
|
+
*/
|
|
16
|
+
import { Express } from 'express';
|
|
17
|
+
import { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
18
|
+
import { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
|
|
19
|
+
export interface StreamableHttpTransportOptions {
|
|
20
|
+
/**
|
|
21
|
+
* Port to listen on (default: 3000)
|
|
22
|
+
*/
|
|
23
|
+
port?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Host to bind to (default: 'localhost' for security)
|
|
26
|
+
*/
|
|
27
|
+
host?: string;
|
|
28
|
+
/**
|
|
29
|
+
* MCP endpoint path (default: '/mcp')
|
|
30
|
+
*/
|
|
31
|
+
endpoint?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Enable session management (default: true)
|
|
34
|
+
*/
|
|
35
|
+
enableSessions?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Session timeout in ms (default: 30 minutes)
|
|
38
|
+
*/
|
|
39
|
+
sessionTimeout?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Custom Express app (optional)
|
|
42
|
+
*/
|
|
43
|
+
app?: Express;
|
|
44
|
+
/**
|
|
45
|
+
* Enable CORS (default: false for security)
|
|
46
|
+
*/
|
|
47
|
+
enableCors?: boolean;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Streamable HTTP Transport
|
|
51
|
+
* Implements MCP Streamable HTTP specification
|
|
52
|
+
*/
|
|
53
|
+
export declare class StreamableHttpTransport implements Transport {
|
|
54
|
+
private app;
|
|
55
|
+
private server;
|
|
56
|
+
private sessions;
|
|
57
|
+
private activeStreams;
|
|
58
|
+
private messageHandler?;
|
|
59
|
+
private closeHandler?;
|
|
60
|
+
private errorHandler?;
|
|
61
|
+
private options;
|
|
62
|
+
private sessionCleanupInterval?;
|
|
63
|
+
constructor(options?: StreamableHttpTransportOptions);
|
|
64
|
+
/**
|
|
65
|
+
* Setup Express middleware
|
|
66
|
+
*/
|
|
67
|
+
private setupMiddleware;
|
|
68
|
+
/**
|
|
69
|
+
* Setup MCP endpoint routes
|
|
70
|
+
*/
|
|
71
|
+
private setupRoutes;
|
|
72
|
+
/**
|
|
73
|
+
* Handle POST requests (client sending messages to server)
|
|
74
|
+
*/
|
|
75
|
+
private handlePost;
|
|
76
|
+
/**
|
|
77
|
+
* Handle GET requests (client opening SSE stream)
|
|
78
|
+
*/
|
|
79
|
+
private handleGet;
|
|
80
|
+
/**
|
|
81
|
+
* Handle DELETE requests (session termination)
|
|
82
|
+
*/
|
|
83
|
+
private handleDelete;
|
|
84
|
+
/**
|
|
85
|
+
* Start SSE stream for a request
|
|
86
|
+
*/
|
|
87
|
+
private startSSEStream;
|
|
88
|
+
/**
|
|
89
|
+
* Send message to client(s)
|
|
90
|
+
*/
|
|
91
|
+
send(message: JSONRPCMessage): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Send message to a specific stream
|
|
94
|
+
*/
|
|
95
|
+
private sendToStream;
|
|
96
|
+
/**
|
|
97
|
+
* Send response to the stream that made the request
|
|
98
|
+
*/
|
|
99
|
+
private sendToRequestStream;
|
|
100
|
+
/**
|
|
101
|
+
* Send message to a sessionless stream
|
|
102
|
+
*/
|
|
103
|
+
private sendToStreamSessionless;
|
|
104
|
+
/**
|
|
105
|
+
* Replay messages for resumability
|
|
106
|
+
*/
|
|
107
|
+
private replayMessages;
|
|
108
|
+
/**
|
|
109
|
+
* Start the HTTP server
|
|
110
|
+
*/
|
|
111
|
+
start(): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* Close the transport
|
|
114
|
+
*/
|
|
115
|
+
close(): Promise<void>;
|
|
116
|
+
/**
|
|
117
|
+
* Set message handler
|
|
118
|
+
*/
|
|
119
|
+
set onmessage(handler: (message: JSONRPCMessage) => Promise<void>);
|
|
120
|
+
/**
|
|
121
|
+
* Set close handler
|
|
122
|
+
*/
|
|
123
|
+
set onclose(handler: () => void);
|
|
124
|
+
/**
|
|
125
|
+
* Set error handler
|
|
126
|
+
*/
|
|
127
|
+
set onerror(handler: (error: Error) => void);
|
|
128
|
+
/**
|
|
129
|
+
* Start session cleanup interval
|
|
130
|
+
*/
|
|
131
|
+
private startSessionCleanup;
|
|
132
|
+
/**
|
|
133
|
+
* Helper methods
|
|
134
|
+
*/
|
|
135
|
+
private generateSessionId;
|
|
136
|
+
private getMessageType;
|
|
137
|
+
private isResponse;
|
|
138
|
+
private isInitializeRequest;
|
|
139
|
+
private isLocalhost;
|
|
140
|
+
/**
|
|
141
|
+
* Get the Express app (for adding custom routes)
|
|
142
|
+
*/
|
|
143
|
+
getApp(): Express;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=streamable-http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamable-http.d.ts","sourceRoot":"","sources":["../../../src/core/transports/streamable-http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAgB,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;AAE5E,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAwD,MAAM,oCAAoC,CAAC;AAG1H,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAuBD;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,SAAS;IACvD,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,cAAc,CAAC,CAA6C;IACpE,OAAO,CAAC,YAAY,CAAC,CAAa;IAClC,OAAO,CAAC,YAAY,CAAC,CAAyB;IAC9C,OAAO,CAAC,OAAO,CAAwD;IACvE,OAAO,CAAC,sBAAsB,CAAC,CAAiB;gBAEpC,OAAO,GAAE,8BAAmC;IAoBxD;;OAEG;IACH,OAAO,CAAC,eAAe;IAwCvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgGnB;;OAEG;YACW,UAAU;IAwFxB;;OAEG;IACH,OAAO,CAAC,SAAS;IA4FjB;;OAEG;IACH,OAAO,CAAC,YAAY;IA6BpB;;OAEG;YACW,cAAc;IAkD5B;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BlD;;OAEG;YACW,YAAY;IAwB1B;;OAEG;YACW,mBAAmB;IAuCjC;;OAEG;YACW,uBAAuB;IAiBrC;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C5B;;OAEG;IACH,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,EAEhE;IAED;;OAEG;IACH,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,EAE9B;IAED;;OAEG;IACH,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAE1C;IAED;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;OAEG;IAEH,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,WAAW;IAMnB;;OAEG;IACH,MAAM,IAAI,OAAO;CAGlB"}
|