@atxp/server 0.7.3 → 0.8.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.d.ts +7 -0
- package/dist/atxpContext.d.ts.map +1 -0
- package/dist/atxpContext.js.map +1 -1
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/mcp.d.ts +7 -0
- package/dist/core/mcp.d.ts.map +1 -0
- package/dist/core/oauth.d.ts +11 -0
- package/dist/core/oauth.d.ts.map +1 -0
- package/dist/core/token.d.ts +7 -0
- package/dist/core/token.d.ts.map +1 -0
- package/dist/getResource.d.ts +4 -0
- package/dist/getResource.d.ts.map +1 -0
- package/dist/index.cjs +75 -120
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +32 -36
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +77 -120
- package/dist/index.js.map +1 -1
- package/dist/node/getRawBody.d.ts +3 -0
- package/dist/node/getRawBody.d.ts.map +1 -0
- package/dist/node/http.d.ts +11 -0
- package/dist/node/http.d.ts.map +1 -0
- package/dist/node/index.d.ts +4 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/oauth.d.ts +11 -0
- package/dist/node/oauth.d.ts.map +1 -0
- package/dist/node/token.d.ts +8 -0
- package/dist/node/token.d.ts.map +1 -0
- package/dist/oAuthMetadata.d.ts +4 -0
- package/dist/oAuthMetadata.d.ts.map +1 -0
- package/dist/paymentServer.d.ts +42 -0
- package/dist/paymentServer.d.ts.map +1 -0
- package/dist/protectedResourceMetadata.d.ts +3 -0
- package/dist/protectedResourceMetadata.d.ts.map +1 -0
- package/dist/requirePayment.d.ts +3 -0
- package/dist/requirePayment.d.ts.map +1 -0
- package/dist/requirePayment.js +45 -24
- package/dist/requirePayment.js.map +1 -1
- package/dist/serverConfig.d.ts +10 -0
- package/dist/serverConfig.d.ts.map +1 -0
- package/dist/serverConfig.js +2 -2
- package/dist/serverConfig.js.map +1 -1
- package/dist/serverTestHelpers.d.ts +30 -16
- package/dist/serverTestHelpers.d.ts.map +1 -0
- package/dist/serverTestHelpers.js +41 -15
- package/dist/serverTestHelpers.js.map +1 -1
- package/dist/types.d.ts +85 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +30 -1
- package/dist/types.js.map +1 -1
- package/dist/webapi/index.d.ts +4 -0
- package/dist/webapi/index.d.ts.map +1 -0
- package/dist/webapi/mcp.d.ts +8 -0
- package/dist/webapi/mcp.d.ts.map +1 -0
- package/dist/webapi/oauth.d.ts +10 -0
- package/dist/webapi/oauth.d.ts.map +1 -0
- package/dist/webapi/token.d.ts +7 -0
- package/dist/webapi/token.d.ts.map +1 -0
- package/package.json +2 -2
- package/dist/paymentDestination.js +0 -97
- package/dist/paymentDestination.js.map +0 -1
package/dist/serverConfig.js
CHANGED
|
@@ -10,8 +10,8 @@ const DEFAULT_CONFIG = {
|
|
|
10
10
|
resource: null, // Set dynamically from the request URL
|
|
11
11
|
};
|
|
12
12
|
function buildServerConfig(args) {
|
|
13
|
-
if (!args.
|
|
14
|
-
throw new Error('
|
|
13
|
+
if (!args.destination) {
|
|
14
|
+
throw new Error('destination is required');
|
|
15
15
|
}
|
|
16
16
|
// Validate minimumPayment if provided
|
|
17
17
|
if (args.minimumPayment && args.minimumPayment.isGreaterThan(1)) {
|
package/dist/serverConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverConfig.js","sources":["../src/serverConfig.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAUO,MAAM,cAAc,GAAkE;AAC3F,IAAA,SAAS,EAAE,GAAG;AACd,IAAA,QAAQ,EAAE,MAAe;AACzB,IAAA,MAAM,EAAE,4BAA4B;AACpC,IAAA,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,IAAI;;AAGV,SAAU,iBAAiB,CAAC,IAAc,EAAA;AAC9C,IAAA,IAAG,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"serverConfig.js","sources":["../src/serverConfig.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAUO,MAAM,cAAc,GAAkE;AAC3F,IAAA,SAAS,EAAE,GAAG;AACd,IAAA,QAAQ,EAAE,MAAe;AACzB,IAAA,MAAM,EAAE,4BAA4B;AACpC,IAAA,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,IAAI;;AAGV,SAAU,iBAAiB,CAAC,IAAc,EAAA;AAC9C,IAAA,IAAG,CAAC,IAAI,CAAC,WAAW,EAAE;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;IAC5C;;AAGA,IAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;AAC/D,QAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;IACvD;;AAGA,IAAA,MAAM,WAAW,GAAG;AAClB,QAAA,GAAG,cAAc;AACjB,QAAA,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;KAClD;IACD,MAAM,YAAY,GAAG,EAAE,GAAG,WAAW,EAAE,GAAG,IAAI,EAAE;IAChD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,IAAI,IAAI,aAAa,EAAE;IAC3D,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,IAAI,IAAI,mBAAmB,CAAC;AACtE,QAAA,EAAE,EAAE,OAAO;QACX,qBAAqB,EAAE,YAAY,CAAC,SAAS;QAC7C,UAAU,EAAE,YAAY,CAAC,SAAS;AACnC,KAAA,CAAC;IACF,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,IAAI,aAAa,EAAE;AACzD,IAAA,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,IAAI,IAAI,iBAAiB,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;IAEtG,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAC;AAC5D,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE,CAAC;AACrD;;;;"}
|
|
@@ -1,23 +1,36 @@
|
|
|
1
1
|
import * as vitest from 'vitest';
|
|
2
2
|
import { IncomingHttpHeaders, IncomingMessage, ServerResponse } from 'http';
|
|
3
3
|
import { JSONRPCRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
-
import {
|
|
5
|
-
import BigNumber$1 from 'bignumber.js';
|
|
4
|
+
import { PaymentRequestData, Account, Currency, AuthorizationServerUrl, UrlString, Logger, OAuthDb, OAuthResourceClient, TokenData, Network } from '@atxp/common';
|
|
6
5
|
import * as oauth from 'oauth4webapi';
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
7
|
+
declare enum McpMethodEnum {
|
|
8
|
+
NotificationsCancelled = "notifications/cancelled",
|
|
9
|
+
Initialize = "initialize",
|
|
10
|
+
Ping = "ping",
|
|
11
|
+
NotificationsProgress = "notifications/progress",
|
|
12
|
+
ResourcesList = "resources/list",
|
|
13
|
+
ResourcesTemplatesList = "resources/templates/list",
|
|
14
|
+
ResourcesRead = "resources/read",
|
|
15
|
+
NotificationsResourcesListChanged = "notifications/resources/list_changed",
|
|
16
|
+
ResourcesSubscribe = "resources/subscribe",
|
|
17
|
+
ResourcesUnsubscribe = "resources/unsubscribe",
|
|
18
|
+
NotificationsResourcesUpdated = "notifications/resources/updated",
|
|
19
|
+
PromptsList = "prompts/list",
|
|
20
|
+
PromptsGet = "prompts/get",
|
|
21
|
+
NotificationsPromptsListChanged = "notifications/prompts/list_changed",
|
|
22
|
+
ToolsList = "tools/list",
|
|
23
|
+
ToolsCall = "tools/call",
|
|
24
|
+
NotificationsToolsListChanged = "notifications/tools/list_changed",
|
|
25
|
+
LoggingSetLevel = "logging/setLevel",
|
|
26
|
+
NotificationsMessage = "notifications/message",
|
|
27
|
+
SamplingCreateMessage = "sampling/createMessage",
|
|
28
|
+
ElicitationCreate = "elicitation/create",
|
|
29
|
+
CompletionComplete = "completion/complete",
|
|
30
|
+
RootsList = "roots/list",
|
|
31
|
+
NotificationsRootsListChanged = "notifications/roots/list_changed"
|
|
18
32
|
}
|
|
19
|
-
|
|
20
|
-
type McpMethod = 'notifications/cancelled' | 'initialize' | 'ping' | 'notifications/progress' | 'resources/list' | 'resources/templates/list' | 'resources/read' | 'notifications/resources/list_changed' | 'resources/subscribe' | 'resources/unsubscribe' | 'notifications/resources/updated' | 'prompts/list' | 'prompts/get' | 'notifications/prompts/list_changed' | 'tools/list' | 'tools/call' | 'notifications/tools/list_changed' | 'logging/setLevel' | 'notifications/message' | 'sampling/createMessage' | 'elicitation/create' | 'completion/complete' | 'roots/list' | 'notifications/roots/list_changed';
|
|
33
|
+
type McpMethod = `${McpMethodEnum}`;
|
|
21
34
|
type McpName = string;
|
|
22
35
|
type Charge = Omit<PaymentRequestData, 'resource' | 'resourceName' | 'iss'>;
|
|
23
36
|
type ChargeResponse = {
|
|
@@ -29,7 +42,7 @@ type PaymentServer = {
|
|
|
29
42
|
createPaymentRequest: (args: Charge) => Promise<string>;
|
|
30
43
|
};
|
|
31
44
|
type ATXPConfig = {
|
|
32
|
-
|
|
45
|
+
destination: Account;
|
|
33
46
|
mountPath: string;
|
|
34
47
|
currency: Currency;
|
|
35
48
|
server: AuthorizationServerUrl;
|
|
@@ -66,6 +79,7 @@ type TokenCheck = TokenCheckPass | TokenCheckFail;
|
|
|
66
79
|
|
|
67
80
|
declare const DESTINATION = "testDestination";
|
|
68
81
|
declare const SOURCE = "testSource";
|
|
82
|
+
declare function mockAccount(accountId: string): Account;
|
|
69
83
|
declare function charge({ amount, currency, network, destination, source }?: {
|
|
70
84
|
amount?: BigNumber;
|
|
71
85
|
currency?: Currency;
|
|
@@ -114,4 +128,4 @@ declare function tokenCheck({ data, token, passes, problem, resourceMetadataUrl
|
|
|
114
128
|
}): TokenCheck;
|
|
115
129
|
declare function serverResponse(): ServerResponse;
|
|
116
130
|
|
|
117
|
-
export { DESTINATION, SOURCE, charge, config, incomingMessage, incomingToolMessage, logger, mcpRequest, mcpToolRequest, oAuthClient, oneCentCharge, paymentServer, serverResponse, tokenCheck, tokenData, zeroCharge };
|
|
131
|
+
export { DESTINATION, SOURCE, charge, config, incomingMessage, incomingToolMessage, logger, mcpRequest, mcpToolRequest, mockAccount, oAuthClient, oneCentCharge, paymentServer, serverResponse, tokenCheck, tokenData, zeroCharge };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serverTestHelpers.d.ts","sourceRoot":"","sources":["../src/serverTestHelpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,35 @@ import { MemoryOAuthDb, DEFAULT_AUTHORIZATION_SERVER } from '@atxp/common';
|
|
|
3
3
|
import { vi } from 'vitest';
|
|
4
4
|
import { BigNumber } from 'bignumber.js';
|
|
5
5
|
|
|
6
|
+
// https://github.com/modelcontextprotocol/typescript-sdk/blob/c6ac083b1b37b222b5bfba5563822daa5d03372e/src/types.ts
|
|
7
|
+
// ctrl+f "method: z.literal(""
|
|
8
|
+
var McpMethodEnum;
|
|
9
|
+
(function (McpMethodEnum) {
|
|
10
|
+
McpMethodEnum["NotificationsCancelled"] = "notifications/cancelled";
|
|
11
|
+
McpMethodEnum["Initialize"] = "initialize";
|
|
12
|
+
McpMethodEnum["Ping"] = "ping";
|
|
13
|
+
McpMethodEnum["NotificationsProgress"] = "notifications/progress";
|
|
14
|
+
McpMethodEnum["ResourcesList"] = "resources/list";
|
|
15
|
+
McpMethodEnum["ResourcesTemplatesList"] = "resources/templates/list";
|
|
16
|
+
McpMethodEnum["ResourcesRead"] = "resources/read";
|
|
17
|
+
McpMethodEnum["NotificationsResourcesListChanged"] = "notifications/resources/list_changed";
|
|
18
|
+
McpMethodEnum["ResourcesSubscribe"] = "resources/subscribe";
|
|
19
|
+
McpMethodEnum["ResourcesUnsubscribe"] = "resources/unsubscribe";
|
|
20
|
+
McpMethodEnum["NotificationsResourcesUpdated"] = "notifications/resources/updated";
|
|
21
|
+
McpMethodEnum["PromptsList"] = "prompts/list";
|
|
22
|
+
McpMethodEnum["PromptsGet"] = "prompts/get";
|
|
23
|
+
McpMethodEnum["NotificationsPromptsListChanged"] = "notifications/prompts/list_changed";
|
|
24
|
+
McpMethodEnum["ToolsList"] = "tools/list";
|
|
25
|
+
McpMethodEnum["ToolsCall"] = "tools/call";
|
|
26
|
+
McpMethodEnum["NotificationsToolsListChanged"] = "notifications/tools/list_changed";
|
|
27
|
+
McpMethodEnum["LoggingSetLevel"] = "logging/setLevel";
|
|
28
|
+
McpMethodEnum["NotificationsMessage"] = "notifications/message";
|
|
29
|
+
McpMethodEnum["SamplingCreateMessage"] = "sampling/createMessage";
|
|
30
|
+
McpMethodEnum["ElicitationCreate"] = "elicitation/create";
|
|
31
|
+
McpMethodEnum["CompletionComplete"] = "completion/complete";
|
|
32
|
+
McpMethodEnum["RootsList"] = "roots/list";
|
|
33
|
+
McpMethodEnum["NotificationsRootsListChanged"] = "notifications/roots/list_changed";
|
|
34
|
+
})(McpMethodEnum || (McpMethodEnum = {}));
|
|
6
35
|
var TokenProblem;
|
|
7
36
|
(function (TokenProblem) {
|
|
8
37
|
TokenProblem["NO_TOKEN"] = "NO-TOKEN";
|
|
@@ -13,22 +42,17 @@ var TokenProblem;
|
|
|
13
42
|
TokenProblem["INTROSPECT_ERROR"] = "INTROSPECT-ERROR";
|
|
14
43
|
})(TokenProblem || (TokenProblem = {}));
|
|
15
44
|
|
|
16
|
-
class ChainPaymentDestination {
|
|
17
|
-
constructor(address, network) {
|
|
18
|
-
this.address = address;
|
|
19
|
-
this.network = network;
|
|
20
|
-
}
|
|
21
|
-
async destinations(_fundingAmount, _buyerAddress) {
|
|
22
|
-
return [{
|
|
23
|
-
destination: this.address,
|
|
24
|
-
network: this.network
|
|
25
|
-
}];
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
45
|
/* eslint-disable @typescript-eslint/no-explicit-any, no-console */
|
|
30
46
|
const DESTINATION = 'testDestination';
|
|
31
47
|
const SOURCE = 'testSource';
|
|
48
|
+
// Helper to create a mock Account for testing
|
|
49
|
+
function mockAccount(accountId) {
|
|
50
|
+
return {
|
|
51
|
+
accountId: `base:${accountId}`, // Format as base:address for tests
|
|
52
|
+
paymentMakers: [],
|
|
53
|
+
getSources: async () => [],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
32
56
|
function charge({ amount = BigNumber(0.01), currency = 'USDC', network = 'solana', destination = DESTINATION, source = SOURCE } = {}) {
|
|
33
57
|
return { amount, currency, network, destination, source };
|
|
34
58
|
}
|
|
@@ -51,8 +75,10 @@ function config(args = {}) {
|
|
|
51
75
|
validateClientCredentials: vi.fn().mockResolvedValue(true),
|
|
52
76
|
extractAccessToken: vi.fn().mockReturnValue('test-token')
|
|
53
77
|
};
|
|
78
|
+
// Create a mock Account for testing
|
|
79
|
+
const mockDestination = args.destination ?? mockAccount(DESTINATION);
|
|
54
80
|
const config = {
|
|
55
|
-
|
|
81
|
+
destination: mockDestination,
|
|
56
82
|
mountPath: args.mountPath ?? '/',
|
|
57
83
|
currency: args.currency ?? 'USDC',
|
|
58
84
|
server: args.server ?? DEFAULT_AUTHORIZATION_SERVER,
|
|
@@ -127,5 +153,5 @@ function serverResponse() {
|
|
|
127
153
|
};
|
|
128
154
|
}
|
|
129
155
|
|
|
130
|
-
export { DESTINATION, SOURCE, charge, config, incomingMessage, incomingToolMessage, logger, mcpRequest, mcpToolRequest, oAuthClient, oneCentCharge, paymentServer, serverResponse, tokenCheck, tokenData, zeroCharge };
|
|
156
|
+
export { DESTINATION, SOURCE, charge, config, incomingMessage, incomingToolMessage, logger, mcpRequest, mcpToolRequest, mockAccount, oAuthClient, oneCentCharge, paymentServer, serverResponse, tokenCheck, tokenData, zeroCharge };
|
|
131
157
|
//# sourceMappingURL=serverTestHelpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverTestHelpers.js","sources":["../src/types.ts","../src/
|
|
1
|
+
{"version":3,"file":"serverTestHelpers.js","sources":["../src/types.ts","../src/serverTestHelpers.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { AuthorizationServerUrl, Currency, Logger, PaymentRequestData, UrlString, OAuthDb, TokenData, OAuthResourceClient, Account } from "@atxp/common";
|
|
2
|
+
export declare enum McpMethodEnum {
|
|
3
|
+
NotificationsCancelled = "notifications/cancelled",
|
|
4
|
+
Initialize = "initialize",
|
|
5
|
+
Ping = "ping",
|
|
6
|
+
NotificationsProgress = "notifications/progress",
|
|
7
|
+
ResourcesList = "resources/list",
|
|
8
|
+
ResourcesTemplatesList = "resources/templates/list",
|
|
9
|
+
ResourcesRead = "resources/read",
|
|
10
|
+
NotificationsResourcesListChanged = "notifications/resources/list_changed",
|
|
11
|
+
ResourcesSubscribe = "resources/subscribe",
|
|
12
|
+
ResourcesUnsubscribe = "resources/unsubscribe",
|
|
13
|
+
NotificationsResourcesUpdated = "notifications/resources/updated",
|
|
14
|
+
PromptsList = "prompts/list",
|
|
15
|
+
PromptsGet = "prompts/get",
|
|
16
|
+
NotificationsPromptsListChanged = "notifications/prompts/list_changed",
|
|
17
|
+
ToolsList = "tools/list",
|
|
18
|
+
ToolsCall = "tools/call",
|
|
19
|
+
NotificationsToolsListChanged = "notifications/tools/list_changed",
|
|
20
|
+
LoggingSetLevel = "logging/setLevel",
|
|
21
|
+
NotificationsMessage = "notifications/message",
|
|
22
|
+
SamplingCreateMessage = "sampling/createMessage",
|
|
23
|
+
ElicitationCreate = "elicitation/create",
|
|
24
|
+
CompletionComplete = "completion/complete",
|
|
25
|
+
RootsList = "roots/list",
|
|
26
|
+
NotificationsRootsListChanged = "notifications/roots/list_changed"
|
|
27
|
+
}
|
|
28
|
+
export type McpMethod = `${McpMethodEnum}`;
|
|
29
|
+
export type McpName = string;
|
|
30
|
+
export type McpNamePattern = McpName | '*';
|
|
31
|
+
export type McpOperation = `${McpMethod}` | `${McpMethod}:${McpName}`;
|
|
32
|
+
export type McpOperationPattern = McpOperation | '*' | `${McpMethod}:*`;
|
|
33
|
+
export type RefundErrors = boolean | 'nonMcpOnly';
|
|
34
|
+
export type Charge = Omit<PaymentRequestData, 'resource' | 'resourceName' | 'iss'>;
|
|
35
|
+
export type ChargeResponse = {
|
|
36
|
+
success: boolean;
|
|
37
|
+
requiredPayment: PaymentRequestData | null;
|
|
38
|
+
};
|
|
39
|
+
export type PaymentServer = {
|
|
40
|
+
charge: (args: Charge) => Promise<ChargeResponse>;
|
|
41
|
+
createPaymentRequest: (args: Charge) => Promise<string>;
|
|
42
|
+
};
|
|
43
|
+
export type ATXPConfig = {
|
|
44
|
+
destination: Account;
|
|
45
|
+
mountPath: string;
|
|
46
|
+
currency: Currency;
|
|
47
|
+
server: AuthorizationServerUrl;
|
|
48
|
+
payeeName: string;
|
|
49
|
+
resource: UrlString | null;
|
|
50
|
+
allowHttp: boolean;
|
|
51
|
+
logger: Logger;
|
|
52
|
+
oAuthDb: OAuthDb;
|
|
53
|
+
oAuthClient: OAuthResourceClient;
|
|
54
|
+
paymentServer: PaymentServer;
|
|
55
|
+
minimumPayment?: BigNumber;
|
|
56
|
+
};
|
|
57
|
+
export declare enum TokenProblem {
|
|
58
|
+
NO_TOKEN = "NO-TOKEN",
|
|
59
|
+
NON_BEARER_AUTH_HEADER = "NON-BEARER-AUTH-HEADER",
|
|
60
|
+
INVALID_TOKEN = "INVALID-TOKEN",
|
|
61
|
+
INVALID_AUDIENCE = "INVALID-AUDIENCE",
|
|
62
|
+
NON_SUFFICIENT_FUNDS = "NON-SUFFICIENT-FUNDS",
|
|
63
|
+
INTROSPECT_ERROR = "INTROSPECT-ERROR"
|
|
64
|
+
}
|
|
65
|
+
export type TokenCheckPass = {
|
|
66
|
+
passes: true;
|
|
67
|
+
token: string;
|
|
68
|
+
data: TokenData;
|
|
69
|
+
};
|
|
70
|
+
export type TokenCheckFail = {
|
|
71
|
+
passes: false;
|
|
72
|
+
problem: TokenProblem;
|
|
73
|
+
token: string | null;
|
|
74
|
+
data: TokenData | null;
|
|
75
|
+
resourceMetadataUrl: string | null;
|
|
76
|
+
};
|
|
77
|
+
export type TokenCheck = TokenCheckPass | TokenCheckFail;
|
|
78
|
+
export type ProtectedResourceMetadata = {
|
|
79
|
+
resource: URL;
|
|
80
|
+
resource_name: string;
|
|
81
|
+
authorization_servers: string[];
|
|
82
|
+
bearer_methods_supported: string[];
|
|
83
|
+
scopes_supported: string[];
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
// https://github.com/modelcontextprotocol/typescript-sdk/blob/c6ac083b1b37b222b5bfba5563822daa5d03372e/src/types.ts
|
|
2
|
+
// ctrl+f "method: z.literal(""
|
|
3
|
+
var McpMethodEnum;
|
|
4
|
+
(function (McpMethodEnum) {
|
|
5
|
+
McpMethodEnum["NotificationsCancelled"] = "notifications/cancelled";
|
|
6
|
+
McpMethodEnum["Initialize"] = "initialize";
|
|
7
|
+
McpMethodEnum["Ping"] = "ping";
|
|
8
|
+
McpMethodEnum["NotificationsProgress"] = "notifications/progress";
|
|
9
|
+
McpMethodEnum["ResourcesList"] = "resources/list";
|
|
10
|
+
McpMethodEnum["ResourcesTemplatesList"] = "resources/templates/list";
|
|
11
|
+
McpMethodEnum["ResourcesRead"] = "resources/read";
|
|
12
|
+
McpMethodEnum["NotificationsResourcesListChanged"] = "notifications/resources/list_changed";
|
|
13
|
+
McpMethodEnum["ResourcesSubscribe"] = "resources/subscribe";
|
|
14
|
+
McpMethodEnum["ResourcesUnsubscribe"] = "resources/unsubscribe";
|
|
15
|
+
McpMethodEnum["NotificationsResourcesUpdated"] = "notifications/resources/updated";
|
|
16
|
+
McpMethodEnum["PromptsList"] = "prompts/list";
|
|
17
|
+
McpMethodEnum["PromptsGet"] = "prompts/get";
|
|
18
|
+
McpMethodEnum["NotificationsPromptsListChanged"] = "notifications/prompts/list_changed";
|
|
19
|
+
McpMethodEnum["ToolsList"] = "tools/list";
|
|
20
|
+
McpMethodEnum["ToolsCall"] = "tools/call";
|
|
21
|
+
McpMethodEnum["NotificationsToolsListChanged"] = "notifications/tools/list_changed";
|
|
22
|
+
McpMethodEnum["LoggingSetLevel"] = "logging/setLevel";
|
|
23
|
+
McpMethodEnum["NotificationsMessage"] = "notifications/message";
|
|
24
|
+
McpMethodEnum["SamplingCreateMessage"] = "sampling/createMessage";
|
|
25
|
+
McpMethodEnum["ElicitationCreate"] = "elicitation/create";
|
|
26
|
+
McpMethodEnum["CompletionComplete"] = "completion/complete";
|
|
27
|
+
McpMethodEnum["RootsList"] = "roots/list";
|
|
28
|
+
McpMethodEnum["NotificationsRootsListChanged"] = "notifications/roots/list_changed";
|
|
29
|
+
})(McpMethodEnum || (McpMethodEnum = {}));
|
|
1
30
|
var TokenProblem;
|
|
2
31
|
(function (TokenProblem) {
|
|
3
32
|
TokenProblem["NO_TOKEN"] = "NO-TOKEN";
|
|
@@ -8,5 +37,5 @@ var TokenProblem;
|
|
|
8
37
|
TokenProblem["INTROSPECT_ERROR"] = "INTROSPECT-ERROR";
|
|
9
38
|
})(TokenProblem || (TokenProblem = {}));
|
|
10
39
|
|
|
11
|
-
export { TokenProblem };
|
|
40
|
+
export { McpMethodEnum, TokenProblem };
|
|
12
41
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAGA;AACA;IACY;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,wBAAA,CAAA,GAAA,yBAAkD;AAClD,IAAA,aAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,aAAA,CAAA,uBAAA,CAAA,GAAA,wBAAgD;AAChD,IAAA,aAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,aAAA,CAAA,wBAAA,CAAA,GAAA,0BAAmD;AACnD,IAAA,aAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,aAAA,CAAA,mCAAA,CAAA,GAAA,sCAA0E;AAC1E,IAAA,aAAA,CAAA,oBAAA,CAAA,GAAA,qBAA0C;AAC1C,IAAA,aAAA,CAAA,sBAAA,CAAA,GAAA,uBAA8C;AAC9C,IAAA,aAAA,CAAA,+BAAA,CAAA,GAAA,iCAAiE;AACjE,IAAA,aAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,aAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,aAAA,CAAA,iCAAA,CAAA,GAAA,oCAAsE;AACtE,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,aAAA,CAAA,+BAAA,CAAA,GAAA,kCAAkE;AAClE,IAAA,aAAA,CAAA,iBAAA,CAAA,GAAA,kBAAoC;AACpC,IAAA,aAAA,CAAA,sBAAA,CAAA,GAAA,uBAA8C;AAC9C,IAAA,aAAA,CAAA,uBAAA,CAAA,GAAA,wBAAgD;AAChD,IAAA,aAAA,CAAA,mBAAA,CAAA,GAAA,oBAAwC;AACxC,IAAA,aAAA,CAAA,oBAAA,CAAA,GAAA,qBAA0C;AAC1C,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,aAAA,CAAA,+BAAA,CAAA,GAAA,kCAAkE;AACpE,CAAC,EAzBW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;IAmEb;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,4 @@
|
|
|
1
|
+
export { checkTokenWebApi } from './token.js';
|
|
2
|
+
export { sendOAuthChallengeWebApi, sendProtectedResourceMetadata as sendProtectedResourceMetadataWebApi, sendOAuthMetadata as sendOAuthMetadataWebApi } from './oauth.js';
|
|
3
|
+
export { parseMcpRequestsWebApi } from './mcp.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/webapi/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,IAAI,mCAAmC,EAAE,iBAAiB,IAAI,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1K,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { JSONRPCRequest } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { ATXPConfig } from "../types.js";
|
|
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
|
+
export declare function parseMcpRequestsWebApi(config: ATXPConfig, request: Request): Promise<JSONRPCRequest[]>;
|
|
8
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/webapi/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,cAAc,EAAE,CAAC,CAiB3B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ProtectedResourceMetadata, TokenCheck } from "../types.js";
|
|
2
|
+
import * as oauth from 'oauth4webapi';
|
|
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
|
+
export declare function sendOAuthChallengeWebApi(tokenCheck: TokenCheck): Response | null;
|
|
8
|
+
export declare function sendProtectedResourceMetadata(metadata: ProtectedResourceMetadata | null): Response | null;
|
|
9
|
+
export declare function sendOAuthMetadata(metadata: oauth.AuthorizationServer | null): Response | null;
|
|
10
|
+
//# sourceMappingURL=oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/webapi/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CAahF;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,CAWzG;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,mBAAmB,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,CAW7F"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ATXPConfig, TokenCheck } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Web API implementation of token checking for Cloudflare Workers, Deno, etc.
|
|
4
|
+
* Extracts data from Web API Request and delegates to core logic
|
|
5
|
+
*/
|
|
6
|
+
export declare function checkTokenWebApi(config: ATXPConfig, resourceURL: URL, request: Request): Promise<TokenCheck>;
|
|
7
|
+
//# sourceMappingURL=token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/webapi/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGrD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,GAAG,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC,CAMrB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atxp/server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "ATXP Server - MCP server implementation with payment processing capabilities",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"pack:dry": "npm pack --dry-run"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@atxp/common": "0.
|
|
41
|
+
"@atxp/common": "0.8.0",
|
|
42
42
|
"@modelcontextprotocol/sdk": "^1.15.0",
|
|
43
43
|
"bignumber.js": "^9.3.0",
|
|
44
44
|
"oauth4webapi": "^3.5.0"
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { ConsoleLogger } from '@atxp/common';
|
|
2
|
-
|
|
3
|
-
class ChainPaymentDestination {
|
|
4
|
-
constructor(address, network) {
|
|
5
|
-
this.address = address;
|
|
6
|
-
this.network = network;
|
|
7
|
-
}
|
|
8
|
-
async destinations(_fundingAmount, _buyerAddress) {
|
|
9
|
-
return [{
|
|
10
|
-
destination: this.address,
|
|
11
|
-
network: this.network
|
|
12
|
-
}];
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
function parseConnectionString(connectionString) {
|
|
16
|
-
const url = new URL(connectionString);
|
|
17
|
-
const origin = url.origin;
|
|
18
|
-
const token = url.searchParams.get('connection_token') || '';
|
|
19
|
-
if (!token) {
|
|
20
|
-
throw new Error('ATXPPaymentDestination: connection string missing connection token');
|
|
21
|
-
}
|
|
22
|
-
return { origin, token };
|
|
23
|
-
}
|
|
24
|
-
class ATXPPaymentDestination {
|
|
25
|
-
constructor(connectionString, opts) {
|
|
26
|
-
const { origin, token } = parseConnectionString(connectionString);
|
|
27
|
-
this.accountServerURL = origin;
|
|
28
|
-
this.token = token;
|
|
29
|
-
this.fetchFn = opts?.fetchFn ?? fetch.bind(globalThis);
|
|
30
|
-
this.logger = opts?.logger ?? new ConsoleLogger({ prefix: '[atxp-payment-destination]' });
|
|
31
|
-
}
|
|
32
|
-
async destinations(fundingAmount, buyerAddress) {
|
|
33
|
-
this.logger.debug(`Getting payment destinations for buyer: ${buyerAddress}, amount: ${fundingAmount.amount.toString()} ${fundingAmount.currency}`);
|
|
34
|
-
const url = new URL(`${this.accountServerURL}/addresses?buyerAddress=${buyerAddress}&amount=${fundingAmount.amount.toString()}`);
|
|
35
|
-
// Add currency parameter if provided
|
|
36
|
-
if (fundingAmount.currency) {
|
|
37
|
-
url.searchParams.set('currency', fundingAmount.currency);
|
|
38
|
-
}
|
|
39
|
-
// Use Basic auth with the token, like ATXPLocalAccount does
|
|
40
|
-
const authHeader = `Basic ${Buffer.from(`${this.token}:`).toString('base64')}`;
|
|
41
|
-
this.logger.debug(`Making request to: ${url.toString()}`);
|
|
42
|
-
const response = await this.fetchFn(url.toString(), {
|
|
43
|
-
method: 'GET',
|
|
44
|
-
headers: {
|
|
45
|
-
'Authorization': authHeader,
|
|
46
|
-
'Accept': 'application/json',
|
|
47
|
-
},
|
|
48
|
-
});
|
|
49
|
-
if (!response.ok) {
|
|
50
|
-
const text = await response.text();
|
|
51
|
-
this.logger.error(`/addresses failed: ${response.status} ${response.statusText} ${text}`);
|
|
52
|
-
throw new Error(`ATXPPaymentDestination: /addresses failed: ${response.status} ${response.statusText} ${text}`);
|
|
53
|
-
}
|
|
54
|
-
const json = await response.json();
|
|
55
|
-
if (!Array.isArray(json) || json.length === 0) {
|
|
56
|
-
this.logger.error('/addresses did not return any addresses');
|
|
57
|
-
throw new Error('ATXPPaymentDestination: /addresses did not return any addresses');
|
|
58
|
-
}
|
|
59
|
-
const addresses = [];
|
|
60
|
-
for (const item of json) {
|
|
61
|
-
const networkFromItem = item?.network;
|
|
62
|
-
if (!item?.address || !networkFromItem) {
|
|
63
|
-
this.logger.warn('Skipping invalid address entry');
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
// Map network values if needed
|
|
67
|
-
let network;
|
|
68
|
-
switch (networkFromItem) {
|
|
69
|
-
case 'ethereum':
|
|
70
|
-
network = 'base'; // Base is an Ethereum L2
|
|
71
|
-
break;
|
|
72
|
-
case 'base':
|
|
73
|
-
case 'base_sepolia':
|
|
74
|
-
case 'world':
|
|
75
|
-
case 'world_sepolia':
|
|
76
|
-
case 'solana':
|
|
77
|
-
network = networkFromItem;
|
|
78
|
-
break;
|
|
79
|
-
default:
|
|
80
|
-
this.logger.warn(`Unknown network: ${networkFromItem}, skipping`);
|
|
81
|
-
continue;
|
|
82
|
-
}
|
|
83
|
-
addresses.push({
|
|
84
|
-
destination: item.address,
|
|
85
|
-
network
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
if (addresses.length === 0) {
|
|
89
|
-
throw new Error('ATXPPaymentDestination: no valid addresses returned');
|
|
90
|
-
}
|
|
91
|
-
this.logger.debug(`Successfully got ${addresses.length} payment destinations`);
|
|
92
|
-
return addresses;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
export { ATXPPaymentDestination, ChainPaymentDestination };
|
|
97
|
-
//# sourceMappingURL=paymentDestination.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paymentDestination.js","sources":["../src/paymentDestination.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|