@1mcp/agent 0.12.0 → 0.13.1
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/README.md +22 -37
- package/build/auth/sdkOAuthClientProvider.d.ts +93 -0
- package/build/auth/sdkOAuthClientProvider.d.ts.map +1 -0
- package/build/auth/sdkOAuthClientProvider.js +204 -0
- package/build/auth/sdkOAuthClientProvider.js.map +1 -0
- package/build/auth/sdkOAuthServerProvider.d.ts +64 -0
- package/build/auth/sdkOAuthServerProvider.d.ts.map +1 -0
- package/build/auth/sdkOAuthServerProvider.js +359 -0
- package/build/auth/sdkOAuthServerProvider.js.map +1 -0
- package/build/auth/sessionTypes.d.ts +38 -0
- package/build/auth/sessionTypes.d.ts.map +1 -0
- package/build/auth/sessionTypes.js +3 -0
- package/build/auth/sessionTypes.js.map +1 -0
- package/build/auth/storage/authCodeRepository.d.ts +25 -0
- package/build/auth/storage/authCodeRepository.d.ts.map +1 -0
- package/build/auth/storage/authCodeRepository.js +50 -0
- package/build/auth/storage/authCodeRepository.js.map +1 -0
- package/build/auth/storage/authRequestRepository.d.ts +25 -0
- package/build/auth/storage/authRequestRepository.d.ts.map +1 -0
- package/build/auth/storage/authRequestRepository.js +51 -0
- package/build/auth/storage/authRequestRepository.js.map +1 -0
- package/build/auth/storage/clientDataRepository.d.ts +25 -0
- package/build/auth/storage/clientDataRepository.d.ts.map +1 -0
- package/build/auth/storage/clientDataRepository.js +45 -0
- package/build/auth/storage/clientDataRepository.js.map +1 -0
- package/build/auth/storage/clientSessionRepository.d.ts +77 -0
- package/build/auth/storage/clientSessionRepository.d.ts.map +1 -0
- package/build/auth/storage/clientSessionRepository.js +120 -0
- package/build/auth/storage/clientSessionRepository.js.map +1 -0
- package/build/auth/storage/fileStorageService.d.ts +68 -0
- package/build/auth/storage/fileStorageService.d.ts.map +1 -0
- package/build/auth/storage/fileStorageService.js +262 -0
- package/build/auth/storage/fileStorageService.js.map +1 -0
- package/build/auth/storage/oauthStorageService.d.ts +57 -0
- package/build/auth/storage/oauthStorageService.d.ts.map +1 -0
- package/build/auth/storage/oauthStorageService.js +131 -0
- package/build/auth/storage/oauthStorageService.js.map +1 -0
- package/build/auth/storage/sessionRepository.d.ts +29 -0
- package/build/auth/storage/sessionRepository.d.ts.map +1 -0
- package/build/auth/storage/sessionRepository.js +64 -0
- package/build/auth/storage/sessionRepository.js.map +1 -0
- package/build/capabilities/capabilityManager.d.ts +2 -2
- package/build/capabilities/capabilityManager.d.ts.map +1 -1
- package/build/capabilities/capabilityManager.js +1 -1
- package/build/capabilities/capabilityManager.js.map +1 -1
- package/build/config/{configManager.d.ts → mcpConfigManager.d.ts} +11 -6
- package/build/config/mcpConfigManager.d.ts.map +1 -0
- package/build/config/{configManager.js → mcpConfigManager.js} +26 -8
- package/build/config/mcpConfigManager.js.map +1 -0
- package/build/constants.d.ts +51 -14
- package/build/constants.d.ts.map +1 -1
- package/build/constants.js +61 -17
- package/build/constants.js.map +1 -1
- package/build/core/client/clientManager.d.ts +14 -6
- package/build/core/client/clientManager.d.ts.map +1 -1
- package/build/core/client/clientManager.js +90 -28
- package/build/core/client/clientManager.js.map +1 -1
- package/build/core/server/{serverConfig.d.ts → agentConfig.d.ts} +50 -15
- package/build/core/server/agentConfig.d.ts.map +1 -0
- package/build/core/server/agentConfig.js +166 -0
- package/build/core/server/agentConfig.js.map +1 -0
- package/build/core/server/serverManager.d.ts +12 -5
- package/build/core/server/serverManager.d.ts.map +1 -1
- package/build/core/server/serverManager.js +12 -2
- package/build/core/server/serverManager.js.map +1 -1
- package/build/core/types/client.d.ts +22 -9
- package/build/core/types/client.d.ts.map +1 -1
- package/build/core/types/client.js +2 -0
- package/build/core/types/client.js.map +1 -1
- package/build/core/types/server.d.ts +3 -3
- package/build/core/types/server.d.ts.map +1 -1
- package/build/core/types/transport.d.ts +58 -0
- package/build/core/types/transport.d.ts.map +1 -1
- package/build/core/types/transport.js +10 -0
- package/build/core/types/transport.js.map +1 -1
- package/build/handlers/notificationHandlers.d.ts +3 -3
- package/build/handlers/notificationHandlers.d.ts.map +1 -1
- package/build/handlers/notificationHandlers.js +2 -2
- package/build/handlers/notificationHandlers.js.map +1 -1
- package/build/handlers/requestHandlers.d.ts +2 -2
- package/build/handlers/requestHandlers.d.ts.map +1 -1
- package/build/handlers/requestHandlers.js +4 -3
- package/build/handlers/requestHandlers.js.map +1 -1
- package/build/index.js +47 -7
- package/build/index.js.map +1 -1
- package/build/{transport/http/middleware/loggingMiddleware.d.ts → logger/mcpLoggingEnhancer.d.ts} +1 -1
- package/build/logger/mcpLoggingEnhancer.d.ts.map +1 -0
- package/build/{transport/http/middleware/loggingMiddleware.js → logger/mcpLoggingEnhancer.js} +2 -2
- package/build/logger/mcpLoggingEnhancer.js.map +1 -0
- package/build/server.js +4 -4
- package/build/server.js.map +1 -1
- package/build/services/configReloadService.d.ts +2 -2
- package/build/services/configReloadService.d.ts.map +1 -1
- package/build/services/configReloadService.js +4 -4
- package/build/services/configReloadService.js.map +1 -1
- package/build/transport/http/middlewares/errorHandler.d.ts.map +1 -0
- package/build/transport/http/{errorHandler.js → middlewares/errorHandler.js} +1 -1
- package/build/transport/http/middlewares/errorHandler.js.map +1 -0
- package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts +39 -0
- package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts.map +1 -0
- package/build/transport/http/middlewares/scopeAuthMiddleware.js +129 -0
- package/build/transport/http/middlewares/scopeAuthMiddleware.js.map +1 -0
- package/build/transport/http/middlewares/securityMiddleware.d.ts +30 -0
- package/build/transport/http/middlewares/securityMiddleware.d.ts.map +1 -0
- package/build/transport/http/middlewares/securityMiddleware.js +201 -0
- package/build/transport/http/middlewares/securityMiddleware.js.map +1 -0
- package/build/transport/http/middlewares/tagsExtractor.d.ts.map +1 -0
- package/build/transport/http/middlewares/tagsExtractor.js.map +1 -0
- package/build/transport/http/routes/oauthRoutes.d.ts +5 -11
- package/build/transport/http/routes/oauthRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/oauthRoutes.js +460 -122
- package/build/transport/http/routes/oauthRoutes.js.map +1 -1
- package/build/transport/http/routes/sseRoutes.d.ts +3 -2
- package/build/transport/http/routes/sseRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/sseRoutes.js +10 -7
- package/build/transport/http/routes/sseRoutes.js.map +1 -1
- package/build/transport/http/routes/streamableHttpRoutes.d.ts +3 -2
- package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/streamableHttpRoutes.js +17 -10
- package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
- package/build/transport/http/server.d.ts +3 -2
- package/build/transport/http/server.d.ts.map +1 -1
- package/build/transport/http/server.js +58 -21
- package/build/transport/http/server.js.map +1 -1
- package/build/transport/transportFactory.d.ts +9 -0
- package/build/transport/transportFactory.d.ts.map +1 -0
- package/build/transport/transportFactory.js +148 -0
- package/build/transport/transportFactory.js.map +1 -0
- package/build/utils/clientFiltering.d.ts +4 -4
- package/build/utils/clientFiltering.d.ts.map +1 -1
- package/build/utils/clientFiltering.js +54 -19
- package/build/utils/clientFiltering.js.map +1 -1
- package/build/utils/errorHandling.d.ts +0 -12
- package/build/utils/errorHandling.d.ts.map +1 -1
- package/build/utils/errorHandling.js +1 -42
- package/build/utils/errorHandling.js.map +1 -1
- package/build/utils/pagination.d.ts +2 -2
- package/build/utils/pagination.d.ts.map +1 -1
- package/build/utils/pagination.js +4 -4
- package/build/utils/pagination.js.map +1 -1
- package/build/utils/parsing.d.ts +13 -0
- package/build/utils/parsing.d.ts.map +1 -0
- package/build/utils/parsing.js +32 -0
- package/build/utils/parsing.js.map +1 -0
- package/build/utils/sanitization.d.ts +60 -0
- package/build/utils/sanitization.d.ts.map +1 -0
- package/build/utils/sanitization.js +149 -0
- package/build/utils/sanitization.js.map +1 -0
- package/build/utils/scopeValidation.d.ts +102 -0
- package/build/utils/scopeValidation.d.ts.map +1 -0
- package/build/utils/scopeValidation.js +244 -0
- package/build/utils/scopeValidation.js.map +1 -0
- package/package.json +20 -11
- package/build/auth/authManager.d.ts +0 -109
- package/build/auth/authManager.d.ts.map +0 -1
- package/build/auth/authManager.js +0 -173
- package/build/auth/authManager.js.map +0 -1
- package/build/auth/authMiddleware.d.ts +0 -16
- package/build/auth/authMiddleware.d.ts.map +0 -1
- package/build/auth/authMiddleware.js +0 -45
- package/build/auth/authMiddleware.js.map +0 -1
- package/build/auth/sessionManager.d.ts +0 -197
- package/build/auth/sessionManager.d.ts.map +0 -1
- package/build/auth/sessionManager.js +0 -408
- package/build/auth/sessionManager.js.map +0 -1
- package/build/config/configManager.d.ts.map +0 -1
- package/build/config/configManager.js.map +0 -1
- package/build/core/server/serverConfig.d.ts.map +0 -1
- package/build/core/server/serverConfig.js +0 -117
- package/build/core/server/serverConfig.js.map +0 -1
- package/build/transport/config.d.ts +0 -7
- package/build/transport/config.d.ts.map +0 -1
- package/build/transport/config.js +0 -90
- package/build/transport/config.js.map +0 -1
- package/build/transport/http/errorHandler.d.ts.map +0 -1
- package/build/transport/http/errorHandler.js.map +0 -1
- package/build/transport/http/middleware/loggingMiddleware.d.ts.map +0 -1
- package/build/transport/http/middleware/loggingMiddleware.js.map +0 -1
- package/build/utils/tagsExtractor.d.ts.map +0 -1
- package/build/utils/tagsExtractor.js.map +0 -1
- /package/build/transport/http/{errorHandler.d.ts → middlewares/errorHandler.d.ts} +0 -0
- /package/build/{utils → transport/http/middlewares}/tagsExtractor.d.ts +0 -0
- /package/build/{utils → transport/http/middlewares}/tagsExtractor.js +0 -0
|
@@ -2,14 +2,17 @@ import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
|
|
|
2
2
|
import { ErrorCode } from '@modelcontextprotocol/sdk/types.js';
|
|
3
3
|
import logger from '../../../logger/logger.js';
|
|
4
4
|
import { SSE_ENDPOINT, MESSAGES_ENDPOINT } from '../../../constants.js';
|
|
5
|
-
import tagsExtractor from '
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
import tagsExtractor from '../middlewares/tagsExtractor.js';
|
|
6
|
+
import { createScopeAuthMiddleware, getValidatedTags } from '../middlewares/scopeAuthMiddleware.js';
|
|
7
|
+
import { sanitizeHeaders } from '../../../utils/sanitization.js';
|
|
8
|
+
export function setupSseRoutes(router, serverManager, oauthProvider) {
|
|
9
|
+
const scopeAuthMiddleware = createScopeAuthMiddleware(oauthProvider);
|
|
10
|
+
router.get(SSE_ENDPOINT, tagsExtractor, scopeAuthMiddleware, async (req, res) => {
|
|
8
11
|
try {
|
|
9
|
-
logger.info('[GET] sse', { query: req.query, headers: req.headers });
|
|
12
|
+
logger.info('[GET] sse', { query: req.query, headers: sanitizeHeaders(req.headers) });
|
|
10
13
|
const transport = new SSEServerTransport(MESSAGES_ENDPOINT, res);
|
|
11
|
-
// Use tags from middleware
|
|
12
|
-
const tags = res
|
|
14
|
+
// Use validated tags from scope auth middleware
|
|
15
|
+
const tags = getValidatedTags(res);
|
|
13
16
|
// Connect the transport using the server manager
|
|
14
17
|
await serverManager.connectTransport(transport, transport.sessionId, {
|
|
15
18
|
tags,
|
|
@@ -25,7 +28,7 @@ export function setupSseRoutes(app, serverManager, authMiddleware) {
|
|
|
25
28
|
res.status(500).end();
|
|
26
29
|
}
|
|
27
30
|
});
|
|
28
|
-
|
|
31
|
+
router.post(MESSAGES_ENDPOINT, async (req, res) => {
|
|
29
32
|
try {
|
|
30
33
|
const sessionId = req.query.sessionId;
|
|
31
34
|
if (!sessionId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sseRoutes.js","sourceRoot":"","sources":["../../../../src/transport/http/routes/sseRoutes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,aAAa,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"sseRoutes.js","sourceRoot":"","sources":["../../../../src/transport/http/routes/sseRoutes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Router } from 'express';
|
|
2
2
|
import { ServerManager } from '../../../core/server/serverManager.js';
|
|
3
|
-
|
|
3
|
+
import { SDKOAuthServerProvider } from '../../../auth/sdkOAuthServerProvider.js';
|
|
4
|
+
export declare function setupStreamableHttpRoutes(router: Router, serverManager: ServerManager, oauthProvider?: SDKOAuthServerProvider): void;
|
|
4
5
|
//# sourceMappingURL=streamableHttpRoutes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamableHttpRoutes.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/routes/streamableHttpRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"streamableHttpRoutes.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/routes/streamableHttpRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAMpD,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAItE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,aAAa,CAAC,EAAE,sBAAsB,GACrC,IAAI,CA6HN"}
|
|
@@ -3,11 +3,18 @@ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/
|
|
|
3
3
|
import { ErrorCode } from '@modelcontextprotocol/sdk/types.js';
|
|
4
4
|
import logger from '../../../logger/logger.js';
|
|
5
5
|
import { STREAMABLE_HTTP_ENDPOINT } from '../../../constants.js';
|
|
6
|
-
import tagsExtractor from '
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
import tagsExtractor from '../middlewares/tagsExtractor.js';
|
|
7
|
+
import { createScopeAuthMiddleware, getValidatedTags } from '../middlewares/scopeAuthMiddleware.js';
|
|
8
|
+
import { sanitizeHeaders } from '../../../utils/sanitization.js';
|
|
9
|
+
export function setupStreamableHttpRoutes(router, serverManager, oauthProvider) {
|
|
10
|
+
const scopeAuthMiddleware = createScopeAuthMiddleware(oauthProvider);
|
|
11
|
+
router.post(STREAMABLE_HTTP_ENDPOINT, tagsExtractor, scopeAuthMiddleware, async (req, res) => {
|
|
9
12
|
try {
|
|
10
|
-
logger.info('[POST] streamable-http', {
|
|
13
|
+
logger.info('[POST] streamable-http', {
|
|
14
|
+
query: req.query,
|
|
15
|
+
body: req.body,
|
|
16
|
+
headers: sanitizeHeaders(req.headers),
|
|
17
|
+
});
|
|
11
18
|
let transport;
|
|
12
19
|
const sessionId = req.headers['mcp-session-id'];
|
|
13
20
|
if (!sessionId) {
|
|
@@ -15,8 +22,8 @@ export function setupStreamableHttpRoutes(app, serverManager, authMiddleware) {
|
|
|
15
22
|
transport = new StreamableHTTPServerTransport({
|
|
16
23
|
sessionIdGenerator: () => id,
|
|
17
24
|
});
|
|
18
|
-
// Use tags from middleware
|
|
19
|
-
const tags = res
|
|
25
|
+
// Use validated tags from scope auth middleware
|
|
26
|
+
const tags = getValidatedTags(res);
|
|
20
27
|
await serverManager.connectTransport(transport, id, {
|
|
21
28
|
tags,
|
|
22
29
|
enablePagination: req.query.pagination === 'true',
|
|
@@ -57,9 +64,9 @@ export function setupStreamableHttpRoutes(app, serverManager, authMiddleware) {
|
|
|
57
64
|
res.status(500).end();
|
|
58
65
|
}
|
|
59
66
|
});
|
|
60
|
-
|
|
67
|
+
router.get(STREAMABLE_HTTP_ENDPOINT, async (req, res) => {
|
|
61
68
|
try {
|
|
62
|
-
logger.info('[GET] streamable-http', { query: req.query, headers: req.headers });
|
|
69
|
+
logger.info('[GET] streamable-http', { query: req.query, headers: sanitizeHeaders(req.headers) });
|
|
63
70
|
const sessionId = req.headers['mcp-session-id'];
|
|
64
71
|
if (!sessionId) {
|
|
65
72
|
res.status(400).json({
|
|
@@ -87,9 +94,9 @@ export function setupStreamableHttpRoutes(app, serverManager, authMiddleware) {
|
|
|
87
94
|
res.status(500).end();
|
|
88
95
|
}
|
|
89
96
|
});
|
|
90
|
-
|
|
97
|
+
router.delete(STREAMABLE_HTTP_ENDPOINT, async (req, res) => {
|
|
91
98
|
try {
|
|
92
|
-
logger.info('[DELETE] streamable-http', { query: req.query, headers: req.headers });
|
|
99
|
+
logger.info('[DELETE] streamable-http', { query: req.query, headers: sanitizeHeaders(req.headers) });
|
|
93
100
|
const sessionId = req.headers['mcp-session-id'];
|
|
94
101
|
if (!sessionId) {
|
|
95
102
|
res.status(400).json({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamableHttpRoutes.js","sourceRoot":"","sources":["../../../../src/transport/http/routes/streamableHttpRoutes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,aAAa,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"streamableHttpRoutes.js","sourceRoot":"","sources":["../../../../src/transport/http/routes/streamableHttpRoutes.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ import { ServerManager } from '../../core/server/serverManager.js';
|
|
|
15
15
|
export declare class ExpressServer {
|
|
16
16
|
private app;
|
|
17
17
|
private serverManager;
|
|
18
|
-
private
|
|
18
|
+
private oauthProvider;
|
|
19
19
|
private configManager;
|
|
20
20
|
/**
|
|
21
21
|
* Creates a new ExpressServer instance.
|
|
@@ -30,6 +30,7 @@ export declare class ExpressServer {
|
|
|
30
30
|
* Sets up Express middleware including CORS, body parsing, and error handling.
|
|
31
31
|
*
|
|
32
32
|
* Configures the basic middleware stack required for the MCP server:
|
|
33
|
+
* - Enhanced security middleware (conditional based on feature flag)
|
|
33
34
|
* - CORS for cross-origin requests
|
|
34
35
|
* - JSON body parsing
|
|
35
36
|
* - Global error handling
|
|
@@ -55,7 +56,7 @@ export declare class ExpressServer {
|
|
|
55
56
|
* @param port - The port number to listen on
|
|
56
57
|
* @param host - The host address to bind to
|
|
57
58
|
*/
|
|
58
|
-
start(
|
|
59
|
+
start(): void;
|
|
59
60
|
/**
|
|
60
61
|
* Performs graceful shutdown of the Express server.
|
|
61
62
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/transport/http/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/transport/http/server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAQnE;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAAqB;IAE1C;;;;;;;OAOG;gBACS,aAAa,EAAE,aAAa;IAaxC;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAcvB;;;;;;;;;OASG;IACH,OAAO,CAAC,WAAW;IAgDnB;;;;;;;;OAQG;IACI,KAAK,IAAI,IAAI;IASpB;;;;;;;OAOG;IACI,QAAQ,IAAI,IAAI;CAGxB"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
2
|
import bodyParser from 'body-parser';
|
|
3
3
|
import cors from 'cors';
|
|
4
|
+
import { mcpAuthRouter } from '@modelcontextprotocol/sdk/server/auth/router.js';
|
|
4
5
|
import logger from '../../logger/logger.js';
|
|
5
|
-
import errorHandler from './errorHandler.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { setupOAuthRoutes } from './routes/oauthRoutes.js';
|
|
6
|
+
import errorHandler from './middlewares/errorHandler.js';
|
|
7
|
+
import { setupSecurityMiddleware } from './middlewares/securityMiddleware.js';
|
|
8
|
+
import { SDKOAuthServerProvider } from '../../auth/sdkOAuthServerProvider.js';
|
|
9
9
|
import { setupStreamableHttpRoutes } from './routes/streamableHttpRoutes.js';
|
|
10
10
|
import { setupSseRoutes } from './routes/sseRoutes.js';
|
|
11
|
-
import
|
|
11
|
+
import createOAuthRoutes from './routes/oauthRoutes.js';
|
|
12
|
+
import { AgentConfigManager } from '../../core/server/agentConfig.js';
|
|
13
|
+
import { RATE_LIMIT_CONFIG } from '../../constants.js';
|
|
12
14
|
/**
|
|
13
15
|
* ExpressServer orchestrates the HTTP/SSE transport layer for the MCP server.
|
|
14
16
|
*
|
|
@@ -25,7 +27,7 @@ import { ServerConfigManager } from '../../core/server/serverConfig.js';
|
|
|
25
27
|
export class ExpressServer {
|
|
26
28
|
app;
|
|
27
29
|
serverManager;
|
|
28
|
-
|
|
30
|
+
oauthProvider;
|
|
29
31
|
configManager;
|
|
30
32
|
/**
|
|
31
33
|
* Creates a new ExpressServer instance.
|
|
@@ -38,10 +40,10 @@ export class ExpressServer {
|
|
|
38
40
|
constructor(serverManager) {
|
|
39
41
|
this.app = express();
|
|
40
42
|
this.serverManager = serverManager;
|
|
41
|
-
this.configManager =
|
|
42
|
-
// Initialize
|
|
43
|
+
this.configManager = AgentConfigManager.getInstance();
|
|
44
|
+
// Initialize OAuth provider with custom session storage path if configured
|
|
43
45
|
const sessionStoragePath = this.configManager.getSessionStoragePath();
|
|
44
|
-
this.
|
|
46
|
+
this.oauthProvider = new SDKOAuthServerProvider(sessionStoragePath);
|
|
45
47
|
this.setupMiddleware();
|
|
46
48
|
this.setupRoutes();
|
|
47
49
|
}
|
|
@@ -49,13 +51,19 @@ export class ExpressServer {
|
|
|
49
51
|
* Sets up Express middleware including CORS, body parsing, and error handling.
|
|
50
52
|
*
|
|
51
53
|
* Configures the basic middleware stack required for the MCP server:
|
|
54
|
+
* - Enhanced security middleware (conditional based on feature flag)
|
|
52
55
|
* - CORS for cross-origin requests
|
|
53
56
|
* - JSON body parsing
|
|
54
57
|
* - Global error handling
|
|
55
58
|
*/
|
|
56
59
|
setupMiddleware() {
|
|
60
|
+
// Conditionally apply enhanced security middleware (must be first if enabled)
|
|
61
|
+
if (this.configManager.isEnhancedSecurityEnabled()) {
|
|
62
|
+
this.app.use(...setupSecurityMiddleware());
|
|
63
|
+
}
|
|
57
64
|
this.app.use(cors()); // Allow all origins for local dev
|
|
58
65
|
this.app.use(bodyParser.json());
|
|
66
|
+
this.app.use(bodyParser.urlencoded({ extended: true }));
|
|
59
67
|
// Add error handling middleware
|
|
60
68
|
this.app.use(errorHandler);
|
|
61
69
|
}
|
|
@@ -70,16 +78,43 @@ export class ExpressServer {
|
|
|
70
78
|
* Logs the authentication status for debugging purposes.
|
|
71
79
|
*/
|
|
72
80
|
setupRoutes() {
|
|
73
|
-
//
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
81
|
+
// Setup OAuth routes using SDK's mcpAuthRouter
|
|
82
|
+
const { host, port } = this.configManager.getConfig();
|
|
83
|
+
const issuerUrl = new URL(`http://${host}:${port}`);
|
|
84
|
+
const rateLimitConfig = {
|
|
85
|
+
windowMs: this.configManager.getRateLimitWindowMs(),
|
|
86
|
+
max: this.configManager.getRateLimitMax(),
|
|
87
|
+
message: RATE_LIMIT_CONFIG.OAUTH.MESSAGE,
|
|
88
|
+
standardHeaders: true,
|
|
89
|
+
legacyHeaders: false,
|
|
90
|
+
};
|
|
91
|
+
const authRouter = mcpAuthRouter({
|
|
92
|
+
provider: this.oauthProvider,
|
|
93
|
+
issuerUrl,
|
|
94
|
+
authorizationOptions: {
|
|
95
|
+
rateLimit: rateLimitConfig,
|
|
96
|
+
},
|
|
97
|
+
tokenOptions: {
|
|
98
|
+
rateLimit: rateLimitConfig,
|
|
99
|
+
},
|
|
100
|
+
revocationOptions: {
|
|
101
|
+
rateLimit: rateLimitConfig,
|
|
102
|
+
},
|
|
103
|
+
clientRegistrationOptions: {
|
|
104
|
+
rateLimit: rateLimitConfig,
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
this.app.use(authRouter);
|
|
108
|
+
// Setup OAuth management routes (no auth required)
|
|
109
|
+
this.app.use('/oauth', createOAuthRoutes(this.oauthProvider));
|
|
110
|
+
// Setup MCP transport routes (auth is handled per-route via scopeAuthMiddleware)
|
|
111
|
+
const router = express.Router();
|
|
112
|
+
setupStreamableHttpRoutes(router, this.serverManager, this.oauthProvider);
|
|
113
|
+
setupSseRoutes(router, this.serverManager, this.oauthProvider);
|
|
114
|
+
this.app.use(router);
|
|
80
115
|
// Log authentication status
|
|
81
|
-
if (this.
|
|
82
|
-
logger.info('Authentication enabled - OAuth 2.1 endpoints available');
|
|
116
|
+
if (this.configManager.isAuthEnabled()) {
|
|
117
|
+
logger.info('Authentication enabled - OAuth 2.1 endpoints available via SDK');
|
|
83
118
|
}
|
|
84
119
|
else {
|
|
85
120
|
logger.info('Authentication disabled - all endpoints accessible without auth');
|
|
@@ -94,10 +129,12 @@ export class ExpressServer {
|
|
|
94
129
|
* @param port - The port number to listen on
|
|
95
130
|
* @param host - The host address to bind to
|
|
96
131
|
*/
|
|
97
|
-
start(
|
|
132
|
+
start() {
|
|
133
|
+
const { port, host } = this.configManager.getConfig();
|
|
98
134
|
this.app.listen(port, host, () => {
|
|
99
|
-
const authStatus = this.
|
|
135
|
+
const authStatus = this.configManager.isAuthEnabled() ? 'with authentication' : 'without authentication';
|
|
100
136
|
logger.info(`Server is running on port ${port} with HTTP/SSE and Streamable HTTP transport ${authStatus}`);
|
|
137
|
+
logger.info(`📋 OAuth Management Dashboard: http://${host}:${port}/oauth`);
|
|
101
138
|
});
|
|
102
139
|
}
|
|
103
140
|
/**
|
|
@@ -109,7 +146,7 @@ export class ExpressServer {
|
|
|
109
146
|
* - Timer cleanup
|
|
110
147
|
*/
|
|
111
148
|
shutdown() {
|
|
112
|
-
this.
|
|
149
|
+
this.oauthProvider.shutdown();
|
|
113
150
|
}
|
|
114
151
|
}
|
|
115
152
|
//# sourceMappingURL=server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/transport/http/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,MAAM,MAAM,wBAAwB,CAAC;AAC5C,OAAO,YAAY,MAAM,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/transport/http/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AuthProviderTransport } from '../core/types/index.js';
|
|
2
|
+
import { MCPServerParams } from '../core/types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates transport instances from configuration
|
|
5
|
+
* @param config - Configuration object with server parameters
|
|
6
|
+
* @returns Record of transport instances
|
|
7
|
+
*/
|
|
8
|
+
export declare function createTransports(config: Record<string, MCPServerParams>): Record<string, AuthProviderTransport>;
|
|
9
|
+
//# sourceMappingURL=transportFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transportFactory.d.ts","sourceRoot":"","sources":["../../src/transport/transportFactory.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,qBAAqB,EAAyB,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AA2JzD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CA2B/G"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
2
|
+
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
|
|
3
|
+
import { StreamableHTTPClientTransport, } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
|
|
4
|
+
import { ZodError } from 'zod';
|
|
5
|
+
import logger from '../logger/logger.js';
|
|
6
|
+
import { transportConfigSchema } from '../core/types/index.js';
|
|
7
|
+
import { SDKOAuthClientProvider } from '../auth/sdkOAuthClientProvider.js';
|
|
8
|
+
import { AUTH_CONFIG } from '../constants.js';
|
|
9
|
+
import { AgentConfigManager } from '../core/server/agentConfig.js';
|
|
10
|
+
/**
|
|
11
|
+
* Infers transport type from configuration parameters
|
|
12
|
+
*/
|
|
13
|
+
function inferTransportType(params, name) {
|
|
14
|
+
const inferredParams = { ...params };
|
|
15
|
+
if (inferredParams.type) {
|
|
16
|
+
return inferredParams;
|
|
17
|
+
}
|
|
18
|
+
logger.warn(`Transport type is missing for ${name}, inferring type...`);
|
|
19
|
+
if (inferredParams.command) {
|
|
20
|
+
inferredParams.type = 'stdio';
|
|
21
|
+
logger.info(`Inferred transport type for ${name} as stdio`);
|
|
22
|
+
}
|
|
23
|
+
else if (inferredParams.url) {
|
|
24
|
+
if (inferredParams.url.endsWith('mcp')) {
|
|
25
|
+
inferredParams.type = 'http';
|
|
26
|
+
logger.info(`Inferred transport type for ${name} as http/streamableHttp`);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
inferredParams.type = 'sse';
|
|
30
|
+
logger.info(`Inferred transport type for ${name} as sse`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return inferredParams;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Creates OAuth provider for HTTP-based transports
|
|
37
|
+
*/
|
|
38
|
+
function createOAuthProvider(name, validatedTransport) {
|
|
39
|
+
const { host, port } = AgentConfigManager.getInstance().getConfig();
|
|
40
|
+
const oauthConfig = {
|
|
41
|
+
autoRegister: true,
|
|
42
|
+
redirectUrl: `http://${host}:${port}${AUTH_CONFIG.CLIENT.OAUTH.DEFAULT_CALLBACK_PATH}/${name}`,
|
|
43
|
+
...validatedTransport.oauth,
|
|
44
|
+
};
|
|
45
|
+
logger.info(`Creating OAuth client provider for transport: ${name}`);
|
|
46
|
+
return new SDKOAuthClientProvider(name, oauthConfig);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Creates SSE transport with OAuth provider
|
|
50
|
+
*/
|
|
51
|
+
function createSSETransport(name, validatedTransport) {
|
|
52
|
+
if (!validatedTransport.url) {
|
|
53
|
+
throw new Error(`URL is required for SSE transport: ${name}`);
|
|
54
|
+
}
|
|
55
|
+
const sseOptions = {
|
|
56
|
+
requestInit: {
|
|
57
|
+
headers: validatedTransport.headers,
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
const oauthProvider = createOAuthProvider(name, validatedTransport);
|
|
61
|
+
sseOptions.authProvider = oauthProvider;
|
|
62
|
+
const transport = new SSEClientTransport(new URL(validatedTransport.url), sseOptions);
|
|
63
|
+
transport.oauthProvider = oauthProvider;
|
|
64
|
+
return transport;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Creates HTTP transport with OAuth provider
|
|
68
|
+
*/
|
|
69
|
+
function createHTTPTransport(name, validatedTransport) {
|
|
70
|
+
if (!validatedTransport.url) {
|
|
71
|
+
throw new Error(`URL is required for HTTP transport: ${name}`);
|
|
72
|
+
}
|
|
73
|
+
const httpOptions = {
|
|
74
|
+
requestInit: {
|
|
75
|
+
headers: validatedTransport.headers,
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
const oauthProvider = createOAuthProvider(name, validatedTransport);
|
|
79
|
+
httpOptions.authProvider = oauthProvider;
|
|
80
|
+
const transport = new StreamableHTTPClientTransport(new URL(validatedTransport.url), httpOptions);
|
|
81
|
+
transport.oauthProvider = oauthProvider;
|
|
82
|
+
return transport;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Creates stdio transport
|
|
86
|
+
*/
|
|
87
|
+
function createStdioTransport(name, validatedTransport) {
|
|
88
|
+
if (!validatedTransport.command) {
|
|
89
|
+
throw new Error(`Command is required for stdio transport: ${name}`);
|
|
90
|
+
}
|
|
91
|
+
return new StdioClientTransport(validatedTransport);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Creates a single transport instance
|
|
95
|
+
*/
|
|
96
|
+
function createSingleTransport(name, validatedTransport) {
|
|
97
|
+
switch (validatedTransport.type) {
|
|
98
|
+
case 'sse':
|
|
99
|
+
return createSSETransport(name, validatedTransport);
|
|
100
|
+
case 'http':
|
|
101
|
+
case 'streamableHttp':
|
|
102
|
+
return createHTTPTransport(name, validatedTransport);
|
|
103
|
+
case 'stdio':
|
|
104
|
+
return createStdioTransport(name, validatedTransport);
|
|
105
|
+
default:
|
|
106
|
+
throw new Error(`Invalid transport type: ${validatedTransport.type}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Assigns transport properties and adds to collection
|
|
111
|
+
*/
|
|
112
|
+
function assignTransport(transports, name, transport, validatedTransport) {
|
|
113
|
+
transport.timeout = validatedTransport.timeout;
|
|
114
|
+
transport.tags = validatedTransport.tags;
|
|
115
|
+
transports[name] = transport;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Creates transport instances from configuration
|
|
119
|
+
* @param config - Configuration object with server parameters
|
|
120
|
+
* @returns Record of transport instances
|
|
121
|
+
*/
|
|
122
|
+
export function createTransports(config) {
|
|
123
|
+
const transports = {};
|
|
124
|
+
for (const [name, params] of Object.entries(config)) {
|
|
125
|
+
if (params.disabled) {
|
|
126
|
+
logger.debug(`Skipping disabled transport: ${name}`);
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
try {
|
|
130
|
+
const inferredParams = inferTransportType(params, name);
|
|
131
|
+
const validatedTransport = transportConfigSchema.parse(inferredParams);
|
|
132
|
+
const transport = createSingleTransport(name, validatedTransport);
|
|
133
|
+
assignTransport(transports, name, transport, validatedTransport);
|
|
134
|
+
logger.debug(`Created transport: ${name}`);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
if (error instanceof ZodError) {
|
|
138
|
+
logger.error(`Invalid transport configuration for ${name}:`, error.errors);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
logger.error(`Error creating transport ${name}:`, error);
|
|
142
|
+
}
|
|
143
|
+
throw error;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return transports;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=transportFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transportFactory.js","sourceRoot":"","sources":["../../src/transport/transportFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { ServerCapabilities } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
-
import {
|
|
2
|
+
import { OutboundConnections } from '../core/types/index.js';
|
|
3
3
|
/**
|
|
4
4
|
* Filters clients by tags
|
|
5
5
|
* @param clients Record of client instances
|
|
6
6
|
* @param tags Array of tags to filter by
|
|
7
7
|
* @returns Filtered record of client instances
|
|
8
8
|
*/
|
|
9
|
-
export declare function filterClientsByTags(clients:
|
|
9
|
+
export declare function filterClientsByTags(clients: OutboundConnections, tags?: string[]): OutboundConnections;
|
|
10
10
|
/**
|
|
11
11
|
* Filters clients by capabilities
|
|
12
12
|
* @param clients Record of client instances
|
|
13
13
|
* @param capabilities Object containing capabilities to filter by
|
|
14
14
|
* @returns Filtered record of client instances
|
|
15
15
|
*/
|
|
16
|
-
export declare function filterClientsByCapabilities(clients:
|
|
17
|
-
type ClientFilter = (clients:
|
|
16
|
+
export declare function filterClientsByCapabilities(clients: OutboundConnections, capabilities: ServerCapabilities): OutboundConnections;
|
|
17
|
+
type ClientFilter = (clients: OutboundConnections) => OutboundConnections;
|
|
18
18
|
/**
|
|
19
19
|
* Filters clients by multiple criteria
|
|
20
20
|
* @param filters Array of client filters
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientFiltering.d.ts","sourceRoot":"","sources":["../../src/utils/clientFiltering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"clientFiltering.d.ts","sourceRoot":"","sources":["../../src/utils/clientFiltering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAsB,MAAM,wBAAwB,CAAC;AAGjF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAyBtG;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,mBAAmB,EAC5B,YAAY,EAAE,kBAAkB,GAC/B,mBAAmB,CAwBrB;AAED,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,mBAAmB,CAAC;AAE1E;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,CA0BtE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,oBAAoB,EAAE,kBAAkB,GAAG,YAAY,CAsBrF;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,CAyBpD"}
|