@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.
- package/LICENSE +21 -0
- package/README.md +655 -0
- package/dist/client/MCPTestClient.d.ts +62 -0
- package/dist/client/MCPTestClient.d.ts.map +1 -0
- package/dist/client/MCPTestClient.js +197 -0
- package/dist/client/MCPTestClient.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/matchers/index.d.ts +7 -0
- package/dist/matchers/index.d.ts.map +1 -0
- package/dist/matchers/index.js +7 -0
- package/dist/matchers/index.js.map +1 -0
- package/dist/matchers/vitest.d.ts +29 -0
- package/dist/matchers/vitest.d.ts.map +1 -0
- package/dist/matchers/vitest.js +201 -0
- package/dist/matchers/vitest.js.map +1 -0
- package/dist/mocks/MockServer.d.ts +93 -0
- package/dist/mocks/MockServer.d.ts.map +1 -0
- package/dist/mocks/MockServer.js +120 -0
- package/dist/mocks/MockServer.js.map +1 -0
- package/dist/mocks/index.d.ts +5 -0
- package/dist/mocks/index.d.ts.map +1 -0
- package/dist/mocks/index.js +5 -0
- package/dist/mocks/index.js.map +1 -0
- package/dist/types/index.d.ts +193 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +94 -0
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mocks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC"}
|
|
@@ -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 @@
|
|
|
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
|
+
}
|