diff --git a/examples/client/tsconfig.json b/examples/client/tsconfig.json index 30a050fe7..ca96e9d2f 100644 --- a/examples/client/tsconfig.json +++ b/examples/client/tsconfig.json @@ -9,6 +9,9 @@ "@modelcontextprotocol/core": [ "./node_modules/@modelcontextprotocol/client/node_modules/@modelcontextprotocol/core/src/index.ts" ], + "@modelcontextprotocol/core/public": [ + "./node_modules/@modelcontextprotocol/client/node_modules/@modelcontextprotocol/core/src/publicExports.ts" + ], "@modelcontextprotocol/eslint-config": ["./node_modules/@modelcontextprotocol/eslint-config/tsconfig.json"], "@modelcontextprotocol/vitest-config": ["./node_modules/@modelcontextprotocol/vitest-config/tsconfig.json"], "@modelcontextprotocol/examples-shared": ["./node_modules/@modelcontextprotocol/examples-shared/src/index.ts"] diff --git a/examples/server/tsconfig.json b/examples/server/tsconfig.json index e44d65ec5..917db4ac8 100644 --- a/examples/server/tsconfig.json +++ b/examples/server/tsconfig.json @@ -12,6 +12,9 @@ "@modelcontextprotocol/core": [ "./node_modules/@modelcontextprotocol/server/node_modules/@modelcontextprotocol/core/src/index.ts" ], + "@modelcontextprotocol/core/public": [ + "./node_modules/@modelcontextprotocol/server/node_modules/@modelcontextprotocol/core/src/publicExports.ts" + ], "@modelcontextprotocol/examples-shared": ["./node_modules/@modelcontextprotocol/examples-shared/src/index.ts"], "@modelcontextprotocol/eslint-config": ["./node_modules/@modelcontextprotocol/eslint-config/tsconfig.json"], "@modelcontextprotocol/vitest-config": ["./node_modules/@modelcontextprotocol/vitest-config/tsconfig.json"] diff --git a/examples/shared/tsconfig.json b/examples/shared/tsconfig.json index 74c1e1172..6d7f38f86 100644 --- a/examples/shared/tsconfig.json +++ b/examples/shared/tsconfig.json @@ -12,6 +12,9 @@ "@modelcontextprotocol/core": [ "./node_modules/@modelcontextprotocol/server/node_modules/@modelcontextprotocol/core/src/index.ts" ], + "@modelcontextprotocol/core/public": [ + "./node_modules/@modelcontextprotocol/server/node_modules/@modelcontextprotocol/core/src/publicExports.ts" + ], "@modelcontextprotocol/eslint-config": ["./node_modules/@modelcontextprotocol/eslint-config/tsconfig.json"], "@modelcontextprotocol/vitest-config": ["./node_modules/@modelcontextprotocol/vitest-config/tsconfig.json"], "@modelcontextprotocol/test-helpers": ["./node_modules/@modelcontextprotocol/test-helpers/src/index.ts"], diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts index 787cfd2f0..fb87da921 100644 --- a/packages/client/src/index.ts +++ b/packages/client/src/index.ts @@ -1,14 +1,49 @@ -export * from './client/auth.js'; -export * from './client/authExtensions.js'; -export * from './client/client.js'; -export * from './client/middleware.js'; -export * from './client/sse.js'; -export * from './client/stdio.js'; -export * from './client/streamableHttp.js'; -export * from './client/websocket.js'; +// client/auth.ts — public OAuth API (internals are not re-exported) +export type { AddClientAuthentication, AuthResult, OAuthClientProvider } from './client/auth.js'; +export { auth, extractWWWAuthenticateParams, UnauthorizedError } from './client/auth.js'; + +// client/authExtensions.ts +export type { + ClientCredentialsProviderOptions, + PrivateKeyJwtProviderOptions, + StaticPrivateKeyJwtProviderOptions +} from './client/authExtensions.js'; +export { + ClientCredentialsProvider, + createPrivateKeyJwtAuth, + PrivateKeyJwtProvider, + StaticPrivateKeyJwtProvider +} from './client/authExtensions.js'; + +// client/client.ts +export type { ClientOptions } from './client/client.js'; +export { Client } from './client/client.js'; + +// client/middleware.ts +export type { LoggingOptions, Middleware, RequestLogger } from './client/middleware.js'; +export { applyMiddlewares, createMiddleware, withLogging, withOAuth } from './client/middleware.js'; + +// client/sse.ts +export type { SSEClientTransportOptions } from './client/sse.js'; +export { SSEClientTransport, SseError } from './client/sse.js'; + +// client/stdio.ts +export type { StdioServerParameters } from './client/stdio.js'; +export { DEFAULT_INHERITED_ENV_VARS, getDefaultEnvironment, StdioClientTransport } from './client/stdio.js'; + +// client/streamableHttp.ts +export type { StartSSEOptions, StreamableHTTPClientTransportOptions, StreamableHTTPReconnectionOptions } from './client/streamableHttp.js'; +export { StreamableHTTPClientTransport, StreamableHTTPError } from './client/streamableHttp.js'; + +// client/websocket.ts +export { WebSocketClientTransport } from './client/websocket.js'; // experimental exports -export * from './experimental/index.js'; +export { ExperimentalClientTasks } from './experimental/index.js'; -// re-export shared types -export * from '@modelcontextprotocol/core'; +// ============================================================================ +// Re-exports from @modelcontextprotocol/core +// Only symbols that are part of the public API are listed here. +// Maintained in a single file to avoid duplication across client and server. +// ============================================================================ +export * from '@modelcontextprotocol/core/public'; diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json index a16bfd7d9..56a604713 100644 --- a/packages/client/tsconfig.json +++ b/packages/client/tsconfig.json @@ -6,6 +6,7 @@ "paths": { "*": ["./*"], "@modelcontextprotocol/core": ["./node_modules/@modelcontextprotocol/core/src/index.ts"], + "@modelcontextprotocol/core/public": ["./node_modules/@modelcontextprotocol/core/src/publicExports.ts"], "@modelcontextprotocol/test-helpers": ["./node_modules/@modelcontextprotocol/test-helpers/src/index.ts"] } } diff --git a/packages/core/src/publicExports.ts b/packages/core/src/publicExports.ts new file mode 100644 index 000000000..788f7e9b8 --- /dev/null +++ b/packages/core/src/publicExports.ts @@ -0,0 +1,468 @@ +/** + * Curated public API exports from @modelcontextprotocol/core. + * + * This file is re-exported by both @modelcontextprotocol/client and + * @modelcontextprotocol/server so that users can import any public symbol + * from either package. Internal utilities (Zod compat, stdio parsing, + * Protocol base class, etc.) are intentionally excluded. + * + * When adding new public symbols to core, add them here once — both + * client and server will pick them up automatically. + */ + +// --- auth/errors.ts --- +export { + AccessDeniedError, + CustomOAuthError, + InsufficientScopeError, + InvalidClientError, + InvalidClientMetadataError, + InvalidGrantError, + InvalidRequestError, + InvalidScopeError, + InvalidTargetError, + InvalidTokenError, + MethodNotAllowedError, + OAuthError, + ServerError, + TemporarilyUnavailableError, + TooManyRequestsError, + UnauthorizedClientError, + UnsupportedGrantTypeError, + UnsupportedResponseTypeError, + UnsupportedTokenTypeError +} from './auth/errors.js'; + +// --- shared/auth.ts --- +export type { + AuthorizationServerMetadata, + OAuthClientInformation, + OAuthClientInformationFull, + OAuthClientInformationMixed, + OAuthClientMetadata, + OAuthClientRegistrationError, + OAuthErrorResponse, + OAuthMetadata, + OAuthProtectedResourceMetadata, + OAuthTokenRevocationRequest, + OAuthTokens, + OpenIdProviderDiscoveryMetadata, + OpenIdProviderMetadata +} from './shared/auth.js'; +export { + OAuthClientInformationFullSchema, + OAuthClientInformationSchema, + OAuthClientMetadataSchema, + OAuthClientRegistrationErrorSchema, + OAuthErrorResponseSchema, + OAuthMetadataSchema, + OAuthProtectedResourceMetadataSchema, + OAuthTokenRevocationRequestSchema, + OAuthTokensSchema, + OpenIdProviderDiscoveryMetadataSchema, + OpenIdProviderMetadataSchema +} from './shared/auth.js'; + +// --- shared/authUtils.ts --- +export { checkResourceAllowed, resourceUrlFromServerUrl } from './shared/authUtils.js'; + +// --- shared/metadataUtils.ts --- +export { getDisplayName } from './shared/metadataUtils.js'; + +// --- shared/protocol.ts (excluding Protocol class, mergeCapabilities) --- +export type { + NotificationOptions, + ProgressCallback, + ProtocolOptions, + RequestHandlerExtra, + RequestOptions, + RequestTaskStore, + TaskRequestOptions +} from './shared/protocol.js'; +export { DEFAULT_REQUEST_TIMEOUT_MSEC } from './shared/protocol.js'; + +// --- shared/responseMessage.ts (excluding AsyncGeneratorValue) --- +export type { + BaseResponseMessage, + ErrorMessage, + ResponseMessage, + ResultMessage, + TaskCreatedMessage, + TaskStatusMessage +} from './shared/responseMessage.js'; +export { takeResult, toArrayAsync } from './shared/responseMessage.js'; + +// --- shared/transport.ts (excluding normalizeHeaders) --- +export type { FetchLike, Transport, TransportSendOptions } from './shared/transport.js'; +export { createFetchWithInit } from './shared/transport.js'; + +// --- shared/uriTemplate.ts --- +export type { Variables } from './shared/uriTemplate.js'; +export { UriTemplate } from './shared/uriTemplate.js'; + +// --- types/types.ts --- +export type { + Annotations, + AudioContent, + AuthInfo, + BaseMetadata, + BlobResourceContents, + BooleanSchema, + CallToolRequest, + CallToolRequestParams, + CallToolResult, + CancelledNotification, + CancelledNotificationParams, + CancelTaskRequest, + CancelTaskResult, + ClientCapabilities, + ClientNotification, + ClientRequest, + ClientResult, + CompatibilityCallToolResult, + CompleteRequest, + CompleteRequestParams, + CompleteRequestPrompt, + CompleteRequestResourceTemplate, + CompleteResult, + ContentBlock, + CreateMessageRequest, + CreateMessageRequestParams, + CreateMessageRequestParamsBase, + CreateMessageRequestParamsWithTools, + CreateMessageResult, + CreateMessageResultWithTools, + CreateTaskResult, + Cursor, + ElicitationCompleteNotification, + ElicitationCompleteNotificationParams, + ElicitRequest, + ElicitRequestFormParams, + ElicitRequestParams, + ElicitRequestURLParams, + ElicitResult, + EmbeddedResource, + EmptyResult, + EnumSchema, + GetPromptRequest, + GetPromptRequestParams, + GetPromptResult, + GetTaskPayloadRequest, + GetTaskPayloadResult, + GetTaskRequest, + GetTaskResult, + Icon, + Icons, + ImageContent, + Implementation, + InitializedNotification, + InitializeRequest, + InitializeRequestParams, + InitializeResult, + JSONRPCErrorResponse, + JSONRPCMessage, + JSONRPCNotification, + JSONRPCRequest, + JSONRPCResponse, + JSONRPCResultResponse, + LegacyTitledEnumSchema, + ListChangedCallback, + ListChangedHandlers, + ListChangedOptions, + ListPromptsRequest, + ListPromptsResult, + ListResourcesRequest, + ListResourcesResult, + ListResourceTemplatesRequest, + ListResourceTemplatesResult, + ListRootsRequest, + ListRootsResult, + ListTasksRequest, + ListTasksResult, + ListToolsRequest, + ListToolsResult, + LoggingLevel, + LoggingMessageNotification, + LoggingMessageNotificationParams, + MessageExtraInfo, + ModelHint, + ModelPreferences, + MultiSelectEnumSchema, + Notification, + NotificationParams, + NumberSchema, + PaginatedRequest, + PaginatedRequestParams, + PaginatedResult, + PingRequest, + PrimitiveSchemaDefinition, + Progress, + ProgressNotification, + ProgressNotificationParams, + ProgressToken, + Prompt, + PromptArgument, + PromptListChangedNotification, + PromptMessage, + PromptReference, + ReadResourceRequest, + ReadResourceRequestParams, + ReadResourceResult, + RelatedTaskMetadata, + Request, + RequestId, + RequestInfo, + RequestMeta, + RequestParams, + Resource, + ResourceContents, + ResourceLink, + ResourceListChangedNotification, + ResourceRequestParams, + ResourceTemplateReference, + ResourceTemplateType, + ResourceUpdatedNotification, + ResourceUpdatedNotificationParams, + Result, + Role, + Root, + RootsListChangedNotification, + SamplingContent, + SamplingMessage, + SamplingMessageContentBlock, + ServerCapabilities, + ServerNotification, + ServerRequest, + ServerResult, + SetLevelRequest, + SetLevelRequestParams, + SingleSelectEnumSchema, + StringSchema, + SubscribeRequest, + SubscribeRequestParams, + Task, + TaskAugmentedRequestParams, + TaskCreationParams, + TaskMetadata, + TaskStatus, + TaskStatusNotification, + TaskStatusNotificationParams, + TextContent, + TextResourceContents, + TitledMultiSelectEnumSchema, + TitledSingleSelectEnumSchema, + Tool, + ToolAnnotations, + ToolChoice, + ToolExecution, + ToolListChangedNotification, + ToolResultContent, + ToolUseContent, + UnsubscribeRequest, + UnsubscribeRequestParams, + UntitledMultiSelectEnumSchema, + UntitledSingleSelectEnumSchema +} from './types/types.js'; +export { + AnnotationsSchema, + assertCompleteRequestPrompt, + assertCompleteRequestResourceTemplate, + AudioContentSchema, + BaseMetadataSchema, + BlobResourceContentsSchema, + BooleanSchemaSchema, + CallToolRequestParamsSchema, + CallToolRequestSchema, + CallToolResultSchema, + CancelledNotificationParamsSchema, + CancelledNotificationSchema, + CancelTaskRequestSchema, + CancelTaskResultSchema, + ClientCapabilitiesSchema, + ClientNotificationSchema, + ClientRequestSchema, + ClientResultSchema, + ClientTasksCapabilitySchema, + CompatibilityCallToolResultSchema, + CompleteRequestParamsSchema, + CompleteRequestSchema, + CompleteResultSchema, + ContentBlockSchema, + CreateMessageRequestParamsSchema, + CreateMessageRequestSchema, + CreateMessageResultSchema, + CreateMessageResultWithToolsSchema, + CreateTaskResultSchema, + CursorSchema, + DEFAULT_NEGOTIATED_PROTOCOL_VERSION, + ElicitationCompleteNotificationParamsSchema, + ElicitationCompleteNotificationSchema, + ElicitRequestFormParamsSchema, + ElicitRequestParamsSchema, + ElicitRequestSchema, + ElicitRequestURLParamsSchema, + ElicitResultSchema, + EmbeddedResourceSchema, + EmptyResultSchema, + EnumSchemaSchema, + ErrorCode, + GetPromptRequestParamsSchema, + GetPromptRequestSchema, + GetPromptResultSchema, + GetTaskPayloadRequestSchema, + GetTaskPayloadResultSchema, + GetTaskRequestSchema, + GetTaskResultSchema, + IconSchema, + IconsSchema, + ImageContentSchema, + ImplementationSchema, + InitializedNotificationSchema, + InitializeRequestParamsSchema, + InitializeRequestSchema, + InitializeResultSchema, + isInitializedNotification, + isInitializeRequest, + isJSONRPCErrorResponse, + isJSONRPCNotification, + isJSONRPCRequest, + isJSONRPCResultResponse, + isTaskAugmentedRequestParams, + JSONRPC_VERSION, + JSONRPCErrorResponseSchema, + JSONRPCMessageSchema, + JSONRPCNotificationSchema, + JSONRPCRequestSchema, + JSONRPCResponseSchema, + JSONRPCResultResponseSchema, + LATEST_PROTOCOL_VERSION, + LegacyTitledEnumSchemaSchema, + ListChangedOptionsBaseSchema, + ListPromptsRequestSchema, + ListPromptsResultSchema, + ListResourcesRequestSchema, + ListResourcesResultSchema, + ListResourceTemplatesRequestSchema, + ListResourceTemplatesResultSchema, + ListRootsRequestSchema, + ListRootsResultSchema, + ListTasksRequestSchema, + ListTasksResultSchema, + ListToolsRequestSchema, + ListToolsResultSchema, + LoggingLevelSchema, + LoggingMessageNotificationParamsSchema, + LoggingMessageNotificationSchema, + McpError, + ModelHintSchema, + ModelPreferencesSchema, + MultiSelectEnumSchemaSchema, + NotificationSchema, + NumberSchemaSchema, + PaginatedRequestParamsSchema, + PaginatedRequestSchema, + PaginatedResultSchema, + PingRequestSchema, + PrimitiveSchemaDefinitionSchema, + ProgressNotificationParamsSchema, + ProgressNotificationSchema, + ProgressSchema, + ProgressTokenSchema, + PromptArgumentSchema, + PromptListChangedNotificationSchema, + PromptMessageSchema, + PromptReferenceSchema, + PromptSchema, + ReadResourceRequestParamsSchema, + ReadResourceRequestSchema, + ReadResourceResultSchema, + RELATED_TASK_META_KEY, + RelatedTaskMetadataSchema, + RequestIdSchema, + RequestSchema, + ResourceContentsSchema, + ResourceLinkSchema, + ResourceListChangedNotificationSchema, + ResourceRequestParamsSchema, + ResourceSchema, + ResourceTemplateReferenceSchema, + ResourceTemplateSchema, + ResourceUpdatedNotificationParamsSchema, + ResourceUpdatedNotificationSchema, + ResultSchema, + RoleSchema, + RootSchema, + RootsListChangedNotificationSchema, + SamplingContentSchema, + SamplingMessageContentBlockSchema, + SamplingMessageSchema, + ServerCapabilitiesSchema, + ServerNotificationSchema, + ServerRequestSchema, + ServerResultSchema, + ServerTasksCapabilitySchema, + SetLevelRequestParamsSchema, + SetLevelRequestSchema, + SingleSelectEnumSchemaSchema, + StringSchemaSchema, + SubscribeRequestParamsSchema, + SubscribeRequestSchema, + SUPPORTED_PROTOCOL_VERSIONS, + TaskAugmentedRequestParamsSchema, + TaskCreationParamsSchema, + TaskMetadataSchema, + TaskSchema, + TaskStatusNotificationParamsSchema, + TaskStatusNotificationSchema, + TaskStatusSchema, + TextContentSchema, + TextResourceContentsSchema, + TitledMultiSelectEnumSchemaSchema, + TitledSingleSelectEnumSchemaSchema, + ToolAnnotationsSchema, + ToolChoiceSchema, + ToolExecutionSchema, + ToolListChangedNotificationSchema, + ToolResultContentSchema, + ToolSchema, + ToolUseContentSchema, + UnsubscribeRequestParamsSchema, + UnsubscribeRequestSchema, + UntitledMultiSelectEnumSchemaSchema, + UntitledSingleSelectEnumSchemaSchema, + UrlElicitationRequiredError +} from './types/types.js'; + +// --- util/inMemory.ts --- +export { InMemoryTransport } from './util/inMemory.js'; + +// --- experimental/tasks (from core) --- +export type { + BaseQueuedMessage, + CreateTaskOptions, + CreateTaskRequestHandlerExtra, + QueuedError, + QueuedMessage, + QueuedNotification, + QueuedRequest, + QueuedResponse, + TaskMessageQueue, + TaskRequestHandlerExtra, + TaskStore, + TaskToolExecution +} from './experimental/index.js'; +export { + assertClientRequestTaskCapability, + assertToolsCallTaskCapability, + InMemoryTaskMessageQueue, + InMemoryTaskStore, + isTerminal +} from './experimental/index.js'; + +// --- validation/types.ts --- +export type { JsonSchemaType, JsonSchemaValidator, jsonSchemaValidator, JsonSchemaValidatorResult } from './validation/types.js'; + +// --- validation providers --- +export type { CfWorkerSchemaDraft } from './validation/cfWorkerProvider.js'; +export { AjvJsonSchemaValidator } from './validation/ajvProvider.js'; +export { CfWorkerJsonSchemaValidator } from './validation/cfWorkerProvider.js'; diff --git a/packages/middleware/express/tsconfig.json b/packages/middleware/express/tsconfig.json index 0d7fdd0c0..7071e1892 100644 --- a/packages/middleware/express/tsconfig.json +++ b/packages/middleware/express/tsconfig.json @@ -8,6 +8,9 @@ "@modelcontextprotocol/server": ["./node_modules/@modelcontextprotocol/server/src/index.ts"], "@modelcontextprotocol/core": [ "./node_modules/@modelcontextprotocol/server/node_modules/@modelcontextprotocol/core/src/index.ts" + ], + "@modelcontextprotocol/core/public": [ + "./node_modules/@modelcontextprotocol/server/node_modules/@modelcontextprotocol/core/src/publicExports.ts" ] } } diff --git a/packages/middleware/hono/tsconfig.json b/packages/middleware/hono/tsconfig.json index 0d7fdd0c0..7071e1892 100644 --- a/packages/middleware/hono/tsconfig.json +++ b/packages/middleware/hono/tsconfig.json @@ -8,6 +8,9 @@ "@modelcontextprotocol/server": ["./node_modules/@modelcontextprotocol/server/src/index.ts"], "@modelcontextprotocol/core": [ "./node_modules/@modelcontextprotocol/server/node_modules/@modelcontextprotocol/core/src/index.ts" + ], + "@modelcontextprotocol/core/public": [ + "./node_modules/@modelcontextprotocol/server/node_modules/@modelcontextprotocol/core/src/publicExports.ts" ] } } diff --git a/packages/middleware/node/test/streamableHttp.test.ts b/packages/middleware/node/test/streamableHttp.test.ts index ca7728d88..5ce38f663 100644 --- a/packages/middleware/node/test/streamableHttp.test.ts +++ b/packages/middleware/node/test/streamableHttp.test.ts @@ -12,7 +12,8 @@ import type { JSONRPCResultResponse, RequestId } from '@modelcontextprotocol/core'; -import type { EventId, EventStore, StreamId } from '@modelcontextprotocol/server'; +import type { EventStore } from '@modelcontextprotocol/server'; +import type { EventId, StreamId } from '../../../../packages/server/src/server/streamableHttp.js'; import { McpServer } from '@modelcontextprotocol/server'; import type { ZodMatrixEntry } from '@modelcontextprotocol/test-helpers'; import { listenOnRandomPort, zodTestMatrix } from '@modelcontextprotocol/test-helpers'; diff --git a/packages/middleware/node/tsconfig.json b/packages/middleware/node/tsconfig.json index 97790e3e1..c07f0f4be 100644 --- a/packages/middleware/node/tsconfig.json +++ b/packages/middleware/node/tsconfig.json @@ -7,6 +7,7 @@ "*": ["./*"], "@modelcontextprotocol/server": ["./node_modules/@modelcontextprotocol/server/src/index.ts"], "@modelcontextprotocol/core": ["./node_modules/@modelcontextprotocol/core/src/index.ts"], + "@modelcontextprotocol/core/public": ["./node_modules/@modelcontextprotocol/core/src/publicExports.ts"], "@modelcontextprotocol/test-helpers": ["./node_modules/@modelcontextprotocol/test-helpers/src/index.ts"] } } diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index 1a8dbf143..76e72dafa 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -1,12 +1,45 @@ -export * from './server/completable.js'; -export * from './server/mcp.js'; -export * from './server/middleware/hostHeaderValidation.js'; -export * from './server/server.js'; -export * from './server/stdio.js'; -export * from './server/streamableHttp.js'; +// server/completable.ts — public completion API (internals are not re-exported) +export type { CompletableSchema, CompleteCallback } from './server/completable.js'; +export { completable, isCompletable } from './server/completable.js'; + +// server/mcp.ts — high-level server API (internals are not re-exported) +export type { + CompleteResourceTemplateCallback, + ListResourcesCallback, + PromptCallback, + ReadResourceCallback, + ReadResourceTemplateCallback, + RegisteredPrompt, + RegisteredResource, + RegisteredResourceTemplate, + RegisteredTool, + ResourceMetadata, + ToolCallback +} from './server/mcp.js'; +export { McpServer, ResourceTemplate } from './server/mcp.js'; + +// server/middleware/hostHeaderValidation.ts +export type { HostHeaderValidationResult } from './server/middleware/hostHeaderValidation.js'; +export { hostHeaderValidationResponse, localhostAllowedHostnames, validateHostHeader } from './server/middleware/hostHeaderValidation.js'; + +// server/server.ts +export type { ServerOptions } from './server/server.js'; +export { Server } from './server/server.js'; + +// server/stdio.ts +export { StdioServerTransport } from './server/stdio.js'; + +// server/streamableHttp.ts — public transport API (StreamId, EventId are not re-exported) +export type { EventStore, HandleRequestOptions, WebStandardStreamableHTTPServerTransportOptions } from './server/streamableHttp.js'; +export { WebStandardStreamableHTTPServerTransport } from './server/streamableHttp.js'; // experimental exports -export * from './experimental/index.js'; +export type { CreateTaskRequestHandler, TaskRequestHandler, ToolTaskHandler } from './experimental/index.js'; +export { ExperimentalMcpServerTasks, ExperimentalServerTasks } from './experimental/index.js'; -// re-export shared types -export * from '@modelcontextprotocol/core'; +// ============================================================================ +// Re-exports from @modelcontextprotocol/core +// Only symbols that are part of the public API are listed here. +// Maintained in a single file to avoid duplication across client and server. +// ============================================================================ +export * from '@modelcontextprotocol/core/public'; diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json index a16bfd7d9..56a604713 100644 --- a/packages/server/tsconfig.json +++ b/packages/server/tsconfig.json @@ -6,6 +6,7 @@ "paths": { "*": ["./*"], "@modelcontextprotocol/core": ["./node_modules/@modelcontextprotocol/core/src/index.ts"], + "@modelcontextprotocol/core/public": ["./node_modules/@modelcontextprotocol/core/src/publicExports.ts"], "@modelcontextprotocol/test-helpers": ["./node_modules/@modelcontextprotocol/test-helpers/src/index.ts"] } } diff --git a/test/helpers/tsconfig.json b/test/helpers/tsconfig.json index c46b557df..ae4a76e66 100644 --- a/test/helpers/tsconfig.json +++ b/test/helpers/tsconfig.json @@ -6,6 +6,7 @@ "paths": { "*": ["./*"], "@modelcontextprotocol/core": ["./node_modules/@modelcontextprotocol/core/src/index.ts"], + "@modelcontextprotocol/core/public": ["./node_modules/@modelcontextprotocol/core/src/publicExports.ts"], "@modelcontextprotocol/vitest-config": ["./node_modules/@modelcontextprotocol/vitest-config/tsconfig.json"] } } diff --git a/test/integration/test/client/client.test.ts b/test/integration/test/client/client.test.ts index a4d6943c1..568e4eea5 100644 --- a/test/integration/test/client/client.test.ts +++ b/test/integration/test/client/client.test.ts @@ -1,4 +1,5 @@ -import { Client, getSupportedElicitationModes } from '@modelcontextprotocol/client'; +import { Client } from '@modelcontextprotocol/client'; +import { getSupportedElicitationModes } from '../../../../packages/client/src/client/client.js'; import type { Prompt, Resource, Tool, Transport } from '@modelcontextprotocol/core'; import { CallToolResultSchema, diff --git a/test/integration/test/issues/test_1342OauthErrorHttp200.test.ts b/test/integration/test/issues/test_1342OauthErrorHttp200.test.ts index fd509e6d6..89c12f71f 100644 --- a/test/integration/test/issues/test_1342OauthErrorHttp200.test.ts +++ b/test/integration/test/issues/test_1342OauthErrorHttp200.test.ts @@ -7,7 +7,7 @@ * detects the error field and surfaces the actual OAuth error message. */ -import { exchangeAuthorization } from '@modelcontextprotocol/client'; +import { exchangeAuthorization } from '../../../../packages/client/src/client/auth.js'; import { describe, expect, it, vi } from 'vitest'; const mockFetch = vi.fn(); diff --git a/test/integration/tsconfig.json b/test/integration/tsconfig.json index 5c22ec1be..5b35f9aae 100644 --- a/test/integration/tsconfig.json +++ b/test/integration/tsconfig.json @@ -6,6 +6,7 @@ "paths": { "*": ["./*"], "@modelcontextprotocol/core": ["./node_modules/@modelcontextprotocol/core/src/index.ts"], + "@modelcontextprotocol/core/public": ["./node_modules/@modelcontextprotocol/core/src/publicExports.ts"], "@modelcontextprotocol/client": ["./node_modules/@modelcontextprotocol/client/src/index.ts"], "@modelcontextprotocol/server": ["./node_modules/@modelcontextprotocol/server/src/index.ts"], "@modelcontextprotocol/express": ["./node_modules/@modelcontextprotocol/express/src/index.ts"],