@atxp/server 0.2.22 → 0.4.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/dist/atxpContext.js +9 -6
- package/dist/atxpContext.js.map +1 -1
- package/dist/core/mcp.js +39 -0
- package/dist/core/mcp.js.map +1 -0
- package/dist/{oAuthChallenge.js → core/oauth.js} +21 -12
- package/dist/core/oauth.js.map +1 -0
- package/dist/{token.js → core/token.js} +13 -7
- package/dist/core/token.js.map +1 -0
- package/dist/getResource.js +23 -4
- package/dist/getResource.js.map +1 -1
- package/dist/index.cjs +654 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +197 -5
- package/dist/index.js +609 -5
- package/dist/index.js.map +1 -1
- package/dist/node/getRawBody.js +35 -0
- package/dist/node/getRawBody.js.map +1 -0
- package/dist/node/http.js +49 -0
- package/dist/node/http.js.map +1 -0
- package/dist/node/oauth.js +41 -0
- package/dist/node/oauth.js.map +1 -0
- package/dist/node/token.js +15 -0
- package/dist/node/token.js.map +1 -0
- package/dist/oAuthMetadata.js +6 -12
- package/dist/oAuthMetadata.js.map +1 -1
- package/dist/paymentServer.js +5 -20
- package/dist/paymentServer.js.map +1 -1
- package/dist/protectedResourceMetadata.js +10 -16
- package/dist/protectedResourceMetadata.js.map +1 -1
- package/dist/requirePayment.js +7 -4
- package/dist/requirePayment.js.map +1 -1
- package/dist/serverConfig.js +37 -0
- package/dist/serverConfig.js.map +1 -0
- package/dist/serverTestHelpers.d.ts +70 -21
- package/dist/serverTestHelpers.js +55 -24
- package/dist/serverTestHelpers.js.map +1 -1
- package/dist/types.js +4 -2
- package/dist/types.js.map +1 -1
- package/dist/webapi/mcp.js +25 -0
- package/dist/webapi/mcp.js.map +1 -0
- package/dist/webapi/oauth.js +43 -0
- package/dist/webapi/oauth.js.map +1 -0
- package/dist/webapi/token.js +15 -0
- package/dist/webapi/token.js.map +1 -0
- package/package.json +24 -10
- package/dist/atxpContext.d.ts +0 -6
- package/dist/atxpContext.d.ts.map +0 -1
- package/dist/atxpServer.d.ts +0 -12
- package/dist/atxpServer.d.ts.map +0 -1
- package/dist/atxpServer.js +0 -101
- package/dist/atxpServer.js.map +0 -1
- package/dist/getResource.d.ts +0 -4
- package/dist/getResource.d.ts.map +0 -1
- package/dist/http.d.ts +0 -7
- package/dist/http.d.ts.map +0 -1
- package/dist/http.js +0 -51
- package/dist/http.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/oAuthChallenge.d.ts +0 -4
- package/dist/oAuthChallenge.d.ts.map +0 -1
- package/dist/oAuthChallenge.js.map +0 -1
- package/dist/oAuthMetadata.d.ts +0 -6
- package/dist/oAuthMetadata.d.ts.map +0 -1
- package/dist/paymentServer.d.ts +0 -62
- package/dist/paymentServer.d.ts.map +0 -1
- package/dist/protectedResourceMetadata.d.ts +0 -5
- package/dist/protectedResourceMetadata.d.ts.map +0 -1
- package/dist/requirePayment.d.ts +0 -3
- package/dist/requirePayment.d.ts.map +0 -1
- package/dist/serverTestHelpers.d.ts.map +0 -1
- package/dist/token.d.ts +0 -4
- package/dist/token.d.ts.map +0 -1
- package/dist/token.js.map +0 -1
- package/dist/types.d.ts +0 -60
- package/dist/types.d.ts.map +0 -1
|
@@ -1,17 +1,27 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any, no-console */
|
|
2
1
|
import { Readable } from 'stream';
|
|
2
|
+
import { MemoryOAuthDb, DEFAULT_AUTHORIZATION_SERVER } from '@atxp/common';
|
|
3
3
|
import { vi } from 'vitest';
|
|
4
|
-
import { TokenProblem } from './types.js';
|
|
5
|
-
import { buildServerConfig } from './atxpServer.js';
|
|
6
4
|
import { BigNumber } from 'bignumber.js';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
|
|
6
|
+
var TokenProblem;
|
|
7
|
+
(function (TokenProblem) {
|
|
8
|
+
TokenProblem["NO_TOKEN"] = "NO-TOKEN";
|
|
9
|
+
TokenProblem["NON_BEARER_AUTH_HEADER"] = "NON-BEARER-AUTH-HEADER";
|
|
10
|
+
TokenProblem["INVALID_TOKEN"] = "INVALID-TOKEN";
|
|
11
|
+
TokenProblem["INVALID_AUDIENCE"] = "INVALID-AUDIENCE";
|
|
12
|
+
TokenProblem["NON_SUFFICIENT_FUNDS"] = "NON-SUFFICIENT-FUNDS";
|
|
13
|
+
TokenProblem["INTROSPECT_ERROR"] = "INTROSPECT-ERROR";
|
|
14
|
+
})(TokenProblem || (TokenProblem = {}));
|
|
15
|
+
|
|
16
|
+
/* eslint-disable @typescript-eslint/no-explicit-any, no-console */
|
|
17
|
+
const DESTINATION = 'testDestination';
|
|
18
|
+
const SOURCE = 'testSource';
|
|
19
|
+
function charge({ amount = BigNumber(0.01), currency = 'USDC', network = 'solana', destination = DESTINATION, source = SOURCE } = {}) {
|
|
10
20
|
return { amount, currency, network, destination, source };
|
|
11
21
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
22
|
+
const oneCentCharge = charge({ amount: BigNumber(0.01) });
|
|
23
|
+
const zeroCharge = charge({ amount: BigNumber(0) });
|
|
24
|
+
function logger() {
|
|
15
25
|
return {
|
|
16
26
|
debug: vi.fn().mockImplementation((msg) => { console.debug(msg); }),
|
|
17
27
|
info: vi.fn().mockImplementation((msg) => { console.info(msg); }),
|
|
@@ -19,26 +29,45 @@ export function logger() {
|
|
|
19
29
|
error: vi.fn().mockImplementation((msg) => { console.error(msg); }),
|
|
20
30
|
};
|
|
21
31
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
32
|
+
function config(args = {}) {
|
|
33
|
+
// Create a basic config without using buildServerConfig to avoid circular dependency
|
|
34
|
+
const mockLogger = logger();
|
|
35
|
+
const oAuthDb = args.oAuthDb ?? new MemoryOAuthDb();
|
|
36
|
+
const oAuthClient = args.oAuthClient ?? {
|
|
37
|
+
introspect: vi.fn().mockResolvedValue(tokenData()),
|
|
38
|
+
validateClientCredentials: vi.fn().mockResolvedValue(true),
|
|
39
|
+
extractAccessToken: vi.fn().mockReturnValue('test-token')
|
|
40
|
+
};
|
|
41
|
+
const config = {
|
|
25
42
|
destination: args.destination ?? DESTINATION,
|
|
26
|
-
|
|
27
|
-
|
|
43
|
+
mountPath: args.mountPath ?? '/',
|
|
44
|
+
currency: args.currency ?? 'USDC',
|
|
45
|
+
network: args.network ?? 'base',
|
|
46
|
+
server: args.server ?? DEFAULT_AUTHORIZATION_SERVER,
|
|
47
|
+
payeeName: args.payeeName ?? 'Test ATXP Server',
|
|
48
|
+
allowHttp: args.allowHttp ?? true,
|
|
49
|
+
resource: args.resource ?? null,
|
|
50
|
+
oAuthDb,
|
|
51
|
+
oAuthClient,
|
|
52
|
+
paymentServer: args.paymentServer ?? paymentServer(),
|
|
53
|
+
logger: args.logger ?? mockLogger,
|
|
54
|
+
...args
|
|
55
|
+
};
|
|
56
|
+
return config;
|
|
28
57
|
}
|
|
29
|
-
|
|
58
|
+
function paymentServer({ charge = vi.fn().mockResolvedValue({ success: true, requiredPaymentId: null }), createPaymentRequest = vi.fn().mockResolvedValue('test-payment-request-id') } = {}) {
|
|
30
59
|
return {
|
|
31
60
|
charge,
|
|
32
61
|
createPaymentRequest,
|
|
33
62
|
};
|
|
34
63
|
}
|
|
35
|
-
|
|
64
|
+
function mcpRequest({ method = 'tools/call', params = {}, id = 'call-1' } = {}) {
|
|
36
65
|
return { jsonrpc: "2.0", method, params, id };
|
|
37
66
|
}
|
|
38
|
-
|
|
67
|
+
function mcpToolRequest({ toolName = 'testTool', args = { paramOne: 'test' }, } = {}) {
|
|
39
68
|
return mcpRequest({ method: 'tools/call', params: { name: toolName, arguments: args } });
|
|
40
69
|
}
|
|
41
|
-
|
|
70
|
+
function incomingMessage({ body = {}, method = 'POST', url = '/', headers = { 'content-type': 'application/json' } } = {}) {
|
|
42
71
|
const bodyString = JSON.stringify(body);
|
|
43
72
|
const stream = new Readable({
|
|
44
73
|
read() {
|
|
@@ -51,14 +80,14 @@ export function incomingMessage({ body = {}, method = 'POST', url = '/', headers
|
|
|
51
80
|
stream.headers = headers;
|
|
52
81
|
return stream;
|
|
53
82
|
}
|
|
54
|
-
|
|
83
|
+
function incomingToolMessage({ authHeader = undefined, url = '/', } = {}) {
|
|
55
84
|
return incomingMessage({
|
|
56
85
|
body: mcpToolRequest({ toolName: 'testTool' }),
|
|
57
86
|
headers: { 'authorization': authHeader, 'content-type': 'application/json' },
|
|
58
87
|
url
|
|
59
88
|
});
|
|
60
89
|
}
|
|
61
|
-
|
|
90
|
+
function oAuthClient({ introspectResult = tokenData(), authorizationServer = {
|
|
62
91
|
issuer: 'https://auth.atxp.ai',
|
|
63
92
|
} } = {}) {
|
|
64
93
|
return {
|
|
@@ -66,10 +95,10 @@ export function oAuthClient({ introspectResult = tokenData(), authorizationServe
|
|
|
66
95
|
authorizationServerFromUrl: vi.fn().mockResolvedValue(authorizationServer)
|
|
67
96
|
};
|
|
68
97
|
}
|
|
69
|
-
|
|
98
|
+
function tokenData({ active = true, sub = 'test-user', scope = 'tools:read', aud = 'https://example.com' } = {}) {
|
|
70
99
|
return { active, sub, scope, aud };
|
|
71
100
|
}
|
|
72
|
-
|
|
101
|
+
function tokenCheck({ data = tokenData(), token = 'test-token', passes = true, problem = TokenProblem.NO_TOKEN, resourceMetadataUrl = 'https://example.com/.well-known/oauth-protected-resource' } = {}) {
|
|
73
102
|
if (passes) {
|
|
74
103
|
return { passes, token, data, };
|
|
75
104
|
}
|
|
@@ -77,7 +106,7 @@ export function tokenCheck({ data = tokenData(), token = 'test-token', passes =
|
|
|
77
106
|
return { passes, token, data, problem, resourceMetadataUrl };
|
|
78
107
|
}
|
|
79
108
|
}
|
|
80
|
-
|
|
109
|
+
function serverResponse() {
|
|
81
110
|
return {
|
|
82
111
|
getHeader: vi.fn(),
|
|
83
112
|
setHeader: vi.fn(),
|
|
@@ -85,4 +114,6 @@ export function serverResponse() {
|
|
|
85
114
|
end: vi.fn(),
|
|
86
115
|
};
|
|
87
116
|
}
|
|
88
|
-
|
|
117
|
+
|
|
118
|
+
export { DESTINATION, SOURCE, charge, config, incomingMessage, incomingToolMessage, logger, mcpRequest, mcpToolRequest, oAuthClient, oneCentCharge, paymentServer, serverResponse, tokenCheck, tokenData, zeroCharge };
|
|
119
|
+
//# sourceMappingURL=serverTestHelpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverTestHelpers.js","
|
|
1
|
+
{"version":3,"file":"serverTestHelpers.js","sources":["../src/types.ts","../src/serverTestHelpers.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;;;;AAmDA,IAAY,YAOX;AAPD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,YAAA,CAAA,wBAAA,CAAA,GAAA,wBAAiD;AACjD,IAAA,YAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AAC/B,IAAA,YAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AACrC,IAAA,YAAA,CAAA,sBAAA,CAAA,GAAA,sBAA6C;AAC7C,IAAA,YAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AACvC,CAAC,EAPW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;;ACnDxB;AAaO,MAAM,WAAW,GAAG;AACpB,MAAM,MAAM,GAAG;AAEhB,SAAU,MAAM,CAAC,EACnB,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,EACxB,QAAQ,GAAG,MAAM,EACjB,OAAO,GAAG,QAAQ,EAClB,WAAW,GAAG,WAAW,EACzB,MAAM,GAAG,MAAM,EAAA,GAOb,EAAE,EAAA;IAEN,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE;AAC3D;AAEO,MAAM,aAAa,GAAG,MAAM,CAAC,EAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAC;AAEtD,MAAM,UAAU,GAAG,MAAM,CAAC,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAC;SAEvC,MAAM,GAAA;IACpB,OAAO;QACL,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,GAAW,KAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,CAAA,CAAC,CAAC;QACxE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,GAAW,KAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAC,CAAC;QACtE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,GAAW,KAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAC,CAAC;QACtE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,GAAW,KAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,CAAA,CAAC,CAAC;KACzE;AACH;AAEM,SAAU,MAAM,CAAC,IAAA,GAA4B,EAAE,EAAA;;AAEnD,IAAA,MAAM,UAAU,GAAG,MAAM,EAAE;IAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,aAAa,EAAE;AACnD,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI;QACtC,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAClD,yBAAyB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAC1D,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,YAAY;KAClD;AAER,IAAA,MAAM,MAAM,GAAe;AACzB,QAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW;AAC5C,QAAA,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,GAAG;AAChC,QAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,MAAM;AACjC,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM;AAC/B,QAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,4BAA4B;AACnD,QAAA,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,kBAAkB;AAC/C,QAAA,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;AACjC,QAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;QAC/B,OAAO;QACP,WAAW;AACX,QAAA,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,aAAa,EAAE;AACpD,QAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,UAAU;AACjC,QAAA,GAAG;KACJ;AAED,IAAA,OAAO,MAAM;AACf;SAEgB,aAAa,CAAC,EAC5B,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAC,CAAC,EAC5E,oBAAoB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,EAC5E,GAAG,EAAE,EAAA;IACJ,OAAO;QACL,MAAM;QACN,oBAAoB;KACO;AAC/B;SAEgB,UAAU,CAAC,EAAC,MAAM,GAAG,YAAY,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,GAAG,QAAQ,KAIzE,EAAE,EAAA;IAEJ,OAAO,EAAE,OAAO,EAAE,KAAc,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;AACxD;SAEgB,cAAc,CAAC,EAC3B,QAAQ,GAAG,UAAU,EACrB,IAAI,GAAG,EAAC,QAAQ,EAAE,MAAM,EAAC,MAIvB,EAAE,EAAA;IAEN,OAAO,UAAU,CAAC,EAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAC,EAAC,CAAC;AACtF;AAEM,SAAU,eAAe,CAAC,EAC5B,IAAI,GAAG,EAAE,EACT,MAAM,GAAG,MAAM,EACf,GAAG,GAAG,GAAG,EACT,OAAO,GAAG,EAAC,cAAc,EAAE,kBAAkB,EAAC,EAAA,GAM5C,EAAE,EAAA;IAEN,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACvC,IAAA,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC;QAC1B,IAAI,GAAA;AACF,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACjB;AACD,KAAA,CAAoB;AACrB,IAAA,MAAM,CAAC,MAAM,GAAG,MAAM;AACtB,IAAA,MAAM,CAAC,GAAG,GAAG,GAAG;AAChB,IAAA,MAAM,CAAC,OAAO,GAAG,OAAO;AACxB,IAAA,OAAO,MAAM;AACf;AAEM,SAAU,mBAAmB,CAAC,EAChC,UAAU,GAAG,SAAS,EACtB,GAAG,GAAG,GAAG,GAAA,GAIP,EAAE,EAAA;AAEN,IAAA,OAAO,eAAe,CAAC;QACrB,IAAI,EAAE,cAAc,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAC,CAAC;QAC5C,OAAO,EAAE,EAAC,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAC;QAC1E;AACD,KAAA,CAAC;AACJ;AAEM,SAAU,WAAW,CAAC,EAC1B,gBAAgB,GAAG,SAAS,EAAE,EAC9B,mBAAmB,GAAG;AACpB,IAAA,MAAM,EAAE,sBAAsB;AAC/B,CAAA,EAAA,GAIC,EAAE,EAAA;IACJ,OAAO;QACL,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;QAC5D,0BAA0B,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,mBAAmB;KACxC;AACrC;AAEM,SAAU,SAAS,CAAC,EACtB,MAAM,GAAG,IAAI,EACb,GAAG,GAAG,WAAW,EACjB,KAAK,GAAG,YAAY,EACpB,GAAG,GAAG,qBAAqB,KACL,EAAE,EAAA;IAE1B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;AACpC;AAEM,SAAU,UAAU,CAAC,EACzB,IAAI,GAAG,SAAS,EAAE,EAClB,KAAK,GAAG,YAAY,EACpB,MAAM,GAAG,IAAI,EACb,OAAO,GAAG,YAAY,CAAC,QAAQ,EAC/B,mBAAmB,GAAG,0DAA0D,EAAA,GAO9E,EAAE,EAAA;IACJ,IAAI,MAAM,EAAE;AACV,QAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,GAAqB;IACnD;SAAO;QACL,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAoB;IAChF;AACF;SAEgB,cAAc,GAAA;IAC5B,OAAO;AACL,QAAA,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;AAClB,QAAA,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;AAClB,QAAA,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;AAClB,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;KACgB;AAChC;;;;"}
|
package/dist/types.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
var TokenProblem;
|
|
2
2
|
(function (TokenProblem) {
|
|
3
3
|
TokenProblem["NO_TOKEN"] = "NO-TOKEN";
|
|
4
4
|
TokenProblem["NON_BEARER_AUTH_HEADER"] = "NON-BEARER-AUTH-HEADER";
|
|
@@ -7,4 +7,6 @@ export var TokenProblem;
|
|
|
7
7
|
TokenProblem["NON_SUFFICIENT_FUNDS"] = "NON-SUFFICIENT-FUNDS";
|
|
8
8
|
TokenProblem["INTROSPECT_ERROR"] = "INTROSPECT-ERROR";
|
|
9
9
|
})(TokenProblem || (TokenProblem = {}));
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
export { TokenProblem };
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":[null],"names":[],"mappings":"IAmDY;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,YAAA,CAAA,wBAAA,CAAA,GAAA,wBAAiD;AACjD,IAAA,YAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AAC/B,IAAA,YAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AACrC,IAAA,YAAA,CAAA,sBAAA,CAAA,GAAA,sBAA6C;AAC7C,IAAA,YAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AACvC,CAAC,EAPW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { parseMcpRequestsCore } from '../core/mcp.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Web API implementation of MCP request parsing for Cloudflare Workers, Deno, etc.
|
|
5
|
+
* Handles Web API Request parsing and delegates to core logic
|
|
6
|
+
*/
|
|
7
|
+
async function parseMcpRequestsWebApi(config, request) {
|
|
8
|
+
const requestUrl = new URL(request.url);
|
|
9
|
+
try {
|
|
10
|
+
const text = await request.text();
|
|
11
|
+
if (!text) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
const parsedBody = JSON.parse(text);
|
|
15
|
+
// Use the shared core logic
|
|
16
|
+
return parseMcpRequestsCore(config, requestUrl, request.method, parsedBody);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
config.logger.debug(`Error parsing MCP request: ${error instanceof Error ? error.message : String(error)}`);
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { parseMcpRequestsWebApi };
|
|
25
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sources":["../../src/webapi/mcp.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAIA;;;AAGG;AACI,eAAe,sBAAsB,CAC1C,MAAkB,EAClB,OAAgB,EAAA;IAEhB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AAEvC,IAAA,IAAI;AACF,QAAA,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE;QACjC,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;AAGnC,QAAA,OAAO,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAqB;IACjG;IAAE,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;AAC3G,QAAA,OAAO,EAAE;IACX;AACF;;;;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { createOAuthChallengeResponseCore } from '../core/oauth.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Web API implementation of OAuth challenge sending for Cloudflare Workers, Deno, etc.
|
|
5
|
+
* Uses Web API Response and delegates to core logic
|
|
6
|
+
*/
|
|
7
|
+
function sendOAuthChallengeWebApi(tokenCheck) {
|
|
8
|
+
// Use the shared core logic to get response data
|
|
9
|
+
const responseData = createOAuthChallengeResponseCore(tokenCheck);
|
|
10
|
+
if (!responseData) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
// Convert to Web API Response
|
|
14
|
+
return new Response(responseData.body, {
|
|
15
|
+
status: responseData.status,
|
|
16
|
+
headers: responseData.headers
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function sendProtectedResourceMetadata(metadata) {
|
|
20
|
+
if (!metadata) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
return new Response(JSON.stringify(metadata), {
|
|
24
|
+
status: 200,
|
|
25
|
+
headers: {
|
|
26
|
+
'Content-Type': 'application/json'
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function sendOAuthMetadata(metadata) {
|
|
31
|
+
if (!metadata) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
return new Response(JSON.stringify(metadata), {
|
|
35
|
+
status: 200,
|
|
36
|
+
headers: {
|
|
37
|
+
'Content-Type': 'application/json'
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { sendOAuthChallengeWebApi, sendOAuthMetadata, sendProtectedResourceMetadata };
|
|
43
|
+
//# sourceMappingURL=oauth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.js","sources":["../../src/webapi/oauth.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAIA;;;AAGG;AACG,SAAU,wBAAwB,CAAC,UAAsB,EAAA;;AAE7D,IAAA,MAAM,YAAY,GAAG,gCAAgC,CAAC,UAAU,CAAC;IAEjE,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,OAAO,IAAI;IACb;;AAGA,IAAA,OAAO,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE;QACrC,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,OAAO,EAAE,YAAY,CAAC;AACvB,KAAA,CAAC;AACJ;AAEM,SAAU,6BAA6B,CAAC,QAA0C,EAAA;IACtF,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;AAC5C,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,OAAO,EAAE;AACP,YAAA,cAAc,EAAE;AACjB;AACF,KAAA,CAAC;AACJ;AAEM,SAAU,iBAAiB,CAAC,QAA0C,EAAA;IAC1E,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;AAC5C,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,OAAO,EAAE;AACP,YAAA,cAAc,EAAE;AACjB;AACF,KAAA,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { checkTokenCore } from '../core/token.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Web API implementation of token checking for Cloudflare Workers, Deno, etc.
|
|
5
|
+
* Extracts data from Web API Request and delegates to core logic
|
|
6
|
+
*/
|
|
7
|
+
async function checkTokenWebApi(config, resourceURL, request) {
|
|
8
|
+
// Extract authorization header from Web API request
|
|
9
|
+
const authorizationHeader = request.headers.get('authorization');
|
|
10
|
+
// Use the shared core logic
|
|
11
|
+
return checkTokenCore(config, resourceURL, authorizationHeader);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { checkTokenWebApi };
|
|
15
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sources":["../../src/webapi/token.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAGA;;;AAGG;AACI,eAAe,gBAAgB,CACpC,MAAkB,EAClB,WAAgB,EAChB,OAAgB,EAAA;;IAGhB,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;;IAGhE,OAAO,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,mBAAmB,CAAC;AACjE;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atxp/server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "ATXP Server - MCP server implementation with payment processing capabilities",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -9,35 +9,49 @@
|
|
|
9
9
|
"directory": "packages/atxp-server"
|
|
10
10
|
},
|
|
11
11
|
"type": "module",
|
|
12
|
-
"
|
|
12
|
+
"sideEffects": false,
|
|
13
|
+
"main": "./dist/index.cjs",
|
|
14
|
+
"module": "./dist/index.js",
|
|
13
15
|
"types": "./dist/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"import": "./dist/index.js",
|
|
20
|
+
"require": "./dist/index.cjs"
|
|
21
|
+
},
|
|
22
|
+
"./serverTestHelpers": {
|
|
23
|
+
"types": "./dist/serverTestHelpers.d.ts",
|
|
24
|
+
"import": "./dist/serverTestHelpers.js",
|
|
25
|
+
"require": "./dist/serverTestHelpers.js"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
14
28
|
"files": [
|
|
15
29
|
"dist"
|
|
16
30
|
],
|
|
17
31
|
"scripts": {
|
|
18
|
-
"build": "
|
|
32
|
+
"build": "rollup -c",
|
|
19
33
|
"typecheck": "tsc --noEmit",
|
|
20
34
|
"lint": "eslint . --ext .ts",
|
|
21
35
|
"lint:fix": "eslint . --ext .ts --fix",
|
|
22
|
-
"test": "vitest run"
|
|
36
|
+
"test": "vitest run",
|
|
37
|
+
"prepack": "npm run build && npm run typecheck",
|
|
38
|
+
"pack:dry": "npm pack --dry-run"
|
|
23
39
|
},
|
|
24
40
|
"dependencies": {
|
|
25
|
-
"@atxp/common": "0.
|
|
41
|
+
"@atxp/common": "0.4.0",
|
|
26
42
|
"@modelcontextprotocol/sdk": "^1.15.0",
|
|
27
|
-
"@types/express": "^5.0.0",
|
|
28
43
|
"bignumber.js": "^9.3.0",
|
|
29
|
-
"content-type": "^1.0.5",
|
|
30
|
-
"express": "^5.0.0",
|
|
31
44
|
"oauth4webapi": "^3.5.0"
|
|
32
45
|
},
|
|
46
|
+
"peerDependencies": {
|
|
47
|
+
"content-type": "^1.0.5"
|
|
48
|
+
},
|
|
33
49
|
"devDependencies": {
|
|
34
50
|
"@types/node": "^22.13.0",
|
|
35
|
-
"@types/supertest": "^6.0.3",
|
|
36
51
|
"@typescript-eslint/eslint-plugin": "^8.38.0",
|
|
37
52
|
"@typescript-eslint/parser": "^8.38.0",
|
|
38
53
|
"eslint": "^9.32.0",
|
|
39
54
|
"node-mocks-http": "^1.17.2",
|
|
40
|
-
"supertest": "^7.1.4",
|
|
41
55
|
"typescript": "^5.7.3",
|
|
42
56
|
"vitest": "^3.0.9"
|
|
43
57
|
}
|
package/dist/atxpContext.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { ATXPConfig, TokenCheck } from "./types.js";
|
|
2
|
-
export declare function getATXPConfig(): ATXPConfig | null;
|
|
3
|
-
export declare function getATXPResource(): URL | null;
|
|
4
|
-
export declare function atxpAccountId(): string | null;
|
|
5
|
-
export declare function withATXPContext(config: ATXPConfig, resource: URL, tokenInfo: Pick<TokenCheck, 'token' | 'data'> | null, next: () => void): Promise<void>;
|
|
6
|
-
//# sourceMappingURL=atxpContext.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"atxpContext.d.ts","sourceRoot":"","sources":["../src/atxpContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAWpD,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,CAGjD;AAED,wBAAgB,eAAe,IAAI,GAAG,GAAG,IAAI,CAG5C;AAGD,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAG7C;AAGD,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB9J"}
|
package/dist/atxpServer.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { ATXPConfig } from "./types.js";
|
|
2
|
-
import { Router } from "express";
|
|
3
|
-
type RequiredATXPConfigFields = 'destination';
|
|
4
|
-
type RequiredATXPConfig = Pick<ATXPConfig, RequiredATXPConfigFields>;
|
|
5
|
-
type OptionalATXPConfig = Omit<ATXPConfig, RequiredATXPConfigFields>;
|
|
6
|
-
export type ATXPArgs = RequiredATXPConfig & Partial<OptionalATXPConfig>;
|
|
7
|
-
type BuildableATXPConfigFields = 'oAuthDb' | 'oAuthClient' | 'paymentServer' | 'logger';
|
|
8
|
-
export declare const DEFAULT_CONFIG: Required<Omit<OptionalATXPConfig, BuildableATXPConfigFields>>;
|
|
9
|
-
export declare function buildServerConfig(args: ATXPArgs): ATXPConfig;
|
|
10
|
-
export declare function atxpServer(args: ATXPArgs): Router;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=atxpServer.d.ts.map
|
package/dist/atxpServer.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"atxpServer.d.ts","sourceRoot":"","sources":["../src/atxpServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AAKvD,OAAO,EAAmC,MAAM,EAAE,MAAM,SAAS,CAAC;AAMlE,KAAK,wBAAwB,GAAG,aAAa,CAAC;AAC9C,KAAK,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;AACrE,KAAK,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;AACrE,MAAM,MAAM,QAAQ,GAAG,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACxE,KAAK,yBAAyB,GAAG,SAAS,GAAG,aAAa,GAAG,eAAe,GAAG,QAAQ,CAAC;AAExF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,yBAAyB,CAAC,CASxF,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CA8B5D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAyDjD"}
|
package/dist/atxpServer.js
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { ConsoleLogger, OAuthResourceClient, DEFAULT_AUTHORIZATION_SERVER, MemoryOAuthDb } from "@atxp/common";
|
|
2
|
-
import { checkToken } from "./token.js";
|
|
3
|
-
import { sendOAuthChallenge } from "./oAuthChallenge.js";
|
|
4
|
-
import { withATXPContext } from "./atxpContext.js";
|
|
5
|
-
import { parseMcpRequests } from "./http.js";
|
|
6
|
-
import { Router } from "express";
|
|
7
|
-
import { getProtectedResourceMetadata as getPRMResponse, sendProtectedResourceMetadata } from "./protectedResourceMetadata.js";
|
|
8
|
-
import { getResource } from "./getResource.js";
|
|
9
|
-
import { ATXPPaymentServer } from "./paymentServer.js";
|
|
10
|
-
import { getOAuthMetadata, sendOAuthMetadata } from "./oAuthMetadata.js";
|
|
11
|
-
export const DEFAULT_CONFIG = {
|
|
12
|
-
mountPath: '/',
|
|
13
|
-
currency: 'USDC',
|
|
14
|
-
network: 'base',
|
|
15
|
-
server: DEFAULT_AUTHORIZATION_SERVER,
|
|
16
|
-
atxpAuthClientToken: undefined, // Will be set in buildServerConfig
|
|
17
|
-
payeeName: 'An ATXP Server',
|
|
18
|
-
allowHttp: false, // May be overridden in buildServerConfig by process.env.NODE_ENV
|
|
19
|
-
resource: null, // Set dynamically from the request URL
|
|
20
|
-
};
|
|
21
|
-
export function buildServerConfig(args) {
|
|
22
|
-
if (!args.destination) {
|
|
23
|
-
throw new Error('destination is required');
|
|
24
|
-
}
|
|
25
|
-
// Read environment variables at runtime, not module load time
|
|
26
|
-
const envDefaults = {
|
|
27
|
-
...DEFAULT_CONFIG,
|
|
28
|
-
atxpAuthClientToken: process.env.ATXP_AUTH_CLIENT_TOKEN,
|
|
29
|
-
allowHttp: process.env.NODE_ENV === 'development',
|
|
30
|
-
};
|
|
31
|
-
const withDefaults = { ...envDefaults, ...args };
|
|
32
|
-
const oAuthDb = withDefaults.oAuthDb ?? new MemoryOAuthDb();
|
|
33
|
-
const oAuthClient = withDefaults.oAuthClient ?? new OAuthResourceClient({
|
|
34
|
-
db: oAuthDb,
|
|
35
|
-
allowInsecureRequests: withDefaults.allowHttp,
|
|
36
|
-
clientName: withDefaults.payeeName,
|
|
37
|
-
});
|
|
38
|
-
const logger = withDefaults.logger ?? new ConsoleLogger();
|
|
39
|
-
let paymentServer;
|
|
40
|
-
if (withDefaults.paymentServer) {
|
|
41
|
-
paymentServer = withDefaults.paymentServer;
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
if (!withDefaults.atxpAuthClientToken) {
|
|
45
|
-
throw new Error('ATXP_AUTH_CLIENT_TOKEN is not set. If no payment server is provided, you must set ATXP_AUTH_CLIENT_TOKEN.');
|
|
46
|
-
}
|
|
47
|
-
paymentServer = new ATXPPaymentServer(withDefaults.server, withDefaults.atxpAuthClientToken, logger);
|
|
48
|
-
}
|
|
49
|
-
const built = { oAuthDb, oAuthClient, paymentServer, logger };
|
|
50
|
-
return Object.freeze({ ...withDefaults, ...built });
|
|
51
|
-
}
|
|
52
|
-
;
|
|
53
|
-
export function atxpServer(args) {
|
|
54
|
-
const config = buildServerConfig(args);
|
|
55
|
-
const router = Router();
|
|
56
|
-
// Regular middleware
|
|
57
|
-
const atxpMiddleware = async (req, res, next) => {
|
|
58
|
-
try {
|
|
59
|
-
const logger = config.logger; // Capture logger in closure
|
|
60
|
-
const requestUrl = new URL(req.url, req.protocol + '://' + req.host);
|
|
61
|
-
logger.debug(`Handling ${req.method} ${requestUrl.toString()}`);
|
|
62
|
-
const resource = getResource(config, requestUrl);
|
|
63
|
-
const prmResponse = getPRMResponse(config, requestUrl);
|
|
64
|
-
if (sendProtectedResourceMetadata(res, prmResponse)) {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
// Some older clients don't use PRM and assume the MCP server is an OAuth server
|
|
68
|
-
const oAuthMetadata = await getOAuthMetadata(config, requestUrl);
|
|
69
|
-
if (sendOAuthMetadata(res, oAuthMetadata)) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
const mcpRequests = await parseMcpRequests(config, requestUrl, req, req.body);
|
|
73
|
-
logger.debug(`${mcpRequests.length} MCP requests found in request`);
|
|
74
|
-
if (mcpRequests.length === 0) {
|
|
75
|
-
next();
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
logger.debug(`Request started - ${req.method} ${req.path}`);
|
|
79
|
-
const tokenCheck = await checkToken(config, resource, req);
|
|
80
|
-
const user = tokenCheck.data?.sub ?? null;
|
|
81
|
-
// Listen for when the response is finished
|
|
82
|
-
res.on('finish', async () => {
|
|
83
|
-
logger.debug(`Request finished ${user ? `for user ${user} ` : ''}- ${req.method} ${req.path}`);
|
|
84
|
-
});
|
|
85
|
-
// Send the oauth challenge, if needed. If we do, we're done
|
|
86
|
-
if (sendOAuthChallenge(res, tokenCheck)) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
return withATXPContext(config, resource, tokenCheck, next);
|
|
90
|
-
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
config.logger.error(`Critical error in atxp middleware - returning HTTP 500. Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
93
|
-
config.logger.debug(JSON.stringify(error, null, 2));
|
|
94
|
-
res.status(500).json({ error: 'server_error', error_description: 'An internal server error occurred' });
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
// Add middleware to the router
|
|
98
|
-
router.use(atxpMiddleware);
|
|
99
|
-
return router;
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=atxpServer.js.map
|
package/dist/atxpServer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"atxpServer.js","sourceRoot":"","sources":["../src/atxpServer.ts"],"names":[],"mappings":"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"}
|
package/dist/getResource.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getResource.d.ts","sourceRoot":"","sources":["../src/getResource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAGxC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,GAAG,GAAG,CAapE"}
|
package/dist/http.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { IncomingMessage } from "node:http";
|
|
2
|
-
import { JSONRPCRequest } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
-
import { ATXPConfig } from "./types.js";
|
|
4
|
-
import { Logger } from "@atxp/common";
|
|
5
|
-
export declare function parseMcpRequests(config: ATXPConfig, requestUrl: URL, req: IncomingMessage, parsedBody?: unknown): Promise<JSONRPCRequest[]>;
|
|
6
|
-
export declare function parseBody(req: IncomingMessage, logger: Logger): Promise<unknown>;
|
|
7
|
-
//# sourceMappingURL=http.d.ts.map
|
package/dist/http.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAE,cAAc,EAAoB,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAoB,MAAM,EAAE,MAAM,cAAc,CAAC;AAQxD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA0BjJ;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBtF"}
|
package/dist/http.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import getRawBody from "raw-body";
|
|
2
|
-
import contentType from "content-type";
|
|
3
|
-
import { isJSONRPCRequest } from "@modelcontextprotocol/sdk/types.js";
|
|
4
|
-
import { parseMcpMessages } from "@atxp/common";
|
|
5
|
-
// Useful reference for dealing with low-level http requests:
|
|
6
|
-
// https://github.com/modelcontextprotocol/typescript-sdk/blob/c6ac083b1b37b222b5bfba5563822daa5d03372e/src/server/streamableHttp.ts#L375
|
|
7
|
-
// Using the same value as MCP SDK
|
|
8
|
-
const MAXIMUM_MESSAGE_SIZE = "4mb";
|
|
9
|
-
export async function parseMcpRequests(config, requestUrl, req, parsedBody) {
|
|
10
|
-
if (!req.method) {
|
|
11
|
-
return [];
|
|
12
|
-
}
|
|
13
|
-
if (req.method.toLowerCase() !== 'post') {
|
|
14
|
-
return [];
|
|
15
|
-
}
|
|
16
|
-
// The middleware has to be mounted at the root to serve the protected resource metadata,
|
|
17
|
-
// but the actual MCP server it's controlling is specified by the mountPath.
|
|
18
|
-
const path = requestUrl.pathname.replace(/\/$/, '');
|
|
19
|
-
const mountPath = config.mountPath.replace(/\/$/, '');
|
|
20
|
-
if (path !== mountPath && path !== `${mountPath}/message`) {
|
|
21
|
-
config.logger.debug(`Request path (${path}) does not match the mountPath (${mountPath}), skipping MCP middleware`);
|
|
22
|
-
return [];
|
|
23
|
-
}
|
|
24
|
-
parsedBody = parsedBody ?? await parseBody(req, config.logger);
|
|
25
|
-
const messages = await parseMcpMessages(parsedBody, config.logger);
|
|
26
|
-
const requests = messages.filter(msg => isJSONRPCRequest(msg));
|
|
27
|
-
if (requests.length !== messages.length) {
|
|
28
|
-
config.logger.debug(`Dropped ${messages.length - requests.length} MCP messages that were not MCP requests`);
|
|
29
|
-
}
|
|
30
|
-
return requests;
|
|
31
|
-
}
|
|
32
|
-
export async function parseBody(req, logger) {
|
|
33
|
-
try {
|
|
34
|
-
const ct = req.headers["content-type"];
|
|
35
|
-
let encoding = "utf-8";
|
|
36
|
-
if (ct) {
|
|
37
|
-
const parsedCt = contentType.parse(ct);
|
|
38
|
-
encoding = parsedCt.parameters.charset ?? "utf-8";
|
|
39
|
-
}
|
|
40
|
-
const body = await getRawBody(req, {
|
|
41
|
-
limit: MAXIMUM_MESSAGE_SIZE,
|
|
42
|
-
encoding,
|
|
43
|
-
});
|
|
44
|
-
return JSON.parse(body.toString());
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
logger.error(error.message);
|
|
48
|
-
return undefined;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,UAAU,CAAC;AAClC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,EAAkB,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtF,OAAO,EAAE,gBAAgB,EAAU,MAAM,cAAc,CAAC;AAExD,6DAA6D;AAC7D,yIAAyI;AAEzI,kCAAkC;AAClC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAkB,EAAE,UAAe,EAAE,GAAoB,EAAE,UAAoB;IACpH,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,yFAAyF;IACzF,4EAA4E;IAC5E,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,GAAG,SAAS,UAAU,EAAE,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,mCAAmC,SAAS,4BAA4B,CAAC,CAAC;QACnH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,UAAU,GAAG,UAAU,IAAI,MAAM,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEnE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,0CAA0C,CAAC,CAAC;IAC9G,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAoB,EAAE,MAAc;IAClE,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEvC,IAAI,QAAQ,GAAG,OAAO,CAAC;QACvB,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACvC,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,IAAI,OAAO,CAAC;QACpD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE;YACjC,KAAK,EAAE,oBAAoB;YAC3B,QAAQ;SACT,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
|
package/dist/oAuthChallenge.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oAuthChallenge.d.ts","sourceRoot":"","sources":["../src/oAuthChallenge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAGtD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAsCvF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oAuthChallenge.js","sourceRoot":"","sources":["../src/oAuthChallenge.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,UAAU,kBAAkB,CAAC,GAAmB,EAAE,UAAsB;IAC5E,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,IAAI,IAAI,GAAkE,EAAE,CAAC;IAC7E,4DAA4D;IAC5D,QAAQ,UAAU,CAAC,OAAO,EAAE,CAAC;QAC3B,KAAK,YAAY,CAAC,QAAQ;YACxB,MAAM;QACR,KAAK,YAAY,CAAC,sBAAsB;YACtC,MAAM,GAAG,GAAG,CAAC;YACb,IAAI,GAAG,EAAE,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qDAAqD,EAAE,CAAC;YAC9G,MAAM;QACR,KAAK,YAAY,CAAC,aAAa;YAC7B,IAAI,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;YAC5E,MAAM;QACR,KAAK,YAAY,CAAC,gBAAgB;YAChC,IAAI,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,+CAA+C,EAAE,CAAC;YACtG,MAAM;QACR,KAAK,YAAY,CAAC,oBAAoB;YACpC,MAAM,GAAG,GAAG,CAAC;YACb,IAAI,GAAG,EAAE,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,CAAC;YAClF,MAAM;QACR,KAAK,YAAY,CAAC,gBAAgB;YAChC,MAAM,GAAG,GAAG,CAAC;YACb,IAAI,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,mCAAmC,EAAE,CAAC;YACzF,MAAM;QACR;YACE,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,6BAA6B,UAAU,CAAC,mBAAmB,GAAG,CAAC,CAAC;IAClG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9B,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/oAuthMetadata.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { ATXPConfig } from "./types.js";
|
|
2
|
-
import * as oauth from 'oauth4webapi';
|
|
3
|
-
import { ServerResponse } from "http";
|
|
4
|
-
export declare function sendOAuthMetadata(res: ServerResponse, metadata: oauth.AuthorizationServer | null): boolean;
|
|
5
|
-
export declare function getOAuthMetadata(config: ATXPConfig, requestUrl: URL): Promise<oauth.AuthorizationServer | null>;
|
|
6
|
-
//# sourceMappingURL=oAuthMetadata.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oAuthMetadata.d.ts","sourceRoot":"","sources":["../src/oAuthMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAGtC,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,CAAC,mBAAmB,GAAG,IAAI,GAAG,OAAO,CAQ1G;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAyBrH"}
|