/** * Type definitions for HTTP transport * * Based on MCP Specification 2025-03-26 * https://modelcontextprotocol.io/specification/2025-03-26/basic/transports */ import type { Request as ExpressRequest, Response } from 'express'; import type { OAuthConfig, AuthInterceptor } from './profile.js'; import type { HttpTenantIndex } from './http-tenants.js'; import type { SessionToolFilterRequest, SessionToolFilterCompat as SessionToolFilter } from '../tool-filter/index.js'; import type { OpenAPIParser } from '../openapi/openapi-parser.js'; import type { FilteringRules } from '../core/filtering.js'; export type { SessionToolFilter, SessionToolFilterRequest }; export interface SessionData { id: string; createdAt: number; lastActivityAt: number; sseStreams: Map; authToken?: string; refreshToken?: string; accessTokenExpiresAt?: number; scopes?: string[]; oauthClientId?: string; filtering?: Record; filteringHeader?: string; toolFilterRequest?: SessionToolFilterRequest; toolFilter?: SessionToolFilter; toolFilterHeader?: string; tenantId?: string; tenantBaseUrl?: string; tenantHeaderValue?: string; tenantAuthMode?: 'oauth' | 'token'; tenantOAuthConfig?: OAuthConfig; tenantAuthConfigs?: AuthInterceptor[]; } export interface SSEStreamState { streamId: string; lastEventId: number; messageQueue: QueuedMessage[]; active: boolean; response: Response; } export interface QueuedMessage { eventId: number; data: unknown; timestamp: number; } export interface HttpTransportConfig { host: string; port: number; sessionTimeoutMs: number; heartbeatEnabled: boolean; heartbeatIntervalMs: number; metricsEnabled: boolean; metricsPath: string; profileRoutingEnabled?: boolean; profileIndexEnabled?: boolean; defaultProfileId?: string; allowedOrigins?: string[]; rateLimitEnabled?: boolean; rateLimitWindowMs?: number; rateLimitMaxRequests?: number; rateLimitMetricsMax?: number; rateLimitOAuthMax?: number; rateLimitOAuthWindowMs?: number; maxTokenLength?: number; trustProxy?: boolean | number | string; oauthConfig?: OAuthConfig; baseUrl?: string; authConfigs?: AuthInterceptor[]; resourceName?: string; resourceDocumentation?: string; sslCertFile?: string; sslKeyFile?: string; oauthSessionTimeoutMs?: number; oauthRefreshThresholdMs?: number; parser?: OpenAPIParser; tenantIndex?: HttpTenantIndex; globalFiltering?: FilteringRules; } export interface HttpProfileContext { profileId: string; oauthConfig?: OAuthConfig; authConfigs?: AuthInterceptor[]; baseUrl?: string; rateLimitOAuthMax?: number; rateLimitOAuthWindowMs?: number; resourceName?: string; resourceDocumentation?: string; parser?: OpenAPIParser; } export interface McpRequest extends ExpressRequest { sessionId?: string; profileId?: string; forceProfilePrefix?: boolean; } //# sourceMappingURL=http-transport.d.ts.map