@nestr/mcp 0.1.8

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Nestr MCP Server - stdio entry point
4
+ *
5
+ * Run with: npx @nestr/mcp
6
+ *
7
+ * Authentication (one of the following):
8
+ * NESTR_API_KEY - Your Nestr API key (get from workspace settings)
9
+ * NESTR_OAUTH_TOKEN - OAuth Bearer token from Nestr OAuth flow
10
+ *
11
+ * Optional environment variables:
12
+ * NESTR_API_BASE - API base URL (default: https://app.nestr.io/api)
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}
package/build/index.js ADDED
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Nestr MCP Server - stdio entry point
4
+ *
5
+ * Run with: npx @nestr/mcp
6
+ *
7
+ * Authentication (one of the following):
8
+ * NESTR_API_KEY - Your Nestr API key (get from workspace settings)
9
+ * NESTR_OAUTH_TOKEN - OAuth Bearer token from Nestr OAuth flow
10
+ *
11
+ * Optional environment variables:
12
+ * NESTR_API_BASE - API base URL (default: https://app.nestr.io/api)
13
+ */
14
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
15
+ import { createServer } from "./server.js";
16
+ async function main() {
17
+ // Validate authentication is present
18
+ if (!process.env.NESTR_API_KEY && !process.env.NESTR_OAUTH_TOKEN) {
19
+ console.error("Error: Authentication required.");
20
+ console.error("");
21
+ console.error("Option 1: OAuth Token (Recommended)");
22
+ console.error(" OAuth respects your user-specific permissions in Nestr.");
23
+ console.error(" Use an OAuth Bearer token from the Nestr OAuth flow.");
24
+ console.error("");
25
+ console.error(" Then set: export NESTR_OAUTH_TOKEN=your-oauth-token");
26
+ console.error("");
27
+ console.error("Option 2: API Key");
28
+ console.error(" API keys have full workspace access (ignores user permissions).");
29
+ console.error(" 1. Go to your Nestr workspace");
30
+ console.error(" 2. Click Settings (gear icon)");
31
+ console.error(" 3. Go to Integrations tab");
32
+ console.error(" 4. Find 'Workspace API access' and click Configure");
33
+ console.error(" 5. Create a new API key");
34
+ console.error("");
35
+ console.error(" Then set: export NESTR_API_KEY=your-api-key");
36
+ console.error("");
37
+ console.error("Or configure in your MCP client (e.g., Claude Desktop):");
38
+ console.error(JSON.stringify({
39
+ mcpServers: {
40
+ nestr: {
41
+ command: "npx",
42
+ args: ["-y", "@nestr/mcp"],
43
+ env: {
44
+ NESTR_OAUTH_TOKEN: "your-oauth-token"
45
+ }
46
+ }
47
+ }
48
+ }, null, 2));
49
+ process.exit(1);
50
+ }
51
+ const server = createServer();
52
+ const transport = new StdioServerTransport();
53
+ await server.connect(transport);
54
+ // Log to stderr so it doesn't interfere with MCP protocol on stdout
55
+ console.error("Nestr MCP server running on stdio");
56
+ console.error("Connected to:", process.env.NESTR_API_BASE || "https://app.nestr.io/api");
57
+ }
58
+ main().catch((error) => {
59
+ console.error("Fatal error:", error);
60
+ process.exit(1);
61
+ });
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,KAAK,UAAU,IAAI;IACjB,qCAAqC;IACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC3E,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACnF,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC;oBAC1B,GAAG,EAAE;wBACH,iBAAiB,EAAE,kBAAkB;qBACtC;iBACF;aACF;SACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,oEAAoE;IACpE,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,0BAA0B,CAAC,CAAC;AAC3F,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * OAuth Configuration for Nestr MCP Server
3
+ *
4
+ * Implements MCP Authorization Specification using Nestr as the authorization server.
5
+ * See: https://modelcontextprotocol.io/specification/draft/basic/authorization
6
+ */
7
+ export interface OAuthConfig {
8
+ authorizationEndpoint: string;
9
+ tokenEndpoint: string;
10
+ resourceIdentifier: string;
11
+ clientId?: string;
12
+ clientSecret?: string;
13
+ scopes: string[];
14
+ }
15
+ /**
16
+ * Get OAuth configuration from environment
17
+ *
18
+ * For local development, set:
19
+ * NESTR_API_BASE=http://localhost:4001/api
20
+ * NESTR_OAUTH_CLIENT_ID=your-local-client-id
21
+ */
22
+ export declare function getOAuthConfig(): OAuthConfig;
23
+ /**
24
+ * OAuth Protected Resource Metadata (RFC 9728)
25
+ *
26
+ * This is returned at /.well-known/oauth-protected-resource
27
+ * to inform MCP clients how to authenticate.
28
+ */
29
+ export interface ProtectedResourceMetadata {
30
+ resource: string;
31
+ authorization_servers: string[];
32
+ bearer_methods_supported?: string[];
33
+ scopes_supported?: string[];
34
+ resource_documentation?: string;
35
+ }
36
+ /**
37
+ * Generate Protected Resource Metadata for this MCP server
38
+ *
39
+ * Note: We return a placeholder for authorization_servers. The actual
40
+ * MCP server URL is filled in dynamically by the HTTP handler based
41
+ * on the request's host header.
42
+ */
43
+ export declare function getProtectedResourceMetadata(mcpServerBaseUrl?: string): ProtectedResourceMetadata;
44
+ /**
45
+ * Authorization Server Metadata (RFC 8414)
46
+ *
47
+ * Describes our OAuth server capabilities.
48
+ * We act as an authorization server, proxying to Nestr.
49
+ */
50
+ export interface AuthorizationServerMetadata {
51
+ issuer: string;
52
+ authorization_endpoint: string;
53
+ token_endpoint: string;
54
+ registration_endpoint?: string;
55
+ response_types_supported: string[];
56
+ grant_types_supported: string[];
57
+ code_challenge_methods_supported: string[];
58
+ scopes_supported: string[];
59
+ }
60
+ /**
61
+ * Get authorization server metadata
62
+ *
63
+ * When mcpServerBaseUrl is provided, returns metadata for our MCP server
64
+ * acting as an authorization server (proxying to Nestr).
65
+ *
66
+ * PKCE Support: We advertise S256 support because we handle PKCE verification
67
+ * in our proxy layer, even though Nestr doesn't support PKCE natively.
68
+ */
69
+ export declare function getAuthorizationServerMetadata(mcpServerBaseUrl?: string): AuthorizationServerMetadata;
70
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/oauth/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAE1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IAGtB,kBAAkB,EAAE,MAAM,CAAC;IAG3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAiB5C;AAED;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,yBAAyB,CAcjG;AAED;;;;;GAKG;AACH,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,gCAAgC,EAAE,MAAM,EAAE,CAAC;IAC3C,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,2BAA2B,CA4BrG"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * OAuth Configuration for Nestr MCP Server
3
+ *
4
+ * Implements MCP Authorization Specification using Nestr as the authorization server.
5
+ * See: https://modelcontextprotocol.io/specification/draft/basic/authorization
6
+ */
7
+ /**
8
+ * Get OAuth configuration from environment
9
+ *
10
+ * For local development, set:
11
+ * NESTR_API_BASE=http://localhost:4001/api
12
+ * NESTR_OAUTH_CLIENT_ID=your-local-client-id
13
+ */
14
+ export function getOAuthConfig() {
15
+ const baseUrl = process.env.NESTR_API_BASE || "https://app.nestr.io/api";
16
+ const nestrBase = baseUrl.replace(/\/api$/, "");
17
+ // MCP resource identifier - the canonical URL of this MCP server
18
+ const resourceIdentifier = process.env.MCP_RESOURCE_URL || "https://mcp.nestr.io/mcp";
19
+ return {
20
+ // /dialog/oauth is the UI page, /oauth/token is the backend token endpoint
21
+ // Note: /oauth/* may need to be whitelisted in Cloudflare to avoid bot challenge
22
+ authorizationEndpoint: `${nestrBase}/dialog/oauth`,
23
+ tokenEndpoint: `${nestrBase}/oauth/token`,
24
+ resourceIdentifier,
25
+ clientId: process.env.NESTR_OAUTH_CLIENT_ID,
26
+ clientSecret: process.env.NESTR_OAUTH_CLIENT_SECRET,
27
+ scopes: ["user", "nest"],
28
+ };
29
+ }
30
+ /**
31
+ * Generate Protected Resource Metadata for this MCP server
32
+ *
33
+ * Note: We return a placeholder for authorization_servers. The actual
34
+ * MCP server URL is filled in dynamically by the HTTP handler based
35
+ * on the request's host header.
36
+ */
37
+ export function getProtectedResourceMetadata(mcpServerBaseUrl) {
38
+ const config = getOAuthConfig();
39
+ // If we have the MCP server's base URL, use it as the authorization server
40
+ // (we proxy OAuth requests to Nestr). Otherwise, fall back to Nestr directly.
41
+ const authServer = mcpServerBaseUrl || config.authorizationEndpoint.replace(/\/dialog\/oauth$/, "");
42
+ return {
43
+ resource: config.resourceIdentifier,
44
+ authorization_servers: [authServer],
45
+ bearer_methods_supported: ["header"],
46
+ scopes_supported: config.scopes,
47
+ resource_documentation: "https://mcp.nestr.io",
48
+ };
49
+ }
50
+ /**
51
+ * Get authorization server metadata
52
+ *
53
+ * When mcpServerBaseUrl is provided, returns metadata for our MCP server
54
+ * acting as an authorization server (proxying to Nestr).
55
+ *
56
+ * PKCE Support: We advertise S256 support because we handle PKCE verification
57
+ * in our proxy layer, even though Nestr doesn't support PKCE natively.
58
+ */
59
+ export function getAuthorizationServerMetadata(mcpServerBaseUrl) {
60
+ const config = getOAuthConfig();
61
+ if (mcpServerBaseUrl) {
62
+ // Our MCP server acts as the authorization server
63
+ return {
64
+ issuer: mcpServerBaseUrl,
65
+ authorization_endpoint: `${mcpServerBaseUrl}/oauth/authorize`,
66
+ token_endpoint: `${mcpServerBaseUrl}/oauth/token`,
67
+ registration_endpoint: `${mcpServerBaseUrl}/oauth/register`,
68
+ response_types_supported: ["code"],
69
+ grant_types_supported: ["authorization_code", "refresh_token"],
70
+ code_challenge_methods_supported: ["S256"], // We handle PKCE in our proxy
71
+ scopes_supported: config.scopes,
72
+ };
73
+ }
74
+ // Fall back to Nestr directly (no PKCE, no registration)
75
+ const nestrBase = config.authorizationEndpoint.replace(/\/dialog\/oauth$/, "");
76
+ return {
77
+ issuer: nestrBase,
78
+ authorization_endpoint: config.authorizationEndpoint,
79
+ token_endpoint: config.tokenEndpoint,
80
+ response_types_supported: ["code"],
81
+ grant_types_supported: ["authorization_code", "refresh_token"],
82
+ code_challenge_methods_supported: [],
83
+ scopes_supported: config.scopes,
84
+ };
85
+ }
86
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/oauth/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH;;;;;;GAMG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,0BAA0B,CAAC;IACzE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEhD,iEAAiE;IACjE,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;IAEtF,OAAO;QACL,2EAA2E;QAC3E,iFAAiF;QACjF,qBAAqB,EAAE,GAAG,SAAS,eAAe;QAClD,aAAa,EAAE,GAAG,SAAS,cAAc;QACzC,kBAAkB;QAClB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;QAC3C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;QACnD,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,CAAC;AACJ,CAAC;AAgBD;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAAC,gBAAyB;IACpE,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAEhC,2EAA2E;IAC3E,8EAA8E;IAC9E,MAAM,UAAU,GAAG,gBAAgB,IAAI,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAEpG,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,kBAAkB;QACnC,qBAAqB,EAAE,CAAC,UAAU,CAAC;QACnC,wBAAwB,EAAE,CAAC,QAAQ,CAAC;QACpC,gBAAgB,EAAE,MAAM,CAAC,MAAM;QAC/B,sBAAsB,EAAE,sBAAsB;KAC/C,CAAC;AACJ,CAAC;AAmBD;;;;;;;;GAQG;AACH,MAAM,UAAU,8BAA8B,CAAC,gBAAyB;IACtE,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAEhC,IAAI,gBAAgB,EAAE,CAAC;QACrB,kDAAkD;QAClD,OAAO;YACL,MAAM,EAAE,gBAAgB;YACxB,sBAAsB,EAAE,GAAG,gBAAgB,kBAAkB;YAC7D,cAAc,EAAE,GAAG,gBAAgB,cAAc;YACjD,qBAAqB,EAAE,GAAG,gBAAgB,iBAAiB;YAC3D,wBAAwB,EAAE,CAAC,MAAM,CAAC;YAClC,qBAAqB,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;YAC9D,gCAAgC,EAAE,CAAC,MAAM,CAAC,EAAE,8BAA8B;YAC1E,gBAAgB,EAAE,MAAM,CAAC,MAAM;SAChC,CAAC;IACJ,CAAC;IAED,yDAAyD;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAC/E,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,sBAAsB,EAAE,MAAM,CAAC,qBAAqB;QACpD,cAAc,EAAE,MAAM,CAAC,aAAa;QACpC,wBAAwB,EAAE,CAAC,MAAM,CAAC;QAClC,qBAAqB,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;QAC9D,gCAAgC,EAAE,EAAE;QACpC,gBAAgB,EAAE,MAAM,CAAC,MAAM;KAChC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * OAuth Authorization Code Flow with PKCE
3
+ *
4
+ * Handles the OAuth flow where the MCP server acts as the OAuth client
5
+ * and users authenticate directly with Nestr.
6
+ *
7
+ * PKCE Support:
8
+ * - MCP clients send PKCE parameters (code_challenge) to this server
9
+ * - We verify the code_verifier against the stored code_challenge
10
+ * - We proxy to Nestr WITHOUT PKCE (Nestr doesn't support it)
11
+ * - This provides PKCE security from the MCP client's perspective
12
+ */
13
+ import { type PendingAuthWithPKCE } from "./storage.js";
14
+ /**
15
+ * Pending OAuth authorization request
16
+ * @deprecated Use PendingAuthWithPKCE from storage.ts
17
+ */
18
+ export interface PendingAuth {
19
+ state: string;
20
+ redirectUri: string;
21
+ createdAt: number;
22
+ finalRedirect?: string;
23
+ }
24
+ /**
25
+ * OAuth token response from Nestr
26
+ */
27
+ export interface TokenResponse {
28
+ access_token: string;
29
+ refresh_token?: string;
30
+ token_type: string;
31
+ expires_in: number;
32
+ scope?: string;
33
+ }
34
+ /**
35
+ * Stored OAuth session after successful authentication
36
+ */
37
+ export interface OAuthSession {
38
+ accessToken: string;
39
+ refreshToken?: string;
40
+ expiresAt: number;
41
+ scope?: string;
42
+ }
43
+ /**
44
+ * Generate PKCE code verifier (43-128 characters)
45
+ */
46
+ export declare function generateCodeVerifier(): string;
47
+ /**
48
+ * Generate PKCE code challenge from verifier (S256 method)
49
+ */
50
+ export declare function generateCodeChallenge(verifier: string): string;
51
+ /**
52
+ * Generate OAuth state parameter
53
+ */
54
+ export declare function generateState(): string;
55
+ /**
56
+ * Parameters for creating an authorization request
57
+ */
58
+ export interface AuthorizationRequestParams {
59
+ clientId: string;
60
+ redirectUri: string;
61
+ scope?: string;
62
+ state?: string;
63
+ codeChallenge?: string;
64
+ codeChallengeMethod?: string;
65
+ }
66
+ /**
67
+ * Create a new pending auth request and return the authorization URL
68
+ *
69
+ * Supports PKCE: We store the code_challenge and verify it when the client
70
+ * exchanges the code. Nestr doesn't support PKCE, so we handle it in our proxy.
71
+ */
72
+ export declare function createAuthorizationRequest(redirectUri: string, finalRedirect?: string): {
73
+ authUrl: string;
74
+ state: string;
75
+ };
76
+ export declare function createAuthorizationRequest(params: AuthorizationRequestParams): {
77
+ authUrl: string;
78
+ state: string;
79
+ };
80
+ /**
81
+ * Get and remove a pending auth request
82
+ */
83
+ export declare function getPendingAuth(state: string): PendingAuthWithPKCE | undefined;
84
+ /**
85
+ * Verify PKCE code_verifier against stored code_challenge
86
+ *
87
+ * @param codeVerifier - The code_verifier from the token request
88
+ * @param codeChallenge - The stored code_challenge from the auth request
89
+ * @param method - The code_challenge_method (only S256 is supported)
90
+ * @returns true if verification passes
91
+ */
92
+ export declare function verifyPKCE(codeVerifier: string, codeChallenge: string, method?: string): boolean;
93
+ /**
94
+ * Exchange authorization code for tokens
95
+ */
96
+ export declare function exchangeCodeForTokens(code: string, redirectUri: string): Promise<TokenResponse>;
97
+ /**
98
+ * Refresh an access token using refresh token
99
+ */
100
+ export declare function refreshAccessToken(refreshToken: string): Promise<TokenResponse>;
101
+ /**
102
+ * Store an OAuth session
103
+ */
104
+ export declare function storeOAuthSession(sessionId: string, tokens: TokenResponse): void;
105
+ /**
106
+ * Get an OAuth session, refreshing if needed
107
+ */
108
+ export declare function getOAuthSession(sessionId: string): Promise<OAuthSession | undefined>;
109
+ /**
110
+ * Remove an OAuth session
111
+ */
112
+ export declare function removeOAuthSession(sessionId: string): void;
113
+ //# sourceMappingURL=flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/oauth/flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,cAAc,CAAC;AAEtB;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAElB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAeD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACrB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AACtC,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,0BAA0B,GACjC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AA0EtC;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAE7E;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,MAAe,GACtB,OAAO,CAST;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,CAiCxB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,CA+BxB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,aAAa,GACpB,IAAI,CAON;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CA4BnC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE1D"}
@@ -0,0 +1,233 @@
1
+ /**
2
+ * OAuth Authorization Code Flow with PKCE
3
+ *
4
+ * Handles the OAuth flow where the MCP server acts as the OAuth client
5
+ * and users authenticate directly with Nestr.
6
+ *
7
+ * PKCE Support:
8
+ * - MCP clients send PKCE parameters (code_challenge) to this server
9
+ * - We verify the code_verifier against the stored code_challenge
10
+ * - We proxy to Nestr WITHOUT PKCE (Nestr doesn't support it)
11
+ * - This provides PKCE security from the MCP client's perspective
12
+ */
13
+ import { randomBytes, createHash } from "node:crypto";
14
+ import { getOAuthConfig } from "./config.js";
15
+ import { storePendingAuth as storePendingAuthToDisk, consumePendingAuth as consumePendingAuthFromDisk, } from "./storage.js";
16
+ // In-memory storage for OAuth sessions (keyed by session ID)
17
+ const oauthSessions = new Map();
18
+ // Buffer time before token expiration to trigger refresh (60 seconds)
19
+ const TOKEN_EXPIRY_BUFFER_MS = 60 * 1000;
20
+ /**
21
+ * Generate a cryptographically secure random string
22
+ */
23
+ function generateRandomString(length) {
24
+ return randomBytes(length).toString("base64url").slice(0, length);
25
+ }
26
+ /**
27
+ * Generate PKCE code verifier (43-128 characters)
28
+ */
29
+ export function generateCodeVerifier() {
30
+ return generateRandomString(64);
31
+ }
32
+ /**
33
+ * Generate PKCE code challenge from verifier (S256 method)
34
+ */
35
+ export function generateCodeChallenge(verifier) {
36
+ return createHash("sha256").update(verifier).digest("base64url");
37
+ }
38
+ /**
39
+ * Generate OAuth state parameter
40
+ */
41
+ export function generateState() {
42
+ return generateRandomString(32);
43
+ }
44
+ export function createAuthorizationRequest(redirectUriOrParams, finalRedirect) {
45
+ const config = getOAuthConfig();
46
+ // Handle legacy signature (redirectUri, finalRedirect)
47
+ if (typeof redirectUriOrParams === "string") {
48
+ if (!config.clientId) {
49
+ throw new Error("NESTR_OAUTH_CLIENT_ID environment variable is required for OAuth flow");
50
+ }
51
+ const state = generateState();
52
+ // Store pending auth with disk persistence
53
+ storePendingAuthToDisk({
54
+ state,
55
+ redirectUri: redirectUriOrParams,
56
+ clientId: config.clientId,
57
+ createdAt: Date.now(),
58
+ });
59
+ // Build authorization URL (without PKCE - Nestr doesn't support it)
60
+ const urlParams = new URLSearchParams({
61
+ response_type: "code",
62
+ client_id: config.clientId,
63
+ redirect_uri: redirectUriOrParams,
64
+ state,
65
+ scope: config.scopes.join(" "),
66
+ });
67
+ const authUrl = `${config.authorizationEndpoint}?${urlParams}`;
68
+ return { authUrl, state };
69
+ }
70
+ // New signature with full params (for dynamic client registration)
71
+ const params = redirectUriOrParams;
72
+ const state = params.state || generateState();
73
+ // Store pending auth with PKCE info
74
+ // redirectUri here is the MCP CLIENT's redirect_uri (where we redirect with the code)
75
+ storePendingAuthToDisk({
76
+ state,
77
+ redirectUri: params.redirectUri, // MCP client's callback URL
78
+ clientId: params.clientId,
79
+ codeChallenge: params.codeChallenge,
80
+ codeChallengeMethod: params.codeChallengeMethod,
81
+ createdAt: Date.now(),
82
+ scope: params.scope,
83
+ });
84
+ // Build authorization URL for Nestr (without PKCE - we handle it ourselves)
85
+ // Use our configured client_id to talk to Nestr
86
+ // IMPORTANT: We tell Nestr to redirect back to OUR callback, not the MCP client's
87
+ const nestrClientId = config.clientId || params.clientId;
88
+ // We need our own callback URL to be passed here, not the MCP client's
89
+ // The caller should pass ourCallbackUrl in a separate field if needed
90
+ // For now, we construct it - this will be overridden by http.ts
91
+ const urlParams = new URLSearchParams({
92
+ response_type: "code",
93
+ client_id: nestrClientId,
94
+ redirect_uri: params.redirectUri, // Will be overridden by caller with our callback URL
95
+ state,
96
+ scope: params.scope || config.scopes.join(" "),
97
+ });
98
+ const authUrl = `${config.authorizationEndpoint}?${urlParams}`;
99
+ return { authUrl, state };
100
+ }
101
+ /**
102
+ * Get and remove a pending auth request
103
+ */
104
+ export function getPendingAuth(state) {
105
+ return consumePendingAuthFromDisk(state);
106
+ }
107
+ /**
108
+ * Verify PKCE code_verifier against stored code_challenge
109
+ *
110
+ * @param codeVerifier - The code_verifier from the token request
111
+ * @param codeChallenge - The stored code_challenge from the auth request
112
+ * @param method - The code_challenge_method (only S256 is supported)
113
+ * @returns true if verification passes
114
+ */
115
+ export function verifyPKCE(codeVerifier, codeChallenge, method = "S256") {
116
+ if (method !== "S256") {
117
+ // Only S256 is supported per OAuth 2.1
118
+ return false;
119
+ }
120
+ // Generate challenge from verifier and compare
121
+ const computedChallenge = generateCodeChallenge(codeVerifier);
122
+ return computedChallenge === codeChallenge;
123
+ }
124
+ /**
125
+ * Exchange authorization code for tokens
126
+ */
127
+ export async function exchangeCodeForTokens(code, redirectUri) {
128
+ const config = getOAuthConfig();
129
+ if (!config.clientId) {
130
+ throw new Error("NESTR_OAUTH_CLIENT_ID is required");
131
+ }
132
+ const body = {
133
+ grant_type: "authorization_code",
134
+ code,
135
+ redirect_uri: redirectUri,
136
+ client_id: config.clientId,
137
+ };
138
+ // Add client secret (required by Nestr)
139
+ if (config.clientSecret) {
140
+ body.client_secret = config.clientSecret;
141
+ }
142
+ const response = await fetch(config.tokenEndpoint, {
143
+ method: "POST",
144
+ headers: {
145
+ "Content-Type": "application/x-www-form-urlencoded",
146
+ },
147
+ body: new URLSearchParams(body),
148
+ });
149
+ if (!response.ok) {
150
+ const errorText = await response.text();
151
+ throw new Error(`Token exchange failed: ${response.status} - ${errorText}`);
152
+ }
153
+ return response.json();
154
+ }
155
+ /**
156
+ * Refresh an access token using refresh token
157
+ */
158
+ export async function refreshAccessToken(refreshToken) {
159
+ const config = getOAuthConfig();
160
+ if (!config.clientId) {
161
+ throw new Error("NESTR_OAUTH_CLIENT_ID is required");
162
+ }
163
+ const body = {
164
+ grant_type: "refresh_token",
165
+ refresh_token: refreshToken,
166
+ client_id: config.clientId,
167
+ };
168
+ if (config.clientSecret) {
169
+ body.client_secret = config.clientSecret;
170
+ }
171
+ const response = await fetch(config.tokenEndpoint, {
172
+ method: "POST",
173
+ headers: {
174
+ "Content-Type": "application/x-www-form-urlencoded",
175
+ },
176
+ body: new URLSearchParams(body),
177
+ });
178
+ if (!response.ok) {
179
+ const errorText = await response.text();
180
+ throw new Error(`Token refresh failed: ${response.status} - ${errorText}`);
181
+ }
182
+ return response.json();
183
+ }
184
+ /**
185
+ * Store an OAuth session
186
+ */
187
+ export function storeOAuthSession(sessionId, tokens) {
188
+ oauthSessions.set(sessionId, {
189
+ accessToken: tokens.access_token,
190
+ refreshToken: tokens.refresh_token,
191
+ expiresAt: Date.now() + tokens.expires_in * 1000,
192
+ scope: tokens.scope,
193
+ });
194
+ }
195
+ /**
196
+ * Get an OAuth session, refreshing if needed
197
+ */
198
+ export async function getOAuthSession(sessionId) {
199
+ const session = oauthSessions.get(sessionId);
200
+ if (!session) {
201
+ return undefined;
202
+ }
203
+ // Check if token is expired (with buffer to allow for refresh)
204
+ if (Date.now() >= session.expiresAt - TOKEN_EXPIRY_BUFFER_MS) {
205
+ // Try to refresh
206
+ if (session.refreshToken) {
207
+ try {
208
+ const tokens = await refreshAccessToken(session.refreshToken);
209
+ storeOAuthSession(sessionId, tokens);
210
+ return oauthSessions.get(sessionId);
211
+ }
212
+ catch {
213
+ // Refresh failed, remove session
214
+ oauthSessions.delete(sessionId);
215
+ return undefined;
216
+ }
217
+ }
218
+ else {
219
+ // No refresh token, session expired
220
+ oauthSessions.delete(sessionId);
221
+ return undefined;
222
+ }
223
+ }
224
+ return session;
225
+ }
226
+ /**
227
+ * Remove an OAuth session
228
+ */
229
+ export function removeOAuthSession(sessionId) {
230
+ oauthSessions.delete(sessionId);
231
+ }
232
+ // Cleanup is now handled by storage.ts
233
+ //# sourceMappingURL=flow.js.map