@fluxa-pay/fluxa-connect-mcp 0.1.3 → 0.1.5
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/payment/payment-client.d.ts +14 -0
- package/dist/payment/payment-client.d.ts.map +1 -0
- package/dist/payment/payment-client.js +91 -0
- package/dist/payment/payment-client.js.map +1 -0
- package/dist/payment/payment-service.d.ts +41 -0
- package/dist/payment/payment-service.d.ts.map +1 -0
- package/dist/payment/payment-service.js +125 -0
- package/dist/payment/payment-service.js.map +1 -0
- package/dist/payment/types.d.ts +47 -0
- package/dist/payment/types.d.ts.map +1 -0
- package/dist/payment/types.js +5 -0
- package/dist/payment/types.js.map +1 -0
- package/dist/server/agent-registry.d.ts +18 -0
- package/dist/server/agent-registry.d.ts.map +1 -0
- package/dist/server/agent-registry.js +94 -0
- package/dist/server/agent-registry.js.map +1 -0
- package/dist/server/config.d.ts +27 -0
- package/dist/server/config.d.ts.map +1 -0
- package/dist/server/config.js +74 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/credential-cache.d.ts +46 -0
- package/dist/server/credential-cache.d.ts.map +1 -0
- package/dist/server/credential-cache.js +163 -0
- package/dist/server/credential-cache.js.map +1 -0
- package/dist/server/stdio-server.d.ts +7 -0
- package/dist/server/stdio-server.d.ts.map +1 -0
- package/dist/server/stdio-server.js +140 -0
- package/dist/server/stdio-server.js.map +1 -0
- package/dist/stdio-server.js.map +1 -1
- package/dist/utils/api.d.ts +43 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api.js +164 -0
- package/dist/utils/api.js.map +1 -0
- package/dist/utils/error-messages.d.ts +21 -0
- package/dist/utils/error-messages.d.ts.map +1 -0
- package/dist/utils/error-messages.js +46 -0
- package/dist/utils/error-messages.js.map +1 -0
- package/dist/utils/jwt-utils.d.ts +25 -0
- package/dist/utils/jwt-utils.d.ts.map +1 -0
- package/dist/utils/jwt-utils.js +68 -0
- package/dist/utils/jwt-utils.js.map +1 -0
- package/dist/utils/logger.d.ts +23 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +75 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +4 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-messages.js","sourceRoot":"","sources":["../../src/utils/error-messages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,SAAiB;IACtE,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,sDAAsD,OAAO,SAAS,WAAW,EAAE,CAAC;AAC7F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAe,EACf,SAAiB,EACjB,YAAqB;IAErB,IAAI,OAAO,GAAG,0CAA0C,CAAC;IAEzD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1D,OAAO,IAAI,wDAAwD,CAAC;QACpE,OAAO,IAAI,wCAAwC,OAAO,MAAM,CAAC;QACjE,OAAO,IAAI,iDAAiD,CAAC;IAC/D,CAAC;SAAM,IAAI,YAAY,EAAE,CAAC;QACxB,OAAO,IAAI,YAAY,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,iEAAiE,CAAC;IAC/E,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,WAAmB;IAC7D,OAAO,CACL,gCAAgC;QAChC,iBAAiB,WAAW,MAAM;QAClC,4BAA4B,CAC7B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAAC,YAAoB;IACjE,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/D,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JWT utilities for parsing, validation, and refresh
|
|
3
|
+
*/
|
|
4
|
+
export interface JWTPayload {
|
|
5
|
+
agent_id: string;
|
|
6
|
+
email: string;
|
|
7
|
+
iat: number;
|
|
8
|
+
exp: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class JWTError extends Error {
|
|
11
|
+
constructor(message: string);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Parse JWT and extract payload
|
|
15
|
+
* Note: This does NOT validate the signature, just parses the payload
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseJWT(jwt: string): JWTPayload;
|
|
18
|
+
/**
|
|
19
|
+
* Check if JWT is expired or expiring soon
|
|
20
|
+
* @param jwt - JWT token to check
|
|
21
|
+
* @param bufferSeconds - How many seconds before expiry to consider "expired" (default: 300 = 5 minutes)
|
|
22
|
+
* @returns true if expired or expiring soon
|
|
23
|
+
*/
|
|
24
|
+
export declare function isJWTExpired(jwt: string, bufferSeconds?: number): boolean;
|
|
25
|
+
//# sourceMappingURL=jwt-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt-utils.d.ts","sourceRoot":"","sources":["../../src/utils/jwt-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,QAAS,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAI5B;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAuBhD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,GAAE,MAAY,GAAG,OAAO,CA0B9E"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JWT utilities for parsing, validation, and refresh
|
|
3
|
+
*/
|
|
4
|
+
import { logger } from './logger.js';
|
|
5
|
+
export class JWTError extends Error {
|
|
6
|
+
constructor(message) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = 'JWTError';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Parse JWT and extract payload
|
|
13
|
+
* Note: This does NOT validate the signature, just parses the payload
|
|
14
|
+
*/
|
|
15
|
+
export function parseJWT(jwt) {
|
|
16
|
+
try {
|
|
17
|
+
const parts = jwt.split('.');
|
|
18
|
+
if (parts.length !== 3) {
|
|
19
|
+
throw new JWTError('Invalid JWT format');
|
|
20
|
+
}
|
|
21
|
+
// Decode base64url payload (middle part)
|
|
22
|
+
const payload = parts[1];
|
|
23
|
+
const decoded = Buffer.from(payload, 'base64url').toString('utf-8');
|
|
24
|
+
const parsed = JSON.parse(decoded);
|
|
25
|
+
if (!parsed.exp || !parsed.agent_id) {
|
|
26
|
+
throw new JWTError('JWT missing required fields (exp, agent_id)');
|
|
27
|
+
}
|
|
28
|
+
return parsed;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
if (error instanceof JWTError) {
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
throw new JWTError(`Failed to parse JWT: ${error.message}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if JWT is expired or expiring soon
|
|
39
|
+
* @param jwt - JWT token to check
|
|
40
|
+
* @param bufferSeconds - How many seconds before expiry to consider "expired" (default: 300 = 5 minutes)
|
|
41
|
+
* @returns true if expired or expiring soon
|
|
42
|
+
*/
|
|
43
|
+
export function isJWTExpired(jwt, bufferSeconds = 300) {
|
|
44
|
+
try {
|
|
45
|
+
const payload = parseJWT(jwt);
|
|
46
|
+
const expiresAt = payload.exp * 1000; // Convert to milliseconds
|
|
47
|
+
const now = Date.now();
|
|
48
|
+
const bufferMs = bufferSeconds * 1000;
|
|
49
|
+
const isExpired = (expiresAt - now) <= bufferMs;
|
|
50
|
+
if (isExpired) {
|
|
51
|
+
const timeUntilExpiry = Math.floor((expiresAt - now) / 1000);
|
|
52
|
+
logger.debug('jwt-utils', 'JWT expired or expiring soon', {
|
|
53
|
+
expiresAt: new Date(expiresAt).toISOString(),
|
|
54
|
+
timeUntilExpiry: `${timeUntilExpiry}s`,
|
|
55
|
+
bufferSeconds
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return isExpired;
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
// If we can't parse the JWT, treat it as expired
|
|
62
|
+
logger.warn('jwt-utils', 'Failed to parse JWT, treating as expired', {
|
|
63
|
+
error: error.message
|
|
64
|
+
});
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=jwt-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt-utils.js","sourceRoot":"","sources":["../../src/utils/jwt-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QAC3C,CAAC;QAED,yCAAyC;QACzC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,QAAQ,CAAC,6CAA6C,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,MAAoB,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,wBAAwB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,gBAAwB,GAAG;IACnE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,0BAA0B;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAC;QAEtC,MAAM,SAAS,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC;QAEhD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,8BAA8B,EAAE;gBACxD,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;gBAC5C,eAAe,EAAE,GAAG,eAAe,GAAG;gBACtC,aAAa;aACd,CAAC,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,iDAAiD;QACjD,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,0CAA0C,EAAE;YACnE,KAAK,EAAE,KAAK,CAAC,OAAO;SACrB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured logging utility
|
|
3
|
+
* Logs to stderr to avoid interfering with MCP stdio protocol
|
|
4
|
+
*/
|
|
5
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
6
|
+
export interface LogContext {
|
|
7
|
+
[key: string]: any;
|
|
8
|
+
}
|
|
9
|
+
declare class Logger {
|
|
10
|
+
private minLevel;
|
|
11
|
+
private levelPriority;
|
|
12
|
+
setLevel(level: LogLevel): void;
|
|
13
|
+
private shouldLog;
|
|
14
|
+
private format;
|
|
15
|
+
private sanitizeContext;
|
|
16
|
+
debug(component: string, message: string, context?: LogContext): void;
|
|
17
|
+
info(component: string, message: string, context?: LogContext): void;
|
|
18
|
+
warn(component: string, message: string, context?: LogContext): void;
|
|
19
|
+
error(component: string, message: string, context?: LogContext): void;
|
|
20
|
+
}
|
|
21
|
+
export declare const logger: Logger;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,cAAM,MAAM;IACV,OAAO,CAAC,QAAQ,CAAoB;IAEpC,OAAO,CAAC,aAAa,CAKnB;IAEF,QAAQ,CAAC,KAAK,EAAE,QAAQ;IAIxB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,MAAM;IAgBd,OAAO,CAAC,eAAe;IAqBvB,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU;IAM9D,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU;IAM7D,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU;IAM7D,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU;CAK/D;AAGD,eAAO,MAAM,MAAM,QAAe,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured logging utility
|
|
3
|
+
* Logs to stderr to avoid interfering with MCP stdio protocol
|
|
4
|
+
*/
|
|
5
|
+
class Logger {
|
|
6
|
+
minLevel = 'info';
|
|
7
|
+
levelPriority = {
|
|
8
|
+
debug: 0,
|
|
9
|
+
info: 1,
|
|
10
|
+
warn: 2,
|
|
11
|
+
error: 3
|
|
12
|
+
};
|
|
13
|
+
setLevel(level) {
|
|
14
|
+
this.minLevel = level;
|
|
15
|
+
}
|
|
16
|
+
shouldLog(level) {
|
|
17
|
+
return this.levelPriority[level] >= this.levelPriority[this.minLevel];
|
|
18
|
+
}
|
|
19
|
+
format(level, component, message, context) {
|
|
20
|
+
const timestamp = new Date().toISOString();
|
|
21
|
+
const levelStr = level.toUpperCase().padEnd(5);
|
|
22
|
+
const componentStr = `[${component}]`;
|
|
23
|
+
let output = `${timestamp} ${levelStr} ${componentStr} ${message}`;
|
|
24
|
+
if (context && Object.keys(context).length > 0) {
|
|
25
|
+
// Filter out sensitive data
|
|
26
|
+
const sanitized = this.sanitizeContext(context);
|
|
27
|
+
output += ` ${JSON.stringify(sanitized)}`;
|
|
28
|
+
}
|
|
29
|
+
return output;
|
|
30
|
+
}
|
|
31
|
+
sanitizeContext(context) {
|
|
32
|
+
const sanitized = { ...context };
|
|
33
|
+
// Remove or mask sensitive fields
|
|
34
|
+
const sensitiveKeys = ['jwt', 'token', 'password', 'secret', 'authorization'];
|
|
35
|
+
for (const key of Object.keys(sanitized)) {
|
|
36
|
+
const lowerKey = key.toLowerCase();
|
|
37
|
+
if (sensitiveKeys.some(s => lowerKey.includes(s))) {
|
|
38
|
+
if (typeof sanitized[key] === 'string') {
|
|
39
|
+
// Show only length for sensitive strings
|
|
40
|
+
sanitized[key] = `[REDACTED:length=${sanitized[key].length}]`;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
sanitized[key] = '[REDACTED]';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return sanitized;
|
|
48
|
+
}
|
|
49
|
+
debug(component, message, context) {
|
|
50
|
+
if (this.shouldLog('debug')) {
|
|
51
|
+
console.error(this.format('debug', component, message, context));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
info(component, message, context) {
|
|
55
|
+
if (this.shouldLog('info')) {
|
|
56
|
+
console.error(this.format('info', component, message, context));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
warn(component, message, context) {
|
|
60
|
+
if (this.shouldLog('warn')) {
|
|
61
|
+
console.error(this.format('warn', component, message, context));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
error(component, message, context) {
|
|
65
|
+
if (this.shouldLog('error')) {
|
|
66
|
+
console.error(this.format('error', component, message, context));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Singleton instance
|
|
71
|
+
export const logger = new Logger();
|
|
72
|
+
// Set log level from environment
|
|
73
|
+
const logLevel = process.env.LOG_LEVEL?.toLowerCase() || 'info';
|
|
74
|
+
logger.setLevel(logLevel);
|
|
75
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluxa-pay/fluxa-connect-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "MCP server with FluxA Wallet Service integration for X402 payments",
|
|
6
6
|
"bin": {
|
|
7
|
-
"fluxa-connect-mcp": "dist/stdio-server.js"
|
|
7
|
+
"fluxa-connect-mcp": "dist/server/stdio-server.js"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"dist",
|
|
@@ -31,6 +31,8 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@modelcontextprotocol/sdk": "1.18.2",
|
|
34
|
+
"axios": "^1.6.0",
|
|
35
|
+
"dotenv": "^16.0.0",
|
|
34
36
|
"x402-fetch": "^0.7.0"
|
|
35
37
|
},
|
|
36
38
|
"devDependencies": {
|