Skip to content

Commit d84cb3e

Browse files
RazvanRotaruclaude
andauthored
fix(client): use type-only imports for @modelcontextprotocol/sdk types (#157)
Change value imports to `import type` syntax for SDK types to prevent bundlers from including Node.js server code in browser builds. When bundling @mcp-ui/client for pure browser environments, the @modelcontextprotocol/sdk's server-side code (which imports Express) was being included due to the import chain, causing "require is not defined" errors at runtime. Since the SDK is only used for TypeScript types (not runtime values), using `import type` ensures these imports are stripped at compile time and don't trigger bundling of the SDK's server-side modules. Files changed: - UIResourceRendererWC.tsx: EmbeddedResource type - metadataUtils.ts: Resource type - processResource.ts: EmbeddedResource, Resource types - UIResourceRenderer.unmocked.test.tsx: EmbeddedResource type 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude <noreply@anthropic.com>
1 parent b9db70e commit d84cb3e

File tree

4 files changed

+4
-4
lines changed

4 files changed

+4
-4
lines changed

sdks/typescript/client/src/components/UIResourceRendererWC.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import r2wc from '@r2wc/react-to-web-component';
22
import { UIResourceRenderer, type UIResourceRendererProps } from './UIResourceRenderer';
33
import { FC, useCallback, useRef } from 'react';
44
import { UIActionResult } from '../types';
5-
import { EmbeddedResource } from '@modelcontextprotocol/sdk/types.js';
5+
import type { EmbeddedResource } from '@modelcontextprotocol/sdk/types.js';
66

77

88
type UIResourceRendererWCProps = Omit<UIResourceRendererProps, 'resource' | 'onUIAction'> & {

sdks/typescript/client/src/components/__tests__/UIResourceRenderer.unmocked.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { fireEvent, render } from '@testing-library/react';
22
import '@testing-library/jest-dom';
33
import React from 'react';
4-
import { EmbeddedResource } from '@modelcontextprotocol/sdk/types.js';
4+
import type { EmbeddedResource } from '@modelcontextprotocol/sdk/types.js';
55
import { UIResourceRenderer } from '../UIResourceRenderer';
66
import { UI_METADATA_PREFIX } from '../../types';
77

sdks/typescript/client/src/utils/metadataUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Resource } from '@modelcontextprotocol/sdk/types.js';
1+
import type { Resource } from '@modelcontextprotocol/sdk/types.js';
22
import { UI_METADATA_PREFIX, UIResourceMetadata } from '../types';
33

44
export function getResourceMetadata(resource: Partial<Resource>): Record<string, unknown> {

sdks/typescript/client/src/utils/processResource.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { EmbeddedResource, Resource } from '@modelcontextprotocol/sdk/types.js';
1+
import type { EmbeddedResource, Resource } from '@modelcontextprotocol/sdk/types.js';
22

33
type ProcessResourceResult = {
44
error?: string;

0 commit comments

Comments
 (0)