fa-mcp-sdk 0.2.78 → 0.2.80
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/bin/fa-mcp.js +13 -1
- package/dist/core/_types_/types.d.ts +2 -0
- package/dist/core/_types_/types.d.ts.map +1 -1
- package/dist/core/mcp/prompts.d.ts.map +1 -1
- package/dist/core/mcp/prompts.js +2 -0
- package/dist/core/mcp/prompts.js.map +1 -1
- package/dist/core/mcp/resources.d.ts.map +1 -1
- package/dist/core/mcp/resources.js +4 -1
- package/dist/core/mcp/resources.js.map +1 -1
- package/dist/core/token/token-auth.d.ts +16 -0
- package/dist/core/token/token-auth.d.ts.map +1 -1
- package/dist/core/token/token-auth.js +75 -0
- package/dist/core/token/token-auth.js.map +1 -1
- package/package.json +1 -1
package/bin/fa-mcp.js
CHANGED
|
@@ -208,6 +208,11 @@ class MCPGenerator {
|
|
|
208
208
|
skip: true,
|
|
209
209
|
name: 'PM2_NAMESPACE',
|
|
210
210
|
},
|
|
211
|
+
{
|
|
212
|
+
name: 'maintainerUrl',
|
|
213
|
+
defaultValue: '',
|
|
214
|
+
title: 'Maintainer url',
|
|
215
|
+
},
|
|
211
216
|
];
|
|
212
217
|
}
|
|
213
218
|
|
|
@@ -427,7 +432,14 @@ class MCPGenerator {
|
|
|
427
432
|
// Auto-generate upstream from mcp.domain by replacing dots with dashes
|
|
428
433
|
config['upstream'] = value.replace(/\./g, '-');
|
|
429
434
|
}
|
|
430
|
-
continue;
|
|
435
|
+
continue;
|
|
436
|
+
|
|
437
|
+
case 'maintainerUrl':
|
|
438
|
+
value = await ask.optional(title, name, defaultValue);
|
|
439
|
+
if (value) {
|
|
440
|
+
config['maintainerHtml'] = `<a href="${value}" target="_blank" rel="noopener" class="clickable">Support</a>`;
|
|
441
|
+
}
|
|
442
|
+
continue;
|
|
431
443
|
default:
|
|
432
444
|
value = await ask.optional(title, name, defaultValue);
|
|
433
445
|
}
|
|
@@ -5,6 +5,7 @@ export interface IPromptData {
|
|
|
5
5
|
description: string;
|
|
6
6
|
arguments: [];
|
|
7
7
|
content: IPromptContent;
|
|
8
|
+
requireAuth?: boolean;
|
|
8
9
|
}
|
|
9
10
|
export interface IRequiredHttpHeader {
|
|
10
11
|
name: string;
|
|
@@ -25,6 +26,7 @@ export interface IResourceData {
|
|
|
25
26
|
description: string;
|
|
26
27
|
mimeType: string;
|
|
27
28
|
content: IResourceContent;
|
|
29
|
+
requireAuth?: boolean;
|
|
28
30
|
}
|
|
29
31
|
export interface IResource {
|
|
30
32
|
contents: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/_types_/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,EAAE,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/_types_/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAkB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAkB,MAAM,qBAAqB,CAAC;AAgDxE,wBAAgB,cAAc;;EAK7B;AAED,eAAO,MAAM,SAAS,GAAU,SAAS,iBAAiB,KAAG,OAAO,CAAC,GAAG,CA4BvE,CAAC"}
|
package/dist/core/mcp/prompts.js
CHANGED
|
@@ -17,12 +17,14 @@ function createPrompts() {
|
|
|
17
17
|
description: 'Brief description of the agent to be selected in the agent system',
|
|
18
18
|
arguments: [],
|
|
19
19
|
content: agentBrief,
|
|
20
|
+
requireAuth: false,
|
|
20
21
|
},
|
|
21
22
|
{
|
|
22
23
|
name: 'agent_prompt',
|
|
23
24
|
description: 'Detailed prompt of the agent',
|
|
24
25
|
arguments: [],
|
|
25
26
|
content: agentPrompt,
|
|
27
|
+
requireAuth: false,
|
|
26
28
|
},
|
|
27
29
|
...customPrompts,
|
|
28
30
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/core/mcp/prompts.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,SAAS,aAAa;IACpB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACjG,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,GAAG,EAAE,EAAE,GAAG,WAAW,CAAC;IAEpE,+CAA+C;IAC/C,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACjG,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,mEAAmE;YAChF,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,UAAU;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/core/mcp/prompts.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,SAAS,aAAa;IACpB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACjG,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,GAAG,EAAE,EAAE,GAAG,WAAW,CAAC;IAEpE,+CAA+C;IAC/C,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACjG,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,mEAAmE;YAChF,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,UAAU;YACnB,WAAW,EAAE,KAAK;SACnB;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,8BAA8B;YAC3C,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,KAAK;SACnB;QACD,GAAG,aAAa;KACjB,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,IAAI,QAAQ,GAAiB,IAAI,CAAC;AAElC,SAAS,UAAU;IACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,aAAa,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAGD,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,OAA0B,EAAgB,EAAE;IAC1E,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAChC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,iCAAiC;IACjC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,OAAO,GAAmB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACtG,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,OAAO;iBACd;aACF;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/resources.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAuB,SAAS,EAAiB,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/resources.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAuB,SAAS,EAAiB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAwEnG,eAAO,MAAM,gBAAgB,QAAO;IAAE,SAAS,EAAE,aAAa,EAAE,CAAA;CAK/D,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,SAAS,CAsBhE,CAAC"}
|
|
@@ -23,10 +23,11 @@ const createResources = () => {
|
|
|
23
23
|
name: 'project-id',
|
|
24
24
|
description: `Stable identifier of the project.
|
|
25
25
|
Used:
|
|
26
|
-
- to identify the MCP server in the "MCP registry"
|
|
26
|
+
- to identify the MCP server in the "MCP registry"
|
|
27
27
|
- when authorizing with a JWT token`,
|
|
28
28
|
mimeType: 'text/plain',
|
|
29
29
|
content: appConfig.name,
|
|
30
|
+
requireAuth: false,
|
|
30
31
|
},
|
|
31
32
|
{
|
|
32
33
|
uri: 'project://name',
|
|
@@ -34,6 +35,7 @@ Used:
|
|
|
34
35
|
description: 'Human-readable product name for use in the UI',
|
|
35
36
|
mimeType: 'text/plain',
|
|
36
37
|
content: appConfig.productName,
|
|
38
|
+
requireAuth: false,
|
|
37
39
|
},
|
|
38
40
|
{
|
|
39
41
|
uri: 'doc://readme',
|
|
@@ -44,6 +46,7 @@ This information is used by searching for this MCP server and its information in
|
|
|
44
46
|
`,
|
|
45
47
|
mimeType: 'text/markdown',
|
|
46
48
|
content: readme,
|
|
49
|
+
requireAuth: false,
|
|
47
50
|
},
|
|
48
51
|
];
|
|
49
52
|
requiredHttpHeaders = (requiredHttpHeaders || []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/core/mcp/resources.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGxE,IAAI,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;AAClF,IAAI,WAAgB,CAAC;AACrB,IAAI,CAAC;IACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAClG,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,oCAAoC,EAAE,YAAY,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;AACnG,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAGD,MAAM,eAAe,GAAG,GAAoB,EAAE;IAC5C,IAAI,EAAE,eAAe,EAAE,mBAAmB,EAAE,GAAG,cAAc,EAAE,CAAC;IAChE,eAAe,GAAG,CAAC,eAAe,IAAI,EAAE,CAAoB,CAAC;IAC7D,MAAM,SAAS,GAAoB;QACjC;YACE,GAAG,EAAE,cAAc;YACnB,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE;;;oCAGiB;YAC9B,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,SAAS,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/core/mcp/resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,5 +13,21 @@ export declare const getAuthByTokenError: (req: Request) => {
|
|
|
13
13
|
message: string;
|
|
14
14
|
} | undefined;
|
|
15
15
|
export declare const authByToken: (req: Request, res: Response) => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Check if a resource URI is public (doesn't require authentication)
|
|
18
|
+
*/
|
|
19
|
+
export declare const isPublicResource: (uri: string) => boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Check if a prompt name is public (doesn't require authentication)
|
|
22
|
+
*/
|
|
23
|
+
export declare const isPublicPrompt: (name: string) => boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Check if the current MCP request is for a public resource or prompt
|
|
26
|
+
*/
|
|
27
|
+
export declare const isPublicMcpRequest: (req: Request) => boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Create conditional auth middleware that checks for public MCP requests
|
|
30
|
+
*/
|
|
31
|
+
export declare const createConditionalAuthMiddleware: () => (req: Request, res: Response, next: NextFunction) => void;
|
|
16
32
|
export declare const authTokenMW: (req: Request, res: Response, next: NextFunction) => void;
|
|
17
33
|
//# sourceMappingURL=token-auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-auth.d.ts","sourceRoot":"","sources":["../../../src/core/token/token-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"token-auth.d.ts","sourceRoot":"","sources":["../../../src/core/token/token-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAgB1D,eAAO,MAAM,SAAS,GAAI,KAAK,OAAO,EAAE,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CActG,CAAC;AAGF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,KAAK,OAAO,KAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAatF,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,YAOtD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,OAW9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,OAW7C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,KAAK,OAAO,KAAG,OA0BjD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,+BAA+B,SAClC,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,SAexD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,SAY1E,CAAC"}
|
|
@@ -2,6 +2,8 @@ import { cyan, lBlue, magenta, red, reset } from 'af-color';
|
|
|
2
2
|
import { checkToken } from './token-core.js';
|
|
3
3
|
import { debugTokenAuth } from '../debug.js';
|
|
4
4
|
import { appConfig } from '../bootstrap/init-config.js';
|
|
5
|
+
import { getResourcesList } from '../mcp/resources.js';
|
|
6
|
+
import { getPromptsList } from '../mcp/prompts.js';
|
|
5
7
|
const { enabled } = appConfig.webServer.auth;
|
|
6
8
|
const getTokenFromHttpHeader = (req) => {
|
|
7
9
|
return (req.headers.authorization || '').replace(/^Bearer */, '');
|
|
@@ -49,7 +51,80 @@ export const authByToken = (req, res) => {
|
|
|
49
51
|
}
|
|
50
52
|
return true;
|
|
51
53
|
};
|
|
54
|
+
/**
|
|
55
|
+
* Check if a resource URI is public (doesn't require authentication)
|
|
56
|
+
*/
|
|
57
|
+
export const isPublicResource = (uri) => {
|
|
58
|
+
// Get all resources including built-in and custom
|
|
59
|
+
const allResources = getResourcesList().resources;
|
|
60
|
+
const resource = allResources.find(r => r.uri === uri);
|
|
61
|
+
if (!resource) {
|
|
62
|
+
return false; // Unknown resources require auth by default
|
|
63
|
+
}
|
|
64
|
+
// Check if resource explicitly sets requireAuth to false (undefined means true for custom resources)
|
|
65
|
+
return resource.requireAuth === false;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Check if a prompt name is public (doesn't require authentication)
|
|
69
|
+
*/
|
|
70
|
+
export const isPublicPrompt = (name) => {
|
|
71
|
+
// Get all prompts including built-in and custom
|
|
72
|
+
const allPrompts = getPromptsList().prompts;
|
|
73
|
+
const prompt = allPrompts.find(p => p.name === name);
|
|
74
|
+
if (!prompt) {
|
|
75
|
+
return false; // Unknown prompts require auth by default
|
|
76
|
+
}
|
|
77
|
+
// Check if prompt explicitly sets requireAuth to false (undefined means true for custom prompts)
|
|
78
|
+
return prompt.requireAuth === false;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Check if the current MCP request is for a public resource or prompt
|
|
82
|
+
*/
|
|
83
|
+
export const isPublicMcpRequest = (req) => {
|
|
84
|
+
const { method } = req.body || {};
|
|
85
|
+
switch (method) {
|
|
86
|
+
case 'resources/list':
|
|
87
|
+
// Resources list is always public
|
|
88
|
+
return true;
|
|
89
|
+
case 'resources/read': {
|
|
90
|
+
const uri = req.body?.params?.uri;
|
|
91
|
+
return uri ? isPublicResource(uri) : false;
|
|
92
|
+
}
|
|
93
|
+
case 'prompts/list':
|
|
94
|
+
// Prompts list is always public
|
|
95
|
+
return true;
|
|
96
|
+
case 'prompts/get': {
|
|
97
|
+
const name = req.body?.params?.name;
|
|
98
|
+
return name ? isPublicPrompt(name) : false;
|
|
99
|
+
}
|
|
100
|
+
default:
|
|
101
|
+
// All other methods require authentication
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Create conditional auth middleware that checks for public MCP requests
|
|
107
|
+
*/
|
|
108
|
+
export const createConditionalAuthMiddleware = () => {
|
|
109
|
+
return (req, res, next) => {
|
|
110
|
+
// Check if this is an MCP request (HTTP or SSE) that should be public
|
|
111
|
+
const isMcpRequest = req.path === '/mcp' || req.path === '/messages' || req.path === '/sse';
|
|
112
|
+
if (isMcpRequest && isPublicMcpRequest(req)) {
|
|
113
|
+
return next();
|
|
114
|
+
}
|
|
115
|
+
const authError = getAuthByTokenError(req);
|
|
116
|
+
if (authError) {
|
|
117
|
+
res.status(authError.code).send(authError.message);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
next();
|
|
121
|
+
};
|
|
122
|
+
};
|
|
52
123
|
export const authTokenMW = (req, res, next) => {
|
|
124
|
+
// Check if this is a public MCP request
|
|
125
|
+
if (req.path === '/mcp' && isPublicMcpRequest(req)) {
|
|
126
|
+
return next();
|
|
127
|
+
}
|
|
53
128
|
const authError = getAuthByTokenError(req);
|
|
54
129
|
if (authError) {
|
|
55
130
|
res.status(authError.code).send(authError.message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-auth.js","sourceRoot":"","sources":["../../../src/core/token/token-auth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"token-auth.js","sourceRoot":"","sources":["../../../src/core/token/token-auth.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fa-mcp-sdk",
|
|
3
3
|
"productName": "FA MCP SDK",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.80",
|
|
5
5
|
"description": "Core infrastructure and templates for building Model Context Protocol (MCP) servers with TypeScript",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/core/index.js",
|