Skip to content

Commit 97a0e35

Browse files
authored
feat: rename to mcp-client (#6)
1 parent 0b65f55 commit 97a0e35

29 files changed

+280
-301
lines changed

CHANGELOG.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,38 @@
11
# Changelog
22

3-
## [0.5.0](https://github.com/CodelyTV/typescript-mcp-test-client/compare/v0.4.0...v0.5.0) (2025-08-18)
3+
## [0.5.0](https://github.com/CodelyTV/typescript-mcp-client/compare/v0.4.0...v0.5.0) (2025-08-18)
44

55

66
### Features
77

8-
* export in one level ([c37fe6f](https://github.com/CodelyTV/typescript-mcp-test-client/commit/c37fe6ff8c1c81fc9e9c734dbe8793695e4cbda2))
8+
* export in one level ([c37fe6f](https://github.com/CodelyTV/typescript-mcp-client/commit/c37fe6ff8c1c81fc9e9c734dbe8793695e4cbda2))
99

10-
## [0.4.0](https://github.com/CodelyTV/typescript-mcp-test-client/compare/v0.3.0...v0.4.0) (2025-08-18)
10+
## [0.4.0](https://github.com/CodelyTV/typescript-mcp-client/compare/v0.3.0...v0.4.0) (2025-08-18)
1111

1212

1313
### Features
1414

15-
* disable provenance while the repo is private ([42f75a7](https://github.com/CodelyTV/typescript-mcp-test-client/commit/42f75a7ed8aab71725f620d056a6a02f5b0125a8))
15+
* disable provenance while the repo is private ([42f75a7](https://github.com/CodelyTV/typescript-mcp-client/commit/42f75a7ed8aab71725f620d056a6a02f5b0125a8))
1616

17-
## [0.3.0](https://github.com/CodelyTV/typescript-mcp-test-client/compare/v0.2.0...v0.3.0) (2025-08-18)
17+
## [0.3.0](https://github.com/CodelyTV/typescript-mcp-client/compare/v0.2.0...v0.3.0) (2025-08-18)
1818

1919

2020
### Features
2121

22-
* export using subfolders ([2f57fa6](https://github.com/CodelyTV/typescript-mcp-test-client/commit/2f57fa6a1739b5a1cac82ff2fa9a29a1599e92e4))
22+
* export using subfolders ([2f57fa6](https://github.com/CodelyTV/typescript-mcp-client/commit/2f57fa6a1739b5a1cac82ff2fa9a29a1599e92e4))
2323

24-
## [0.2.0](https://github.com/CodelyTV/typescript-mcp-test-client/compare/v0.1.0...v0.2.0) (2025-08-18)
24+
## [0.2.0](https://github.com/CodelyTV/typescript-mcp-client/compare/v0.1.0...v0.2.0) (2025-08-18)
2525

2626

2727
### Features
2828

29-
* add initial version ([e1366aa](https://github.com/CodelyTV/typescript-mcp-test-client/commit/e1366aaba676d3a29ec14a5a2a880d9e1fb8bf2a))
29+
* add initial version ([e1366aa](https://github.com/CodelyTV/typescript-mcp-client/commit/e1366aaba676d3a29ec14a5a2a880d9e1fb8bf2a))
3030

31-
## [0.1.0](https://github.com/CodelyTV/typescript-mcp-test-client/compare/v0.0.1...v0.1.0) (2025-08-18)
31+
## [0.1.0](https://github.com/CodelyTV/typescript-mcp-client/compare/v0.0.1...v0.1.0) (2025-08-18)
3232

3333

3434
### Features
3535

36-
* add initial version ([e1366aa](https://github.com/CodelyTV/typescript-mcp-test-client/commit/e1366aaba676d3a29ec14a5a2a880d9e1fb8bf2a))
36+
* add initial version ([e1366aa](https://github.com/CodelyTV/typescript-mcp-client/commit/e1366aaba676d3a29ec14a5a2a880d9e1fb8bf2a))
3737

3838
## Changelog

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
# @codelytv/mcp-test-client
1+
# @codelytv/mcp-client
22

33
A TypeScript test client for Model Context Protocol (MCP) servers that provides a convenient way to test MCP functionality in your test suites.
44

55
## Installation
66

77
```bash
8-
npm install --save-dev @codelytv/mcp-test-client
8+
npm install --save-dev @codelytv/mcp-client
99
```
1010

1111
## Usage
1212

1313
### Basic Example
1414

1515
```typescript
16-
import { McpTestClient } from '@codelytv/mcp-test-client';
16+
import { McpClient } from '@codelytv/mcp-client';
1717

18-
const mcpClient = new McpTestClient("stdio", [
18+
const mcpClient = new McpClient("stdio", [
1919
"npx",
2020
"ts-node",
2121
"./src/app/mcp/server.ts",
@@ -43,18 +43,18 @@ await mcpClient.disconnect();
4343
### HTTP Transport
4444

4545
```typescript
46-
const mcpClient = new McpTestClient("http", ["http://localhost:3000/mcp"]);
46+
const mcpClient = new McpClient("http", ["http://localhost:3000/mcp"]);
4747
```
4848

4949
## API
5050

51-
### McpTestClient
51+
### McpClient
5252

5353
The main client class for interacting with MCP servers.
5454

5555
#### Constructor
5656

57-
- `new McpTestClient(transport: "stdio" | "http", args: string[])`
57+
- `new McpClient(transport: "stdio" | "http", args: string[])`
5858

5959
#### Methods
6060

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "@codelytv/mcp-test-client",
2+
"name": "@codelytv/mcp-client",
33
"version": "0.5.0",
44
"description": "A TypeScript test client for Model Context Protocol (MCP) servers",
55
"keywords": [
@@ -23,9 +23,9 @@
2323
"author": "codelytv",
2424
"license": "GPL-3.0",
2525
"bugs": {
26-
"url": "https://github.com/CodelyTV/typescript-mcp-test-client/issues"
26+
"url": "https://github.com/CodelyTV/typescript-mcp-client/issues"
2727
},
28-
"homepage": "https://github.com/CodelyTV/typescript-mcp-test-client#readme",
28+
"homepage": "https://github.com/CodelyTV/typescript-mcp-client#readme",
2929
"dependencies": {
3030
"@codelytv/primitives-type": "^3.1.0",
3131
"@modelcontextprotocol/sdk": "^1.17.2"

src/McpTestClient.ts renamed to src/McpClient.ts

Lines changed: 27 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio";
55
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp";
66
import { Transport } from "@modelcontextprotocol/sdk/shared/transport";
77

8-
import { McpTestPromptGetResponse } from "./prompts/McpTestPromptGetResponse";
9-
import { McpTestPromptsListResponse } from "./prompts/McpTestPromptsListResponse";
10-
import { McpTestResourceTemplatesListResponse } from "./resource-templates/McpTestResourceTemplatesListResponse";
11-
import { McpTestResourcesListResponse } from "./resources/McpTestResourcesListResponse";
12-
import { McpTestResourcesReadResponse } from "./resources/McpTestResourcesReadResponse";
13-
import { McpTestToolCallResponse } from "./tools/McpTestToolCallResponse";
14-
import { McpTestToolsListResponse } from "./tools/McpTestToolsListResponse";
15-
16-
export class McpTestClient {
8+
import { McpPromptGetResponse } from "./prompts/McpPromptGetResponse";
9+
import { McpPromptsListResponse } from "./prompts/McpPromptsListResponse";
10+
import { McpResourceTemplatesListResponse } from "./resource-templates/McpResourceTemplatesListResponse";
11+
import { McpResourcesListResponse } from "./resources/McpResourcesListResponse";
12+
import { McpResourcesReadResponse } from "./resources/McpResourcesReadResponse";
13+
import { McpToolCallResponse } from "./tools/McpToolCallResponse";
14+
import { McpToolsListResponse } from "./tools/McpToolsListResponse";
15+
16+
export class McpClient {
1717
private readonly client: Client;
1818
private readonly transport: Transport;
1919

@@ -23,7 +23,7 @@ export class McpTestClient {
2323
) {
2424
this.client = new Client(
2525
{
26-
name: "mcp-test-client",
26+
name: "mcp-client",
2727
version: "1.0.0",
2828
},
2929
{
@@ -53,27 +53,25 @@ export class McpTestClient {
5353
await this.client.close();
5454
}
5555

56-
async listTools(): Promise<McpTestToolsListResponse> {
56+
async listTools(): Promise<McpToolsListResponse> {
5757
const response = await this.client.listTools();
5858

59-
return McpTestToolsListResponse.fromPrimitives(
60-
response as Primitives<McpTestToolsListResponse>,
61-
);
59+
return McpToolsListResponse.fromPrimitives(response as Primitives<McpToolsListResponse>);
6260
}
6361

64-
async listResources(): Promise<McpTestResourcesListResponse> {
62+
async listResources(): Promise<McpResourcesListResponse> {
6563
const response = await this.client.listResources();
6664

67-
return McpTestResourcesListResponse.fromPrimitives(
68-
response as Primitives<McpTestResourcesListResponse>,
65+
return McpResourcesListResponse.fromPrimitives(
66+
response as Primitives<McpResourcesListResponse>,
6967
);
7068
}
7169

72-
async listResourceTemplates(): Promise<McpTestResourceTemplatesListResponse> {
70+
async listResourceTemplates(): Promise<McpResourceTemplatesListResponse> {
7371
const response = await this.client.listResourceTemplates();
7472

75-
return McpTestResourceTemplatesListResponse.fromPrimitives(
76-
response as Primitives<McpTestResourceTemplatesListResponse>,
73+
return McpResourceTemplatesListResponse.fromPrimitives(
74+
response as Primitives<McpResourceTemplatesListResponse>,
7775
);
7876
}
7977

@@ -96,30 +94,27 @@ export class McpTestClient {
9694
return response.completion.values;
9795
}
9896

99-
async readResource(uri: string): Promise<McpTestResourcesReadResponse> {
97+
async readResource(uri: string): Promise<McpResourcesReadResponse> {
10098
const response = await this.client.readResource({ uri });
10199

102-
return McpTestResourcesReadResponse.fromPrimitives(
103-
response as Primitives<McpTestResourcesReadResponse>,
100+
return McpResourcesReadResponse.fromPrimitives(
101+
response as Primitives<McpResourcesReadResponse>,
104102
);
105103
}
106104

107-
async callTool(
108-
name: string,
109-
args: Record<string, unknown> = {},
110-
): Promise<McpTestToolCallResponse> {
105+
async callTool(name: string, args: Record<string, unknown> = {}): Promise<McpToolCallResponse> {
111106
const response = await this.client.callTool({
112107
name,
113108
arguments: args,
114109
});
115110

116-
return McpTestToolCallResponse.fromPrimitives(response as Primitives<McpTestToolCallResponse>);
111+
return McpToolCallResponse.fromPrimitives(response as Primitives<McpToolCallResponse>);
117112
}
118113

119-
async listPrompts(): Promise<McpTestPromptsListResponse> {
114+
async listPrompts(): Promise<McpPromptsListResponse> {
120115
const response = await this.client.listPrompts();
121116

122-
return McpTestPromptsListResponse.fromPrimitives({
117+
return McpPromptsListResponse.fromPrimitives({
123118
prompts: response.prompts.map((prompt: any) => ({
124119
name: prompt.name,
125120
title: prompt.title ?? "",
@@ -129,18 +124,15 @@ export class McpTestClient {
129124
});
130125
}
131126

132-
async getPrompt(
133-
name: string,
134-
args: Record<string, unknown> = {},
135-
): Promise<McpTestPromptGetResponse> {
127+
async getPrompt(name: string, args: Record<string, unknown> = {}): Promise<McpPromptGetResponse> {
136128
const response = await this.client.getPrompt({
137129
name,
138130
arguments: Object.fromEntries(
139131
Object.entries(args).map(([key, value]) => [key, String(value)]),
140132
),
141133
});
142134

143-
return McpTestPromptGetResponse.fromPrimitives({
135+
return McpPromptGetResponse.fromPrimitives({
144136
messages: response.messages.map((message: any) => ({
145137
role: message.role,
146138
content:

src/index.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
export { McpTestClient } from "./McpTestClient";
2-
export { McpTestPromptGetResponse } from "./prompts/McpTestPromptGetResponse";
3-
export { McpTestPromptListResponse } from "./prompts/McpTestPromptListResponse";
4-
export { McpTestPromptMessage } from "./prompts/McpTestPromptMessage";
5-
export { McpTestPromptsListResponse } from "./prompts/McpTestPromptsListResponse";
6-
export { McpTestResourceTemplateListResponse } from "./resource-templates/McpTestResourceTemplateListResponse";
7-
export { McpTestResourceTemplatesListResponse } from "./resource-templates/McpTestResourceTemplatesListResponse";
8-
export { McpTestResourceListResponse } from "./resources/McpTestResourceListResponse";
9-
export { McpTestResourcesListResponse } from "./resources/McpTestResourcesListResponse";
10-
export { McpTestResourcesReadResponse } from "./resources/McpTestResourcesReadResponse";
11-
export { McpTestResourcesReadResponseContent } from "./resources/McpTestResourcesReadResponseContent";
12-
export { McpTestToolCallResponse } from "./tools/McpTestToolCallResponse";
13-
export { McpTestToolContent } from "./tools/McpTestToolContent";
14-
export { McpTestToolListResponse } from "./tools/McpTestToolListResponse";
15-
export { McpTestToolsListResponse } from "./tools/McpTestToolsListResponse";
1+
export { McpClient } from "./McpClient";
2+
export { McpPromptGetResponse } from "./prompts/McpPromptGetResponse";
3+
export { McpPromptListResponse } from "./prompts/McpPromptListResponse";
4+
export { McpPromptMessage } from "./prompts/McpPromptMessage";
5+
export { McpPromptsListResponse } from "./prompts/McpPromptsListResponse";
6+
export { McpResourceTemplateListResponse } from "./resource-templates/McpResourceTemplateListResponse";
7+
export { McpResourceTemplatesListResponse } from "./resource-templates/McpResourceTemplatesListResponse";
8+
export { McpResourceListResponse } from "./resources/McpResourceListResponse";
9+
export { McpResourcesListResponse } from "./resources/McpResourcesListResponse";
10+
export { McpResourcesReadResponse } from "./resources/McpResourcesReadResponse";
11+
export { McpResourcesReadResponseContent } from "./resources/McpResourcesReadResponseContent";
12+
export { McpToolCallResponse } from "./tools/McpToolCallResponse";
13+
export { McpToolContent } from "./tools/McpToolContent";
14+
export { McpToolListResponse } from "./tools/McpToolListResponse";
15+
export { McpToolsListResponse } from "./tools/McpToolsListResponse";
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { Primitives } from "@codelytv/primitives-type";
2+
3+
import { McpPromptMessage } from "./McpPromptMessage";
4+
5+
export class McpPromptGetResponse {
6+
constructor(public readonly messages: McpPromptMessage[]) {}
7+
8+
static fromPrimitives(primitives: Primitives<McpPromptGetResponse>): McpPromptGetResponse {
9+
return new McpPromptGetResponse(
10+
primitives.messages.map((message) => McpPromptMessage.fromPrimitives(message)),
11+
);
12+
}
13+
14+
toPrimitives(): Primitives<McpPromptGetResponse> {
15+
return {
16+
messages: this.messages.map((message) => message.toPrimitives()),
17+
};
18+
}
19+
20+
firstPromptText(): string {
21+
return this.messages[0].content.text;
22+
}
23+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { Primitives } from "@codelytv/primitives-type";
2+
3+
export class McpPromptListResponse {
4+
constructor(
5+
public readonly name: string,
6+
public readonly title: string,
7+
public readonly description: string,
8+
public readonly args: object,
9+
) {}
10+
11+
static fromPrimitives(prompt: Primitives<McpPromptListResponse>): McpPromptListResponse {
12+
return new McpPromptListResponse(prompt.name, prompt.title, prompt.description, prompt.args);
13+
}
14+
}

src/prompts/McpTestPromptMessage.ts renamed to src/prompts/McpPromptMessage.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import { Primitives } from "@codelytv/primitives-type";
22

3-
export class McpTestPromptMessage {
3+
export class McpPromptMessage {
44
constructor(
55
public readonly role: "user" | "assistant",
66
public readonly content: { type: string; text: string },
77
) {}
88

9-
static fromPrimitives(message: Primitives<McpTestPromptMessage>): McpTestPromptMessage {
10-
return new McpTestPromptMessage(message.role, message.content);
9+
static fromPrimitives(message: Primitives<McpPromptMessage>): McpPromptMessage {
10+
return new McpPromptMessage(message.role, message.content);
1111
}
1212

13-
toPrimitives(): Primitives<McpTestPromptMessage> {
13+
toPrimitives(): Primitives<McpPromptMessage> {
1414
return {
1515
role: this.role,
1616
content: this.content,
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { Primitives } from "@codelytv/primitives-type";
2+
3+
import { McpPromptListResponse } from "./McpPromptListResponse";
4+
5+
export class McpPromptsListResponse {
6+
constructor(public readonly prompts: McpPromptListResponse[]) {}
7+
8+
static fromPrimitives(primitives: Primitives<McpPromptsListResponse>): McpPromptsListResponse {
9+
return new McpPromptsListResponse(
10+
primitives.prompts.map((prompt) => McpPromptListResponse.fromPrimitives(prompt)),
11+
);
12+
}
13+
14+
names(): string[] {
15+
return this.prompts.map((prompt) => prompt.name);
16+
}
17+
}

0 commit comments

Comments
 (0)