Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,10 @@ The SDK uses `zod/v4` internally. Schema utilities live in:

### Validation

Pluggable JSON Schema validation (`packages/core/src/validation/`):
Pluggable JSON Schema validation (`packages/core/src/validators/`):

- `ajv-provider.ts` - Default Ajv-based validator
- `cfworker-provider.ts` - Cloudflare Workers-compatible alternative
- `ajvProvider.ts` - Default Ajv-based validator
- `cfWorkerProvider.ts` - Cloudflare Workers-compatible alternative

### Examples

Expand Down
4 changes: 2 additions & 2 deletions packages/core/src/index.examples.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
* @module
*/

import { AjvJsonSchemaValidator } from './validation/ajvProvider.js';
import { CfWorkerJsonSchemaValidator } from './validation/cfWorkerProvider.js';
import { AjvJsonSchemaValidator } from './validators/ajvProvider.js';
import { CfWorkerJsonSchemaValidator } from './validators/cfWorkerProvider.js';

/**
* Example: AJV validator for Node.js.
Expand Down
10 changes: 5 additions & 5 deletions packages/core/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,20 @@ export * from './util/schema.js';

// experimental exports
export * from './experimental/index.js';
export * from './validation/ajvProvider.js';
export * from './validation/cfWorkerProvider.js';
export * from './validators/ajvProvider.js';
export * from './validators/cfWorkerProvider.js';
/**
* JSON Schema validation
*
* This module provides configurable JSON Schema validation for the MCP SDK.
* Choose a validator based on your runtime environment:
*
* - {@linkcode AjvJsonSchemaValidator}: Best for Node.js (default, fastest)
* Import from: @modelcontextprotocol/sdk/validation/ajv
* Import from: @modelcontextprotocol/sdk/validators/ajv
* Requires peer dependencies: ajv, ajv-formats
*
* - {@linkcode CfWorkerJsonSchemaValidator}: Best for edge runtimes
* Import from: @modelcontextprotocol/sdk/validation/cfworker
* Import from: @modelcontextprotocol/sdk/validators/cfworker
* Requires peer dependency: @cfworker/json-schema
*
* @example For Node.js with AJV
Expand All @@ -45,4 +45,4 @@ export * from './validation/cfWorkerProvider.js';
*/

// Core types only - implementations are exported via separate entry points
export type { JsonSchemaType, JsonSchemaValidator, jsonSchemaValidator, JsonSchemaValidatorResult } from './validation/types.js';
export type { JsonSchemaType, JsonSchemaValidator, jsonSchemaValidator, JsonSchemaValidatorResult } from './validators/types.js';
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import path from 'node:path';

import { vi } from 'vitest';

import { AjvJsonSchemaValidator } from '../../src/validation/ajvProvider.js';
import { CfWorkerJsonSchemaValidator } from '../../src/validation/cfWorkerProvider.js';
import type { JsonSchemaType } from '../../src/validation/types.js';
import { AjvJsonSchemaValidator } from '../../src/validators/ajvProvider.js';
import { CfWorkerJsonSchemaValidator } from '../../src/validators/cfWorkerProvider.js';
import type { JsonSchemaType } from '../../src/validators/types.js';

// Test with both AJV and CfWorker validators
// AJV validator will use default configuration with format validation enabled
Expand Down Expand Up @@ -554,7 +554,7 @@ describe('Missing dependencies', () => {
});

// Attempting to import ajv-provider should fail
await expect(import('../../src/validation/ajvProvider.js')).rejects.toThrow();
await expect(import('../../src/validators/ajvProvider.js')).rejects.toThrow();
});

it('should be able to import cfWorkerProvider when ajv is missing', async () => {
Expand All @@ -568,7 +568,7 @@ describe('Missing dependencies', () => {
});

// But cfWorkerProvider should import successfully
const cfworkerModule = await import('../../src/validation/cfWorkerProvider.js');
const cfworkerModule = await import('../../src/validators/cfWorkerProvider.js');
expect(cfworkerModule.CfWorkerJsonSchemaValidator).toBeDefined();

// And should work correctly
Expand All @@ -595,7 +595,7 @@ describe('Missing dependencies', () => {
});

// Attempting to import cfWorkerProvider should fail
await expect(import('../../src/validation/cfWorkerProvider.js')).rejects.toThrow();
await expect(import('../../src/validators/cfWorkerProvider.js')).rejects.toThrow();
});

it('should be able to import ajv-provider when @cfworker/json-schema is missing', async () => {
Expand All @@ -605,7 +605,7 @@ describe('Missing dependencies', () => {
});

// But ajv-provider should import successfully
const ajvModule = await import('../../src/validation/ajvProvider.js');
const ajvModule = await import('../../src/validators/ajvProvider.js');
expect(ajvModule.AjvJsonSchemaValidator).toBeDefined();

// And should work correctly
Expand All @@ -616,7 +616,7 @@ describe('Missing dependencies', () => {
});

it('should document that @cfworker/json-schema is required', () => {
const cfworkerProviderPath = path.join(__dirname, '../../src/validation/cfWorkerProvider.ts');
const cfworkerProviderPath = path.join(__dirname, '../../src/validators/cfWorkerProvider.ts');
const content = readFileSync(cfworkerProviderPath, 'utf8');

expect(content).toContain('@cfworker/json-schema');
Expand Down
Loading