@vapi-ai/mcp-server 0.0.2 → 0.0.4
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/README.md +57 -22
- package/dist/__tests__/mcp-server-e2e.test.d.ts +2 -0
- package/dist/__tests__/mcp-server-e2e.test.d.ts.map +1 -0
- package/dist/__tests__/mcp-server-mock.test.d.ts +2 -0
- package/dist/__tests__/mcp-server-mock.test.d.ts.map +1 -0
- package/dist/__tests__/mocks/vapi-client.mock.d.ts +9 -0
- package/dist/__tests__/mocks/vapi-client.mock.d.ts.map +1 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/schemas/index.d.ts +378 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +5 -0
- package/dist/tools/assistant.d.ts +4 -0
- package/dist/tools/assistant.d.ts.map +1 -0
- package/dist/tools/call.d.ts +4 -0
- package/dist/tools/call.d.ts.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/phone-number.d.ts +4 -0
- package/dist/tools/phone-number.d.ts.map +1 -0
- package/dist/tools/utils.d.ts +16 -0
- package/dist/tools/utils.d.ts.map +1 -0
- package/dist/transformers/index.d.ts +9 -0
- package/dist/transformers/index.d.ts.map +1 -0
- package/dist/transformers/index.js +8 -0
- package/dist/utils/response.d.ts +2 -0
- package/dist/utils/response.d.ts.map +1 -0
- package/package.json +15 -5
package/README.md
CHANGED
|
@@ -2,23 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
The Vapi [Model Context Protocol](https://modelcontextprotocol.com/) server allows you to integrate with Vapi APIs through function calling.
|
|
4
4
|
|
|
5
|
-
## Setup
|
|
5
|
+
## Claude Desktop Setup
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
### Usage with Claude Desktop
|
|
17
|
-
|
|
18
|
-
Add the following to your `claude_desktop_config.json`. See [here](https://modelcontextprotocol.io/quickstart/user) for more details.
|
|
19
|
-
|
|
20
|
-
```
|
|
7
|
+
1. Open `Claude Desktop` and press `CMD + ,` to go to `Settings`.
|
|
8
|
+
2. Click on the `Developer` tab.
|
|
9
|
+
3. Click on the `Edit Config` button.
|
|
10
|
+
4. This will open the `claude_desktop_config.json` file in your file explorer.
|
|
11
|
+
5. Get your Vapi API key from the Vapi dashboard (<https://dashboard.vapi.ai/org/api-keys>).
|
|
12
|
+
6. Add the following to your `claude_desktop_config.json` file. See [here](https://modelcontextprotocol.io/quickstart/user) for more details.
|
|
13
|
+
7. Restart the Claude Desktop after editing the config file.
|
|
21
14
|
|
|
15
|
+
```json
|
|
22
16
|
{
|
|
23
17
|
"mcpServers": {
|
|
24
18
|
"vapi-mcp-server": {
|
|
@@ -36,6 +30,27 @@ Add the following to your `claude_desktop_config.json`. See [here](https://model
|
|
|
36
30
|
|
|
37
31
|
```
|
|
38
32
|
|
|
33
|
+
### Example Usage with Claude Desktop
|
|
34
|
+
|
|
35
|
+
1. Create or import a phone number using the Vapi dashboard (<https://dashboard.vapi.ai/phone-numbers>).
|
|
36
|
+
2. Create a new assistant using the existing 'Appointment Scheduler' template in the Vapi dashboard (<https://dashboard.vapi.ai/assistants>).
|
|
37
|
+
3. Make sure to configure Claude Desktop to use the Vapi MCP server and restart the Claude Desktop app.
|
|
38
|
+
4. Ask Claude with the following message:
|
|
39
|
+
|
|
40
|
+
```md
|
|
41
|
+
I wanna schedule an appointment, can you connect me with Riley assistant using my phone number +1234567890?
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Remote SSE Connection
|
|
45
|
+
|
|
46
|
+
To connect to Vapi's MCP server via Server-Sent Events (SSE) Transport:
|
|
47
|
+
|
|
48
|
+
- Connect to `https://mcp.vapi.ai/sse` from any MCP client using SSE Transport
|
|
49
|
+
- Include your Vapi API key as a bearer token in the request headers
|
|
50
|
+
- Example header: `Authorization: Bearer your_vapi_api_key_here`
|
|
51
|
+
|
|
52
|
+
This connection allows you to access Vapi's functionality remotely without running a local server.
|
|
53
|
+
|
|
39
54
|
## Development
|
|
40
55
|
|
|
41
56
|
```bash
|
|
@@ -46,16 +61,29 @@ npm install
|
|
|
46
61
|
npm run build
|
|
47
62
|
```
|
|
48
63
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
64
|
+
Update your `claude_desktop_config.json` to use the local server.
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"mcpServers": {
|
|
69
|
+
"vapi-local": {
|
|
70
|
+
"command": "node",
|
|
71
|
+
"args": [
|
|
72
|
+
"<path_to_vapi_mcp_server>/dist/index.js"
|
|
73
|
+
],
|
|
74
|
+
"env": {
|
|
75
|
+
"VAPI_TOKEN": "<your_vapi_token>"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
}
|
|
79
|
+
}
|
|
52
80
|
```
|
|
53
81
|
|
|
54
|
-
|
|
82
|
+
### Testing
|
|
55
83
|
|
|
56
84
|
The project has two types of tests:
|
|
57
85
|
|
|
58
|
-
|
|
86
|
+
#### Unit Tests
|
|
59
87
|
|
|
60
88
|
Unit tests use mocks to test the MCP server without making actual API calls to Vapi.
|
|
61
89
|
|
|
@@ -64,7 +92,7 @@ Unit tests use mocks to test the MCP server without making actual API calls to V
|
|
|
64
92
|
npm run test:unit
|
|
65
93
|
```
|
|
66
94
|
|
|
67
|
-
|
|
95
|
+
#### End-to-End Tests
|
|
68
96
|
|
|
69
97
|
E2E tests run the full MCP server with actual API calls to Vapi.
|
|
70
98
|
|
|
@@ -78,10 +106,17 @@ npm run test:e2e
|
|
|
78
106
|
|
|
79
107
|
Note: E2E tests require a valid Vapi API token to be set in the environment.
|
|
80
108
|
|
|
81
|
-
|
|
109
|
+
#### Running All Tests
|
|
82
110
|
|
|
83
111
|
To run all tests at once:
|
|
84
112
|
|
|
85
113
|
```bash
|
|
86
114
|
npm test
|
|
87
115
|
```
|
|
116
|
+
|
|
117
|
+
## References
|
|
118
|
+
|
|
119
|
+
- [VAPI Remote MCP Server](https://mcp.vapi.ai/)
|
|
120
|
+
- [VAPI MCP Tool](https://docs.vapi.ai/tools/mcp)
|
|
121
|
+
- [Model Context Protocol](https://modelcontextprotocol.com/)
|
|
122
|
+
- [Claude Desktop](https://modelcontextprotocol.io/quickstart/user)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server-e2e.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/mcp-server-e2e.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server-mock.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/mcp-server-mock.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class MockVapiClient {
|
|
2
|
+
assistants: {
|
|
3
|
+
list: jest.Mock<any, any, any>;
|
|
4
|
+
get: jest.Mock<any, any, any>;
|
|
5
|
+
create: jest.Mock<any, any, any>;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export declare const createMockVapiClient: () => MockVapiClient;
|
|
9
|
+
//# sourceMappingURL=vapi-client.mock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vapi-client.mock.d.ts","sourceRoot":"","sources":["../../../src/__tests__/mocks/vapi-client.mock.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IACzB,UAAU;;;;MAuCR;CACH;AAED,eAAO,MAAM,oBAAoB,sBAEhC,CAAC"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,KAAG,UAKhD,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE,iBAAS,eAAe,cAiBvB;AA8BD,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const ModelProvider: {
|
|
3
|
+
readonly OpenAI: "openai";
|
|
4
|
+
readonly Anthropic: "anthropic";
|
|
5
|
+
readonly GoogleAI: "google";
|
|
6
|
+
};
|
|
7
|
+
export declare const OpenAIModels: {
|
|
8
|
+
readonly GPT4o: "gpt-4o";
|
|
9
|
+
readonly GPT4oMini: "gpt-4o-mini";
|
|
10
|
+
};
|
|
11
|
+
export declare const AnthropicModels: {
|
|
12
|
+
readonly Claude3Sonnet: "claude-3-7-sonnet-20250219";
|
|
13
|
+
readonly Claude3Haiku: "claude-3-5-haiku-20241022";
|
|
14
|
+
};
|
|
15
|
+
export declare const GoogleModels: {
|
|
16
|
+
readonly GeminiPro: "gemini-1.5-pro";
|
|
17
|
+
readonly GeminiFlash: "gemini-1.5-flash";
|
|
18
|
+
readonly Gemini2Flash: "gemini-2.0-flash";
|
|
19
|
+
readonly Gemini2Pro: "gemini-2.0-pro";
|
|
20
|
+
};
|
|
21
|
+
export type ModelProviderType = (typeof ModelProvider)[keyof typeof ModelProvider];
|
|
22
|
+
export type OpenAIModelType = (typeof OpenAIModels)[keyof typeof OpenAIModels];
|
|
23
|
+
export type AnthropicModelType = (typeof AnthropicModels)[keyof typeof AnthropicModels];
|
|
24
|
+
export type GoogleModelType = (typeof GoogleModels)[keyof typeof GoogleModels];
|
|
25
|
+
export declare const DEFAULT_LLM: {
|
|
26
|
+
provider: "openai";
|
|
27
|
+
model: "gpt-4o";
|
|
28
|
+
};
|
|
29
|
+
declare const VoiceProviderSchema: z.ZodEnum<["vapi", "11labs", "azure", "cartesia", "custom-voice", "deepgram", "11labs", "hume", "lmnt", "neuphonic", "openai", "playht", "rime-ai", "smallest-ai", "tavus", "sesame"]>;
|
|
30
|
+
export type VoiceProviderType = z.infer<typeof VoiceProviderSchema>;
|
|
31
|
+
export declare const DEFAULT_VOICE: {
|
|
32
|
+
provider: VoiceProviderType;
|
|
33
|
+
voiceId: string;
|
|
34
|
+
};
|
|
35
|
+
export declare const DEFAULT_TRANSCRIBER: {
|
|
36
|
+
provider: string;
|
|
37
|
+
model: string;
|
|
38
|
+
};
|
|
39
|
+
export declare const ElevenLabsVoiceIds: {
|
|
40
|
+
readonly Sarah: "sarah";
|
|
41
|
+
readonly Phillip: "phillip";
|
|
42
|
+
readonly Steve: "steve";
|
|
43
|
+
readonly Joseph: "joseph";
|
|
44
|
+
readonly Myra: "myra";
|
|
45
|
+
};
|
|
46
|
+
export declare const BaseResponseSchema: z.ZodObject<{
|
|
47
|
+
id: z.ZodString;
|
|
48
|
+
createdAt: z.ZodString;
|
|
49
|
+
updatedAt: z.ZodString;
|
|
50
|
+
}, "strip", z.ZodTypeAny, {
|
|
51
|
+
id: string;
|
|
52
|
+
createdAt: string;
|
|
53
|
+
updatedAt: string;
|
|
54
|
+
}, {
|
|
55
|
+
id: string;
|
|
56
|
+
createdAt: string;
|
|
57
|
+
updatedAt: string;
|
|
58
|
+
}>;
|
|
59
|
+
export declare const CreateAssistantInputSchema: z.ZodObject<{
|
|
60
|
+
name: z.ZodString;
|
|
61
|
+
instructions: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
62
|
+
llm: z.ZodDefault<z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
|
|
63
|
+
provider: z.ZodLiteral<"openai">;
|
|
64
|
+
model: z.ZodEnum<["gpt-4o", "gpt-4o-mini"]>;
|
|
65
|
+
}, "strip", z.ZodTypeAny, {
|
|
66
|
+
provider: "openai";
|
|
67
|
+
model: "gpt-4o" | "gpt-4o-mini";
|
|
68
|
+
}, {
|
|
69
|
+
provider: "openai";
|
|
70
|
+
model: "gpt-4o" | "gpt-4o-mini";
|
|
71
|
+
}>, z.ZodObject<{
|
|
72
|
+
provider: z.ZodLiteral<"anthropic">;
|
|
73
|
+
model: z.ZodEnum<["claude-3-7-sonnet-20250219", "claude-3-5-haiku-20241022"]>;
|
|
74
|
+
}, "strip", z.ZodTypeAny, {
|
|
75
|
+
provider: "anthropic";
|
|
76
|
+
model: "claude-3-7-sonnet-20250219" | "claude-3-5-haiku-20241022";
|
|
77
|
+
}, {
|
|
78
|
+
provider: "anthropic";
|
|
79
|
+
model: "claude-3-7-sonnet-20250219" | "claude-3-5-haiku-20241022";
|
|
80
|
+
}>, z.ZodObject<{
|
|
81
|
+
provider: z.ZodLiteral<"google">;
|
|
82
|
+
model: z.ZodEnum<["gemini-1.5-pro", "gemini-1.5-flash", "gemini-2.0-flash", "gemini-2.0-pro"]>;
|
|
83
|
+
}, "strip", z.ZodTypeAny, {
|
|
84
|
+
provider: "google";
|
|
85
|
+
model: "gemini-1.5-pro" | "gemini-1.5-flash" | "gemini-2.0-flash" | "gemini-2.0-pro";
|
|
86
|
+
}, {
|
|
87
|
+
provider: "google";
|
|
88
|
+
model: "gemini-1.5-pro" | "gemini-1.5-flash" | "gemini-2.0-flash" | "gemini-2.0-pro";
|
|
89
|
+
}>, z.ZodObject<{
|
|
90
|
+
provider: z.ZodString;
|
|
91
|
+
model: z.ZodString;
|
|
92
|
+
}, "strip", z.ZodTypeAny, {
|
|
93
|
+
provider: string;
|
|
94
|
+
model: string;
|
|
95
|
+
}, {
|
|
96
|
+
provider: string;
|
|
97
|
+
model: string;
|
|
98
|
+
}>]>, z.ZodEffects<z.ZodString, any, string>]>>;
|
|
99
|
+
transcriber: z.ZodDefault<z.ZodObject<{
|
|
100
|
+
provider: z.ZodString;
|
|
101
|
+
model: z.ZodString;
|
|
102
|
+
}, "strip", z.ZodTypeAny, {
|
|
103
|
+
provider: string;
|
|
104
|
+
model: string;
|
|
105
|
+
}, {
|
|
106
|
+
provider: string;
|
|
107
|
+
model: string;
|
|
108
|
+
}>>;
|
|
109
|
+
voice: z.ZodDefault<z.ZodObject<{
|
|
110
|
+
provider: z.ZodEnum<["vapi", "11labs", "azure", "cartesia", "custom-voice", "deepgram", "11labs", "hume", "lmnt", "neuphonic", "openai", "playht", "rime-ai", "smallest-ai", "tavus", "sesame"]>;
|
|
111
|
+
voiceId: z.ZodString;
|
|
112
|
+
model: z.ZodOptional<z.ZodString>;
|
|
113
|
+
}, "strip", z.ZodTypeAny, {
|
|
114
|
+
provider: "openai" | "vapi" | "11labs" | "azure" | "cartesia" | "custom-voice" | "deepgram" | "hume" | "lmnt" | "neuphonic" | "playht" | "rime-ai" | "smallest-ai" | "tavus" | "sesame";
|
|
115
|
+
voiceId: string;
|
|
116
|
+
model?: string | undefined;
|
|
117
|
+
}, {
|
|
118
|
+
provider: "openai" | "vapi" | "11labs" | "azure" | "cartesia" | "custom-voice" | "deepgram" | "hume" | "lmnt" | "neuphonic" | "playht" | "rime-ai" | "smallest-ai" | "tavus" | "sesame";
|
|
119
|
+
voiceId: string;
|
|
120
|
+
model?: string | undefined;
|
|
121
|
+
}>>;
|
|
122
|
+
firstMessage: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
123
|
+
firstMessageMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<["assistant-speaks-first", "assistant-waits-for-user", "assistant-speaks-first-with-model-generated-message"]>>>;
|
|
124
|
+
}, "strip", z.ZodTypeAny, {
|
|
125
|
+
name: string;
|
|
126
|
+
instructions: string;
|
|
127
|
+
transcriber: {
|
|
128
|
+
provider: string;
|
|
129
|
+
model: string;
|
|
130
|
+
};
|
|
131
|
+
voice: {
|
|
132
|
+
provider: "openai" | "vapi" | "11labs" | "azure" | "cartesia" | "custom-voice" | "deepgram" | "hume" | "lmnt" | "neuphonic" | "playht" | "rime-ai" | "smallest-ai" | "tavus" | "sesame";
|
|
133
|
+
voiceId: string;
|
|
134
|
+
model?: string | undefined;
|
|
135
|
+
};
|
|
136
|
+
firstMessage: string;
|
|
137
|
+
llm?: any;
|
|
138
|
+
firstMessageMode?: "assistant-speaks-first" | "assistant-waits-for-user" | "assistant-speaks-first-with-model-generated-message" | undefined;
|
|
139
|
+
}, {
|
|
140
|
+
name: string;
|
|
141
|
+
instructions?: string | undefined;
|
|
142
|
+
llm?: string | {
|
|
143
|
+
provider: "openai";
|
|
144
|
+
model: "gpt-4o" | "gpt-4o-mini";
|
|
145
|
+
} | {
|
|
146
|
+
provider: "anthropic";
|
|
147
|
+
model: "claude-3-7-sonnet-20250219" | "claude-3-5-haiku-20241022";
|
|
148
|
+
} | {
|
|
149
|
+
provider: "google";
|
|
150
|
+
model: "gemini-1.5-pro" | "gemini-1.5-flash" | "gemini-2.0-flash" | "gemini-2.0-pro";
|
|
151
|
+
} | {
|
|
152
|
+
provider: string;
|
|
153
|
+
model: string;
|
|
154
|
+
} | undefined;
|
|
155
|
+
transcriber?: {
|
|
156
|
+
provider: string;
|
|
157
|
+
model: string;
|
|
158
|
+
} | undefined;
|
|
159
|
+
voice?: {
|
|
160
|
+
provider: "openai" | "vapi" | "11labs" | "azure" | "cartesia" | "custom-voice" | "deepgram" | "hume" | "lmnt" | "neuphonic" | "playht" | "rime-ai" | "smallest-ai" | "tavus" | "sesame";
|
|
161
|
+
voiceId: string;
|
|
162
|
+
model?: string | undefined;
|
|
163
|
+
} | undefined;
|
|
164
|
+
firstMessage?: string | undefined;
|
|
165
|
+
firstMessageMode?: "assistant-speaks-first" | "assistant-waits-for-user" | "assistant-speaks-first-with-model-generated-message" | undefined;
|
|
166
|
+
}>;
|
|
167
|
+
export declare const AssistantOutputSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
168
|
+
id: z.ZodString;
|
|
169
|
+
createdAt: z.ZodString;
|
|
170
|
+
updatedAt: z.ZodString;
|
|
171
|
+
}, {
|
|
172
|
+
name: z.ZodString;
|
|
173
|
+
llm: z.ZodObject<{
|
|
174
|
+
provider: z.ZodString;
|
|
175
|
+
model: z.ZodString;
|
|
176
|
+
}, "strip", z.ZodTypeAny, {
|
|
177
|
+
provider: string;
|
|
178
|
+
model: string;
|
|
179
|
+
}, {
|
|
180
|
+
provider: string;
|
|
181
|
+
model: string;
|
|
182
|
+
}>;
|
|
183
|
+
voice: z.ZodObject<{
|
|
184
|
+
provider: z.ZodString;
|
|
185
|
+
voiceId: z.ZodString;
|
|
186
|
+
model: z.ZodOptional<z.ZodString>;
|
|
187
|
+
}, "strip", z.ZodTypeAny, {
|
|
188
|
+
provider: string;
|
|
189
|
+
voiceId: string;
|
|
190
|
+
model?: string | undefined;
|
|
191
|
+
}, {
|
|
192
|
+
provider: string;
|
|
193
|
+
voiceId: string;
|
|
194
|
+
model?: string | undefined;
|
|
195
|
+
}>;
|
|
196
|
+
transcriber: z.ZodObject<{
|
|
197
|
+
provider: z.ZodString;
|
|
198
|
+
model: z.ZodString;
|
|
199
|
+
}, "strip", z.ZodTypeAny, {
|
|
200
|
+
provider: string;
|
|
201
|
+
model: string;
|
|
202
|
+
}, {
|
|
203
|
+
provider: string;
|
|
204
|
+
model: string;
|
|
205
|
+
}>;
|
|
206
|
+
}>, "strip", z.ZodTypeAny, {
|
|
207
|
+
id: string;
|
|
208
|
+
createdAt: string;
|
|
209
|
+
updatedAt: string;
|
|
210
|
+
name: string;
|
|
211
|
+
llm: {
|
|
212
|
+
provider: string;
|
|
213
|
+
model: string;
|
|
214
|
+
};
|
|
215
|
+
transcriber: {
|
|
216
|
+
provider: string;
|
|
217
|
+
model: string;
|
|
218
|
+
};
|
|
219
|
+
voice: {
|
|
220
|
+
provider: string;
|
|
221
|
+
voiceId: string;
|
|
222
|
+
model?: string | undefined;
|
|
223
|
+
};
|
|
224
|
+
}, {
|
|
225
|
+
id: string;
|
|
226
|
+
createdAt: string;
|
|
227
|
+
updatedAt: string;
|
|
228
|
+
name: string;
|
|
229
|
+
llm: {
|
|
230
|
+
provider: string;
|
|
231
|
+
model: string;
|
|
232
|
+
};
|
|
233
|
+
transcriber: {
|
|
234
|
+
provider: string;
|
|
235
|
+
model: string;
|
|
236
|
+
};
|
|
237
|
+
voice: {
|
|
238
|
+
provider: string;
|
|
239
|
+
voiceId: string;
|
|
240
|
+
model?: string | undefined;
|
|
241
|
+
};
|
|
242
|
+
}>;
|
|
243
|
+
export declare const GetAssistantInputSchema: z.ZodObject<{
|
|
244
|
+
assistantId: z.ZodString;
|
|
245
|
+
}, "strip", z.ZodTypeAny, {
|
|
246
|
+
assistantId: string;
|
|
247
|
+
}, {
|
|
248
|
+
assistantId: string;
|
|
249
|
+
}>;
|
|
250
|
+
export declare const CallInputSchema: z.ZodObject<{
|
|
251
|
+
assistantId: z.ZodOptional<z.ZodString>;
|
|
252
|
+
phoneNumberId: z.ZodOptional<z.ZodString>;
|
|
253
|
+
customer: z.ZodOptional<z.ZodObject<{
|
|
254
|
+
phoneNumber: z.ZodString;
|
|
255
|
+
}, "strip", z.ZodTypeAny, {
|
|
256
|
+
phoneNumber: string;
|
|
257
|
+
}, {
|
|
258
|
+
phoneNumber: string;
|
|
259
|
+
}>>;
|
|
260
|
+
scheduledAt: z.ZodOptional<z.ZodString>;
|
|
261
|
+
}, "strip", z.ZodTypeAny, {
|
|
262
|
+
assistantId?: string | undefined;
|
|
263
|
+
phoneNumberId?: string | undefined;
|
|
264
|
+
customer?: {
|
|
265
|
+
phoneNumber: string;
|
|
266
|
+
} | undefined;
|
|
267
|
+
scheduledAt?: string | undefined;
|
|
268
|
+
}, {
|
|
269
|
+
assistantId?: string | undefined;
|
|
270
|
+
phoneNumberId?: string | undefined;
|
|
271
|
+
customer?: {
|
|
272
|
+
phoneNumber: string;
|
|
273
|
+
} | undefined;
|
|
274
|
+
scheduledAt?: string | undefined;
|
|
275
|
+
}>;
|
|
276
|
+
export declare const CallOutputSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
277
|
+
id: z.ZodString;
|
|
278
|
+
createdAt: z.ZodString;
|
|
279
|
+
updatedAt: z.ZodString;
|
|
280
|
+
}, {
|
|
281
|
+
status: z.ZodString;
|
|
282
|
+
endedReason: z.ZodOptional<z.ZodString>;
|
|
283
|
+
assistantId: z.ZodOptional<z.ZodString>;
|
|
284
|
+
phoneNumberId: z.ZodOptional<z.ZodString>;
|
|
285
|
+
customer: z.ZodOptional<z.ZodObject<{
|
|
286
|
+
phoneNumber: z.ZodString;
|
|
287
|
+
}, "strip", z.ZodTypeAny, {
|
|
288
|
+
phoneNumber: string;
|
|
289
|
+
}, {
|
|
290
|
+
phoneNumber: string;
|
|
291
|
+
}>>;
|
|
292
|
+
scheduledAt: z.ZodOptional<z.ZodString>;
|
|
293
|
+
}>, "strip", z.ZodTypeAny, {
|
|
294
|
+
status: string;
|
|
295
|
+
id: string;
|
|
296
|
+
createdAt: string;
|
|
297
|
+
updatedAt: string;
|
|
298
|
+
assistantId?: string | undefined;
|
|
299
|
+
phoneNumberId?: string | undefined;
|
|
300
|
+
customer?: {
|
|
301
|
+
phoneNumber: string;
|
|
302
|
+
} | undefined;
|
|
303
|
+
scheduledAt?: string | undefined;
|
|
304
|
+
endedReason?: string | undefined;
|
|
305
|
+
}, {
|
|
306
|
+
status: string;
|
|
307
|
+
id: string;
|
|
308
|
+
createdAt: string;
|
|
309
|
+
updatedAt: string;
|
|
310
|
+
assistantId?: string | undefined;
|
|
311
|
+
phoneNumberId?: string | undefined;
|
|
312
|
+
customer?: {
|
|
313
|
+
phoneNumber: string;
|
|
314
|
+
} | undefined;
|
|
315
|
+
scheduledAt?: string | undefined;
|
|
316
|
+
endedReason?: string | undefined;
|
|
317
|
+
}>;
|
|
318
|
+
export declare const GetCallInputSchema: z.ZodObject<{
|
|
319
|
+
callId: z.ZodString;
|
|
320
|
+
}, "strip", z.ZodTypeAny, {
|
|
321
|
+
callId: string;
|
|
322
|
+
}, {
|
|
323
|
+
callId: string;
|
|
324
|
+
}>;
|
|
325
|
+
export declare const PhoneNumberInputSchema: z.ZodObject<{
|
|
326
|
+
areaCode: z.ZodString;
|
|
327
|
+
}, "strip", z.ZodTypeAny, {
|
|
328
|
+
areaCode: string;
|
|
329
|
+
}, {
|
|
330
|
+
areaCode: string;
|
|
331
|
+
}>;
|
|
332
|
+
export declare const PhoneNumberOutputSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
333
|
+
id: z.ZodString;
|
|
334
|
+
createdAt: z.ZodString;
|
|
335
|
+
updatedAt: z.ZodString;
|
|
336
|
+
}, {
|
|
337
|
+
phoneNumber: z.ZodString;
|
|
338
|
+
status: z.ZodString;
|
|
339
|
+
capabilities: z.ZodOptional<z.ZodObject<{
|
|
340
|
+
sms: z.ZodOptional<z.ZodBoolean>;
|
|
341
|
+
voice: z.ZodOptional<z.ZodBoolean>;
|
|
342
|
+
}, "strip", z.ZodTypeAny, {
|
|
343
|
+
voice?: boolean | undefined;
|
|
344
|
+
sms?: boolean | undefined;
|
|
345
|
+
}, {
|
|
346
|
+
voice?: boolean | undefined;
|
|
347
|
+
sms?: boolean | undefined;
|
|
348
|
+
}>>;
|
|
349
|
+
}>, "strip", z.ZodTypeAny, {
|
|
350
|
+
status: string;
|
|
351
|
+
id: string;
|
|
352
|
+
createdAt: string;
|
|
353
|
+
updatedAt: string;
|
|
354
|
+
phoneNumber: string;
|
|
355
|
+
capabilities?: {
|
|
356
|
+
voice?: boolean | undefined;
|
|
357
|
+
sms?: boolean | undefined;
|
|
358
|
+
} | undefined;
|
|
359
|
+
}, {
|
|
360
|
+
status: string;
|
|
361
|
+
id: string;
|
|
362
|
+
createdAt: string;
|
|
363
|
+
updatedAt: string;
|
|
364
|
+
phoneNumber: string;
|
|
365
|
+
capabilities?: {
|
|
366
|
+
voice?: boolean | undefined;
|
|
367
|
+
sms?: boolean | undefined;
|
|
368
|
+
} | undefined;
|
|
369
|
+
}>;
|
|
370
|
+
export declare const GetPhoneNumberInputSchema: z.ZodObject<{
|
|
371
|
+
phoneNumberId: z.ZodString;
|
|
372
|
+
}, "strip", z.ZodTypeAny, {
|
|
373
|
+
phoneNumberId: string;
|
|
374
|
+
}, {
|
|
375
|
+
phoneNumberId: string;
|
|
376
|
+
}>;
|
|
377
|
+
export {};
|
|
378
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;AAEX,eAAO,MAAM,YAAY;;;CAGf,CAAC;AAEX,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAC3B,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AACrD,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAC/E,MAAM,MAAM,kBAAkB,GAC5B,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AACzD,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAqC/E,eAAO,MAAM,WAAW;;;CAGvB,CAAC;AAEF,QAAA,MAAM,mBAAmB,wLAiBvB,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEpE,eAAO,MAAM,aAAa;cACF,iBAAiB;;CAExC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;CAG/B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;CAMrB,CAAC;AAIX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAIH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDrC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAehC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;EAElC,CAAC;AAIH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;EAmB1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW3B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;EAE7B,CAAC;AAIH,eAAO,MAAM,sBAAsB;;;;;;EAEjC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASlC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;EAEpC,CAAC"}
|
package/dist/schemas/index.js
CHANGED
|
@@ -179,6 +179,10 @@ export const CallInputSchema = z.object({
|
|
|
179
179
|
})
|
|
180
180
|
.optional()
|
|
181
181
|
.describe('Customer information'),
|
|
182
|
+
scheduledAt: z
|
|
183
|
+
.string()
|
|
184
|
+
.optional()
|
|
185
|
+
.describe('ISO datetime string for when the call should be scheduled (e.g. "2025-03-25T22:39:27.771Z")'),
|
|
182
186
|
});
|
|
183
187
|
export const CallOutputSchema = BaseResponseSchema.extend({
|
|
184
188
|
status: z.string(),
|
|
@@ -190,6 +194,7 @@ export const CallOutputSchema = BaseResponseSchema.extend({
|
|
|
190
194
|
phoneNumber: z.string(),
|
|
191
195
|
})
|
|
192
196
|
.optional(),
|
|
197
|
+
scheduledAt: z.string().optional(),
|
|
193
198
|
});
|
|
194
199
|
export const GetCallInputSchema = z.object({
|
|
195
200
|
callId: z.string().describe('ID of the call to get'),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant.d.ts","sourceRoot":"","sources":["../../src/tools/assistant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAQ,MAAM,qBAAqB,CAAC;AAWvD,eAAO,MAAM,sBAAsB,GACjC,QAAQ,SAAS,EACjB,YAAY,UAAU,SA6CvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../src/tools/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAQ,MAAM,qBAAqB,CAAC;AASvD,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,SAAS,EACjB,YAAY,UAAU,SAgCvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMjD,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,EAAE,YAAY,UAAU,SAIzE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone-number.d.ts","sourceRoot":"","sources":["../../src/tools/phone-number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMjD,eAAO,MAAM,wBAAwB,GACnC,QAAQ,SAAS,EACjB,YAAY,UAAU,SAsBvB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export type ToolResponse = {
|
|
3
|
+
content: Array<{
|
|
4
|
+
type: 'text';
|
|
5
|
+
text: string;
|
|
6
|
+
}>;
|
|
7
|
+
};
|
|
8
|
+
export declare function createSuccessResponse(data: any): ToolResponse;
|
|
9
|
+
export declare function createErrorResponse(error: any): ToolResponse;
|
|
10
|
+
export declare function createToolHandler<T>(handler: (params: T) => Promise<any>): (params: T) => Promise<ToolResponse>;
|
|
11
|
+
export declare function createParamsSchema<T>(schema: z.ZodType<T>): any;
|
|
12
|
+
export declare function createIdParamSchema(paramName: string, description: string): any;
|
|
13
|
+
export declare const withErrorHandling: <T>(handler: () => Promise<T>) => Promise<ToolResponse>;
|
|
14
|
+
export declare const filterResponseWithSchema: <T>(data: any, schema: z.ZodType<T>) => T;
|
|
15
|
+
export declare const withSchemaFiltering: <T>(handler: () => Promise<any>, schema: z.ZodType<T>) => Promise<ToolResponse>;
|
|
16
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tools/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,GAAG,YAAY,CAS7D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,YAAY,CAU5D;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,GACnC,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAStC;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAO/D;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,GAAG,CAOL;AAED,eAAO,MAAM,iBAAiB,GAAI,CAAC,EACjC,SAAS,MAAM,OAAO,CAAC,CAAC,CAAC,KACxB,OAAO,CAAC,YAAY,CAItB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,CAAC,EACxC,MAAM,GAAG,EACT,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KACnB,CAKF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,CAAC,EACnC,SAAS,MAAM,OAAO,CAAC,GAAG,CAAC,EAC3B,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KACnB,OAAO,CAAC,YAAY,CAOtB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Vapi } from '@vapi-ai/server-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { CreateAssistantInputSchema, CallInputSchema, AssistantOutputSchema, CallOutputSchema, PhoneNumberOutputSchema } from '../schemas/index.js';
|
|
4
|
+
export declare function transformAssistantInput(input: z.infer<typeof CreateAssistantInputSchema>): Vapi.CreateAssistantDto;
|
|
5
|
+
export declare function transformAssistantOutput(assistant: Vapi.Assistant): z.infer<typeof AssistantOutputSchema>;
|
|
6
|
+
export declare function transformCallInput(input: z.infer<typeof CallInputSchema>): Vapi.CreateCallDto;
|
|
7
|
+
export declare function transformCallOutput(call: Vapi.Call): z.infer<typeof CallOutputSchema>;
|
|
8
|
+
export declare function transformPhoneNumberOutput(phoneNumber: any): z.infer<typeof PhoneNumberOutputSchema>;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transformers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAI7B,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,GAChD,IAAI,CAAC,kBAAkB,CAuCzB;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,IAAI,CAAC,SAAS,GACxB,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAoBvC;AA2BD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,GACrC,IAAI,CAAC,aAAa,CAmBpB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,CAAC,IAAI,GACd,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAgBlC;AAID,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,GAAG,GACf,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAQzC"}
|
|
@@ -83,6 +83,13 @@ export function transformCallInput(input) {
|
|
|
83
83
|
},
|
|
84
84
|
}
|
|
85
85
|
: {}),
|
|
86
|
+
...(input.scheduledAt
|
|
87
|
+
? {
|
|
88
|
+
schedulePlan: {
|
|
89
|
+
earliestAt: input.scheduledAt,
|
|
90
|
+
},
|
|
91
|
+
}
|
|
92
|
+
: {}),
|
|
86
93
|
};
|
|
87
94
|
}
|
|
88
95
|
export function transformCallOutput(call) {
|
|
@@ -99,6 +106,7 @@ export function transformCallOutput(call) {
|
|
|
99
106
|
phoneNumber: call.customer.number || '',
|
|
100
107
|
}
|
|
101
108
|
: undefined,
|
|
109
|
+
scheduledAt: call.schedulePlan?.earliestAt,
|
|
102
110
|
};
|
|
103
111
|
}
|
|
104
112
|
// ===== Phone Number Transformers =====
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/utils/response.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CA6BpD"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vapi-ai/mcp-server",
|
|
3
3
|
"description": "Vapi MCP Server",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.4",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
6
7
|
"type": "module",
|
|
7
8
|
"author": {
|
|
8
9
|
"name": "Vapi AI",
|
|
@@ -15,13 +16,20 @@
|
|
|
15
16
|
}
|
|
16
17
|
],
|
|
17
18
|
"homepage": "https://github.com/VapiAI/mcp-server#readme",
|
|
19
|
+
"repository": "https://github.com/VapiAI/mcp-server",
|
|
18
20
|
"bugs": {
|
|
19
21
|
"url": "https://github.com/VapiAI/mcp-server/issues"
|
|
20
22
|
},
|
|
21
|
-
"keywords": [
|
|
22
|
-
|
|
23
|
+
"keywords": [
|
|
24
|
+
"vapi",
|
|
25
|
+
"mcp",
|
|
26
|
+
"model-context-protocol",
|
|
27
|
+
"ai",
|
|
28
|
+
"claude",
|
|
29
|
+
"voice-api",
|
|
30
|
+
"tool-calling"
|
|
31
|
+
],
|
|
23
32
|
"bin": {
|
|
24
|
-
"vapi-mcp-server": "dist/index.js",
|
|
25
33
|
"@vapi-ai/mcp-server": "dist/index.js"
|
|
26
34
|
},
|
|
27
35
|
"scripts": {
|
|
@@ -36,7 +44,9 @@
|
|
|
36
44
|
"test:e2e": "NODE_OPTIONS=--experimental-vm-modules jest src/tests/mcp-server-e2e.test.ts"
|
|
37
45
|
},
|
|
38
46
|
"files": [
|
|
39
|
-
"dist"
|
|
47
|
+
"dist",
|
|
48
|
+
"dist/**/*.d.ts",
|
|
49
|
+
"dist/**/*.d.ts.map"
|
|
40
50
|
],
|
|
41
51
|
"dependencies": {
|
|
42
52
|
"@modelcontextprotocol/sdk": "^1.9.0",
|