@crashbytes/mcp-test-kit 0.1.0

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.
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Mock MCP Server for testing
3
+ */
4
+ /**
5
+ * Create a mock tool
6
+ */
7
+ export function mockTool(name, handler, options) {
8
+ return {
9
+ name,
10
+ description: options?.description,
11
+ inputSchema: options?.inputSchema || {
12
+ type: 'object',
13
+ properties: {},
14
+ },
15
+ handler,
16
+ };
17
+ }
18
+ /**
19
+ * Create a mock resource
20
+ */
21
+ export function mockResource(uri, name, handler, options) {
22
+ return {
23
+ uri,
24
+ name,
25
+ description: options?.description,
26
+ mimeType: options?.mimeType,
27
+ handler,
28
+ };
29
+ }
30
+ /**
31
+ * Mock MCP Server class
32
+ */
33
+ export class MockMCPServer {
34
+ constructor(config = {}) {
35
+ this.tools = new Map();
36
+ this.resources = new Map();
37
+ this.serverInfo = config.serverInfo || {
38
+ name: 'mock-server',
39
+ version: '1.0.0',
40
+ };
41
+ // Register tools
42
+ if (config.tools) {
43
+ for (const tool of config.tools) {
44
+ this.tools.set(tool.name, tool);
45
+ }
46
+ }
47
+ // Register resources
48
+ if (config.resources) {
49
+ for (const resource of config.resources) {
50
+ this.resources.set(resource.uri, resource);
51
+ }
52
+ }
53
+ }
54
+ /**
55
+ * Add a tool to the mock server
56
+ */
57
+ addTool(tool) {
58
+ this.tools.set(tool.name, tool);
59
+ }
60
+ /**
61
+ * Add a resource to the mock server
62
+ */
63
+ addResource(resource) {
64
+ this.resources.set(resource.uri, resource);
65
+ }
66
+ /**
67
+ * Get all tools
68
+ */
69
+ getTools() {
70
+ return Array.from(this.tools.values()).map((tool) => ({
71
+ name: tool.name,
72
+ description: tool.description,
73
+ inputSchema: tool.inputSchema,
74
+ }));
75
+ }
76
+ /**
77
+ * Get all resources
78
+ */
79
+ getResources() {
80
+ return Array.from(this.resources.values()).map((resource) => ({
81
+ uri: resource.uri,
82
+ name: resource.name,
83
+ description: resource.description,
84
+ mimeType: resource.mimeType,
85
+ }));
86
+ }
87
+ /**
88
+ * Call a tool
89
+ */
90
+ async callTool(name, args) {
91
+ const tool = this.tools.get(name);
92
+ if (!tool) {
93
+ throw new Error(`Tool '${name}' not found`);
94
+ }
95
+ return await tool.handler(args);
96
+ }
97
+ /**
98
+ * Read a resource
99
+ */
100
+ async readResource(uri) {
101
+ const resource = this.resources.get(uri);
102
+ if (!resource) {
103
+ throw new Error(`Resource '${uri}' not found`);
104
+ }
105
+ return await resource.handler(uri);
106
+ }
107
+ /**
108
+ * Get server info
109
+ */
110
+ getServerInfo() {
111
+ return this.serverInfo;
112
+ }
113
+ }
114
+ /**
115
+ * Create a mock MCP server
116
+ */
117
+ export function createMockMCPServer(config = {}) {
118
+ return new MockMCPServer(config);
119
+ }
120
+ //# sourceMappingURL=MockServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockServer.js","sourceRoot":"","sources":["../../src/mocks/MockServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Mocking utilities for MCP Test Kit
3
+ */
4
+ export * from './MockServer.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mocks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Mocking utilities for MCP Test Kit
3
+ */
4
+ export * from './MockServer.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mocks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Core types for MCP Test Kit
3
+ */
4
+ /**
5
+ * Transport type for MCP communication
6
+ */
7
+ export type TransportType = 'stdio' | 'sse' | 'http';
8
+ /**
9
+ * Configuration for creating an MCP test client
10
+ */
11
+ export interface MCPTestClientConfig {
12
+ /**
13
+ * Command to execute the MCP server
14
+ * @example 'node'
15
+ */
16
+ command: string;
17
+ /**
18
+ * Arguments to pass to the command
19
+ * @example ['dist/server.js']
20
+ */
21
+ args?: string[];
22
+ /**
23
+ * Environment variables for the server process
24
+ */
25
+ env?: Record<string, string>;
26
+ /**
27
+ * Timeout for operations in milliseconds
28
+ * @default 5000
29
+ */
30
+ timeout?: number;
31
+ /**
32
+ * Transport type to use
33
+ * @default 'stdio'
34
+ */
35
+ transport?: TransportType;
36
+ /**
37
+ * Server URL (required for SSE and HTTP transports)
38
+ */
39
+ serverUrl?: string;
40
+ /**
41
+ * Enable debug logging
42
+ * @default false
43
+ */
44
+ debug?: boolean;
45
+ }
46
+ /**
47
+ * MCP Tool definition
48
+ */
49
+ export interface MCPTool {
50
+ name: string;
51
+ description?: string;
52
+ inputSchema: {
53
+ type: 'object';
54
+ properties?: Record<string, unknown>;
55
+ required?: string[];
56
+ };
57
+ }
58
+ /**
59
+ * MCP Resource definition
60
+ */
61
+ export interface MCPResource {
62
+ uri: string;
63
+ name: string;
64
+ description?: string;
65
+ mimeType?: string;
66
+ }
67
+ /**
68
+ * MCP Prompt definition
69
+ */
70
+ export interface MCPPrompt {
71
+ name: string;
72
+ description?: string;
73
+ arguments?: Array<{
74
+ name: string;
75
+ description?: string;
76
+ required?: boolean;
77
+ }>;
78
+ }
79
+ /**
80
+ * MCP Tool call result
81
+ */
82
+ export interface MCPToolResult {
83
+ content: Array<{
84
+ type: 'text' | 'image' | 'resource';
85
+ text?: string;
86
+ data?: string;
87
+ mimeType?: string;
88
+ }>;
89
+ isError?: boolean;
90
+ }
91
+ /**
92
+ * MCP Resource content
93
+ */
94
+ export interface MCPResourceContent {
95
+ uri: string;
96
+ mimeType?: string;
97
+ text?: string;
98
+ }
99
+ /**
100
+ * MCP Error
101
+ */
102
+ export interface MCPError {
103
+ code: number;
104
+ message: string;
105
+ data?: unknown;
106
+ }
107
+ /**
108
+ * MCP Protocol version
109
+ */
110
+ export type MCPProtocolVersion = '2024-11-05' | string;
111
+ /**
112
+ * Server capabilities
113
+ */
114
+ export interface MCPServerCapabilities {
115
+ tools?: Record<string, unknown>;
116
+ resources?: Record<string, unknown>;
117
+ prompts?: Record<string, unknown>;
118
+ logging?: Record<string, unknown>;
119
+ }
120
+ /**
121
+ * Initialize result
122
+ */
123
+ export interface MCPInitializeResult {
124
+ protocolVersion: MCPProtocolVersion;
125
+ capabilities: MCPServerCapabilities;
126
+ serverInfo: {
127
+ name: string;
128
+ version: string;
129
+ };
130
+ }
131
+ /**
132
+ * Mock tool handler function
133
+ */
134
+ export type MockToolHandler = (args: Record<string, unknown>) => Promise<MCPToolResult> | MCPToolResult;
135
+ /**
136
+ * Mock resource handler function
137
+ */
138
+ export type MockResourceHandler = (uri: string) => Promise<MCPResourceContent> | MCPResourceContent;
139
+ /**
140
+ * Snapshot options
141
+ */
142
+ export interface SnapshotOptions {
143
+ /**
144
+ * Properties to exclude from snapshot
145
+ */
146
+ exclude?: string[];
147
+ /**
148
+ * Properties to include in snapshot
149
+ */
150
+ properties?: string[];
151
+ /**
152
+ * Custom serializer function
153
+ */
154
+ serializer?: (value: unknown) => string;
155
+ }
156
+ /**
157
+ * Test client interface
158
+ */
159
+ export interface IMCPTestClient {
160
+ /**
161
+ * Connect to the MCP server
162
+ */
163
+ connect(): Promise<void>;
164
+ /**
165
+ * Disconnect from the MCP server
166
+ */
167
+ disconnect(): Promise<void>;
168
+ /**
169
+ * List available tools
170
+ */
171
+ listTools(): Promise<MCPTool[]>;
172
+ /**
173
+ * Call a tool
174
+ */
175
+ callTool(name: string, args?: Record<string, unknown>): Promise<MCPToolResult>;
176
+ /**
177
+ * List available resources
178
+ */
179
+ listResources(): Promise<MCPResource[]>;
180
+ /**
181
+ * Read a resource
182
+ */
183
+ readResource(uri: string): Promise<MCPResourceContent>;
184
+ /**
185
+ * List available prompts
186
+ */
187
+ listPrompts(): Promise<MCPPrompt[]>;
188
+ /**
189
+ * Get a prompt
190
+ */
191
+ getPrompt(name: string, args?: Record<string, unknown>): Promise<unknown>;
192
+ }
193
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Core types for MCP Test Kit
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json ADDED
@@ -0,0 +1,94 @@
1
+ {
2
+ "name": "@crashbytes/mcp-test-kit",
3
+ "version": "0.1.0",
4
+ "description": "Testing framework for Model Context Protocol (MCP) servers - Jest/Vitest for MCP",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.js",
10
+ "require": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ },
13
+ "./matchers": {
14
+ "import": "./dist/matchers/index.js",
15
+ "require": "./dist/matchers/index.js",
16
+ "types": "./dist/matchers/index.d.ts"
17
+ },
18
+ "./mocks": {
19
+ "import": "./dist/mocks/index.js",
20
+ "require": "./dist/mocks/index.js",
21
+ "types": "./dist/mocks/index.d.ts"
22
+ }
23
+ },
24
+ "files": [
25
+ "dist",
26
+ "README.md",
27
+ "LICENSE"
28
+ ],
29
+ "scripts": {
30
+ "build": "tsc",
31
+ "build:watch": "tsc --watch",
32
+ "test": "vitest run",
33
+ "test:watch": "vitest",
34
+ "test:coverage": "vitest run --coverage",
35
+ "lint": "eslint src --ext .ts",
36
+ "lint:fix": "eslint src --ext .ts --fix",
37
+ "format": "prettier --write \"src/**/*.ts\"",
38
+ "format:check": "prettier --check \"src/**/*.ts\"",
39
+ "prepublishOnly": "npm run build && npm test",
40
+ "clean": "rm -rf dist"
41
+ },
42
+ "keywords": [
43
+ "mcp",
44
+ "model-context-protocol",
45
+ "testing",
46
+ "jest",
47
+ "vitest",
48
+ "test-framework",
49
+ "ai",
50
+ "llm",
51
+ "anthropic",
52
+ "claude",
53
+ "mcp-server",
54
+ "testing-library",
55
+ "mcp-testing",
56
+ "integration-testing"
57
+ ],
58
+ "author": "Michael Eakins <michael@crashbytes.com>",
59
+ "license": "MIT",
60
+ "repository": {
61
+ "type": "git",
62
+ "url": "https://github.com/CrashBytes/mcp-test-kit.git"
63
+ },
64
+ "bugs": {
65
+ "url": "https://github.com/CrashBytes/mcp-test-kit/issues"
66
+ },
67
+ "homepage": "https://github.com/CrashBytes/mcp-test-kit#readme",
68
+ "engines": {
69
+ "node": ">=18.0.0"
70
+ },
71
+ "dependencies": {
72
+ "@modelcontextprotocol/sdk": "^1.0.4"
73
+ },
74
+ "devDependencies": {
75
+ "@types/node": "^22.0.0",
76
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
77
+ "@typescript-eslint/parser": "^8.0.0",
78
+ "@vitest/coverage-v8": "^2.0.0",
79
+ "eslint": "^9.0.0",
80
+ "eslint-config-prettier": "^9.0.0",
81
+ "eslint-plugin-prettier": "^5.0.0",
82
+ "prettier": "^3.0.0",
83
+ "typescript": "^5.6.0",
84
+ "vitest": "^2.0.0"
85
+ },
86
+ "peerDependencies": {
87
+ "vitest": ">=1.0.0"
88
+ },
89
+ "peerDependenciesMeta": {
90
+ "vitest": {
91
+ "optional": true
92
+ }
93
+ }
94
+ }