@meetbot/mcp 1.1.0 → 1.2.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/README.md +30 -2
- package/dist/__tests__/meetbot-client.test.js +12 -14
- package/dist/__tests__/meetbot-client.test.js.map +1 -1
- package/dist/__tests__/types.test.js +11 -13
- package/dist/__tests__/types.test.js.map +1 -1
- package/dist/cli-http.js +12 -24
- package/dist/cli-http.js.map +1 -1
- package/dist/cli-streamable.d.ts +3 -0
- package/dist/cli-streamable.d.ts.map +1 -0
- package/dist/cli-streamable.js +36 -0
- package/dist/cli-streamable.js.map +1 -0
- package/dist/cli.js +2 -4
- package/dist/cli.js.map +1 -1
- package/dist/in-memory-event-store.d.ts +14 -0
- package/dist/in-memory-event-store.d.ts.map +1 -0
- package/dist/in-memory-event-store.js +33 -0
- package/dist/in-memory-event-store.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -21
- package/dist/index.js.map +1 -1
- package/dist/mcp-server-streamable.d.ts +16 -0
- package/dist/mcp-server-streamable.d.ts.map +1 -0
- package/dist/mcp-server-streamable.js +347 -0
- package/dist/mcp-server-streamable.js.map +1 -0
- package/dist/mcp-server.js +11 -15
- package/dist/mcp-server.js.map +1 -1
- package/dist/meetbot-client.d.ts +1 -1
- package/dist/meetbot-client.d.ts.map +1 -1
- package/dist/meetbot-client.js +9 -16
- package/dist/meetbot-client.js.map +1 -1
- package/dist/schemas.js +50 -53
- package/dist/schemas.js.map +1 -1
- package/dist/types.js +1 -2
- package/dist/types.js.map +1 -1
- package/package.json +12 -7
- package/dist/mcp-server-http.d.ts +0 -26
- package/dist/mcp-server-http.d.ts.map +0 -1
- package/dist/mcp-server-http.js +0 -350
- package/dist/mcp-server-http.js.map +0 -1
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
5
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
6
|
+
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { MeetbotClient } from './meetbot-client.js';
|
|
8
|
+
import { InMemoryEventStore } from './in-memory-event-store.js';
|
|
9
|
+
/**
|
|
10
|
+
* Streamable HTTP MCP Server implementation
|
|
11
|
+
*/
|
|
12
|
+
export class MeetbotMCPStreamable {
|
|
13
|
+
server;
|
|
14
|
+
transports = new Map();
|
|
15
|
+
clients = new Map();
|
|
16
|
+
constructor() {
|
|
17
|
+
this.server = new McpServer({
|
|
18
|
+
name: 'meetbot-mcp',
|
|
19
|
+
version: '1.1.1',
|
|
20
|
+
description: 'Meet.bot MCP Server for scheduling and booking',
|
|
21
|
+
});
|
|
22
|
+
this.setupToolHandlers();
|
|
23
|
+
}
|
|
24
|
+
setupToolHandlers() {
|
|
25
|
+
// Configure Meet.bot authentication tool
|
|
26
|
+
this.server.registerTool('configure_meetbot', {
|
|
27
|
+
title: 'Configure Meet.bot Authentication',
|
|
28
|
+
description: 'Configure Meet.bot API authentication (required before using other tools)',
|
|
29
|
+
inputSchema: {
|
|
30
|
+
authToken: z.string().describe('Your Meet.bot API token'),
|
|
31
|
+
},
|
|
32
|
+
}, async ({ authToken }, extra) => {
|
|
33
|
+
console.log('🔧 Configure Meetbot called for session:', extra.sessionId);
|
|
34
|
+
console.log('🔧 Auth token provided:', authToken ? 'YES' : 'NO');
|
|
35
|
+
if (!extra.sessionId) {
|
|
36
|
+
throw new Error('Session ID is required');
|
|
37
|
+
}
|
|
38
|
+
if (!authToken) {
|
|
39
|
+
throw new Error('Auth token is required');
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const client = new MeetbotClient({ authToken });
|
|
43
|
+
this.clients.set(extra.sessionId, client);
|
|
44
|
+
console.log('🔧 Client configured successfully for session:', extra.sessionId);
|
|
45
|
+
// Test the connection
|
|
46
|
+
const isHealthy = await client.healthCheck();
|
|
47
|
+
return {
|
|
48
|
+
content: [
|
|
49
|
+
{
|
|
50
|
+
type: 'text',
|
|
51
|
+
text: isHealthy
|
|
52
|
+
? '✅ Meet.bot authentication configured successfully! You can now use all Meet.bot tools.'
|
|
53
|
+
: '⚠️ Meet.bot authentication configured, but API connection test failed. Please check your token.',
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.log('🔧 Configuration failed:', error);
|
|
60
|
+
throw new Error(`Failed to configure Meet.bot client: ${error instanceof Error ? error.message : String(error)}`);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
// Get scheduling pages tool
|
|
64
|
+
this.server.registerTool('get_scheduling_pages', {
|
|
65
|
+
title: 'Get Scheduling Pages',
|
|
66
|
+
description: 'Get all scheduling pages for the authenticated user',
|
|
67
|
+
inputSchema: {},
|
|
68
|
+
}, async (_, extra) => {
|
|
69
|
+
if (!extra.sessionId) {
|
|
70
|
+
throw new Error('Session ID is required');
|
|
71
|
+
}
|
|
72
|
+
if (!extra.sessionId) {
|
|
73
|
+
throw new Error('Session ID is required');
|
|
74
|
+
}
|
|
75
|
+
const client = this.clients.get(extra.sessionId);
|
|
76
|
+
if (!client) {
|
|
77
|
+
throw new Error('Meet.bot client not configured. Please use configure_meetbot first.');
|
|
78
|
+
}
|
|
79
|
+
const pages = await client.getPages();
|
|
80
|
+
return {
|
|
81
|
+
content: [
|
|
82
|
+
{
|
|
83
|
+
type: 'text',
|
|
84
|
+
text: `Found ${pages.pages.length} scheduling pages for ${pages.email}:\n\n${pages.pages
|
|
85
|
+
.map((page) => `• ${page.title} (${page.duration} min) - ${page.url}`)
|
|
86
|
+
.join('\n')}`,
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
// Get page info tool
|
|
92
|
+
this.server.registerTool('get_page_info', {
|
|
93
|
+
title: 'Get Page Information',
|
|
94
|
+
description: 'Get information about a specific scheduling page',
|
|
95
|
+
inputSchema: {
|
|
96
|
+
page: z.string().describe('The URL of the scheduling page'),
|
|
97
|
+
},
|
|
98
|
+
}, async ({ page }, extra) => {
|
|
99
|
+
if (!extra.sessionId) {
|
|
100
|
+
throw new Error('Session ID is required');
|
|
101
|
+
}
|
|
102
|
+
if (!extra.sessionId) {
|
|
103
|
+
throw new Error('Session ID is required');
|
|
104
|
+
}
|
|
105
|
+
const client = this.clients.get(extra.sessionId);
|
|
106
|
+
if (!client) {
|
|
107
|
+
throw new Error('Meet.bot client not configured. Please use configure_meetbot first.');
|
|
108
|
+
}
|
|
109
|
+
if (!page) {
|
|
110
|
+
throw new Error('Page URL is required');
|
|
111
|
+
}
|
|
112
|
+
const pageInfo = await client.getPageInfo({ page });
|
|
113
|
+
return {
|
|
114
|
+
content: [
|
|
115
|
+
{
|
|
116
|
+
type: 'text',
|
|
117
|
+
text: `Page Information:\n\nTitle: ${pageInfo.title}\nDuration: ${pageInfo.duration} minutes\nOwner: ${pageInfo.owner_name}\nMax days ahead: ${pageInfo.max_days_into_the_future}\nURL: ${pageInfo.url}`,
|
|
118
|
+
},
|
|
119
|
+
],
|
|
120
|
+
};
|
|
121
|
+
});
|
|
122
|
+
// Get available slots tool
|
|
123
|
+
this.server.registerTool('get_available_slots', {
|
|
124
|
+
title: 'Get Available Slots',
|
|
125
|
+
description: 'Get available booking slots for a scheduling page',
|
|
126
|
+
inputSchema: {
|
|
127
|
+
page: z.string().describe('The URL of the scheduling page'),
|
|
128
|
+
count: z.number().optional().describe('Maximum number of slots to return'),
|
|
129
|
+
start: z.string().optional().describe('Start date in YYYY-MM-DD format'),
|
|
130
|
+
end: z.string().optional().describe('End date in YYYY-MM-DD format'),
|
|
131
|
+
timezone: z.string().optional().describe('Timezone in IANA format (e.g., America/New_York)'),
|
|
132
|
+
booking_link: z.boolean().optional().describe('Include shareable booking links'),
|
|
133
|
+
},
|
|
134
|
+
}, async ({ page, ...args }, extra) => {
|
|
135
|
+
if (!extra.sessionId) {
|
|
136
|
+
throw new Error('Session ID is required');
|
|
137
|
+
}
|
|
138
|
+
const client = this.clients.get(extra.sessionId);
|
|
139
|
+
if (!client) {
|
|
140
|
+
throw new Error('Meet.bot client not configured. Please use configure_meetbot first.');
|
|
141
|
+
}
|
|
142
|
+
if (!page) {
|
|
143
|
+
throw new Error('Page URL is required');
|
|
144
|
+
}
|
|
145
|
+
const slots = await client.getSlots({ page, ...args });
|
|
146
|
+
return {
|
|
147
|
+
content: [
|
|
148
|
+
{
|
|
149
|
+
type: 'text',
|
|
150
|
+
text: `Found ${slots.count} available slots (${slots.duration} min each):\n\n${slots.slots
|
|
151
|
+
.map((slot) => {
|
|
152
|
+
const date = new Date(slot.start).toLocaleString();
|
|
153
|
+
const urlInfo = slot.url ? `\n Booking link: ${slot.url}` : '';
|
|
154
|
+
return `• ${date}${urlInfo}`;
|
|
155
|
+
})
|
|
156
|
+
.join('\n\n')}`,
|
|
157
|
+
},
|
|
158
|
+
],
|
|
159
|
+
};
|
|
160
|
+
});
|
|
161
|
+
// Book meeting tool
|
|
162
|
+
this.server.registerTool('book_meeting', {
|
|
163
|
+
title: 'Book Meeting',
|
|
164
|
+
description: 'Book a new meeting slot',
|
|
165
|
+
inputSchema: {
|
|
166
|
+
page: z.string().describe('The URL of the scheduling page'),
|
|
167
|
+
guest_email: z.string().describe('Email address of the guest'),
|
|
168
|
+
guest_name: z.string().describe('Name of the guest'),
|
|
169
|
+
notes: z.string().optional().describe('Additional notes for the meeting'),
|
|
170
|
+
start: z.string().describe('Start time in ISO 8601 format'),
|
|
171
|
+
},
|
|
172
|
+
}, async ({ page, guest_email, guest_name, notes, start }, extra) => {
|
|
173
|
+
if (!extra.sessionId) {
|
|
174
|
+
throw new Error('Session ID is required');
|
|
175
|
+
}
|
|
176
|
+
const client = this.clients.get(extra.sessionId);
|
|
177
|
+
if (!client) {
|
|
178
|
+
throw new Error('Meet.bot client not configured. Please use configure_meetbot first.');
|
|
179
|
+
}
|
|
180
|
+
if (!page || !guest_email || !guest_name || !start) {
|
|
181
|
+
throw new Error('Required parameters missing: page, guest_email, guest_name, start');
|
|
182
|
+
}
|
|
183
|
+
const booking = await client.bookSlot({ page, guest_email, guest_name, notes, start });
|
|
184
|
+
return {
|
|
185
|
+
content: [
|
|
186
|
+
{
|
|
187
|
+
type: 'text',
|
|
188
|
+
text: `Meeting booked successfully!\n\nGuest: ${booking.guest_name} (${booking.guest_email})\nStart: ${new Date(booking.start).toLocaleString()}\nCalendar ID: ${booking.ical_uid}\nPage: ${booking.page}`,
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
};
|
|
192
|
+
});
|
|
193
|
+
// Health check tool
|
|
194
|
+
this.server.registerTool('health_check', {
|
|
195
|
+
title: 'Health Check',
|
|
196
|
+
description: 'Check if the Meet.bot API client is healthy',
|
|
197
|
+
inputSchema: {},
|
|
198
|
+
}, async (_, extra) => {
|
|
199
|
+
if (!extra.sessionId) {
|
|
200
|
+
throw new Error('Session ID is required');
|
|
201
|
+
}
|
|
202
|
+
const client = this.clients.get(extra.sessionId);
|
|
203
|
+
if (!client) {
|
|
204
|
+
throw new Error('Meet.bot client not configured. Please use configure_meetbot first.');
|
|
205
|
+
}
|
|
206
|
+
const isHealthy = await client.healthCheck();
|
|
207
|
+
return {
|
|
208
|
+
content: [
|
|
209
|
+
{
|
|
210
|
+
type: 'text',
|
|
211
|
+
text: isHealthy
|
|
212
|
+
? '✅ Meet.bot API client is healthy and can connect to the API.'
|
|
213
|
+
: '❌ Meet.bot API client cannot connect to the API. Please check your configuration.',
|
|
214
|
+
},
|
|
215
|
+
],
|
|
216
|
+
};
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Create Express app with MCP endpoints
|
|
221
|
+
*/
|
|
222
|
+
createApp() {
|
|
223
|
+
const app = express();
|
|
224
|
+
app.use(express.json());
|
|
225
|
+
// CORS configuration
|
|
226
|
+
app.use((req, res, next) => {
|
|
227
|
+
res.header('Access-Control-Allow-Origin', '*');
|
|
228
|
+
res.header('Access-Control-Allow-Methods', 'GET, POST, DELETE, OPTIONS');
|
|
229
|
+
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Mcp-Session-Id, Last-Event-ID');
|
|
230
|
+
res.header('Access-Control-Expose-Headers', 'Mcp-Session-Id');
|
|
231
|
+
if (req.method === 'OPTIONS') {
|
|
232
|
+
res.status(200).end();
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
next();
|
|
236
|
+
});
|
|
237
|
+
// MCP POST endpoint (naked path for dedicated MCP subdomain)
|
|
238
|
+
app.post('/', async (req, res) => {
|
|
239
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
240
|
+
console.log('🔍 MCP POST request for session:', sessionId);
|
|
241
|
+
console.log('🔍 Request body:', req.body);
|
|
242
|
+
try {
|
|
243
|
+
let transport;
|
|
244
|
+
if (sessionId && this.transports.has(sessionId)) {
|
|
245
|
+
// Reuse existing transport
|
|
246
|
+
transport = this.transports.get(sessionId);
|
|
247
|
+
}
|
|
248
|
+
else if (!sessionId && isInitializeRequest(req.body)) {
|
|
249
|
+
// New initialization request
|
|
250
|
+
const eventStore = new InMemoryEventStore();
|
|
251
|
+
transport = new StreamableHTTPServerTransport({
|
|
252
|
+
sessionIdGenerator: () => randomUUID(),
|
|
253
|
+
eventStore, // Enable resumability
|
|
254
|
+
onsessioninitialized: (sessionId) => {
|
|
255
|
+
console.log(`🔍 Session initialized with ID: ${sessionId}`);
|
|
256
|
+
this.transports.set(sessionId, transport);
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
// Set up onclose handler to clean up transport when closed
|
|
260
|
+
transport.onclose = () => {
|
|
261
|
+
const sid = transport.sessionId;
|
|
262
|
+
if (sid && this.transports.has(sid)) {
|
|
263
|
+
console.log(`🔍 Transport closed for session ${sid}, removing from transports map`);
|
|
264
|
+
this.transports.delete(sid);
|
|
265
|
+
this.clients.delete(sid);
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
// Connect the transport to the MCP server BEFORE handling the request
|
|
269
|
+
await this.server.connect(transport);
|
|
270
|
+
await transport.handleRequest(req, res, req.body);
|
|
271
|
+
return; // Already handled
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
// Invalid request - no session ID or not initialization request
|
|
275
|
+
res.status(400).json({
|
|
276
|
+
jsonrpc: '2.0',
|
|
277
|
+
error: {
|
|
278
|
+
code: -32000,
|
|
279
|
+
message: 'Bad Request: No valid session ID provided'
|
|
280
|
+
},
|
|
281
|
+
id: null
|
|
282
|
+
});
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
// Handle the request with existing transport
|
|
286
|
+
await transport.handleRequest(req, res, req.body);
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
console.error('🔍 Error handling MCP request:', error);
|
|
290
|
+
if (!res.headersSent) {
|
|
291
|
+
res.status(500).json({
|
|
292
|
+
jsonrpc: '2.0',
|
|
293
|
+
error: {
|
|
294
|
+
code: -32603,
|
|
295
|
+
message: 'Internal server error'
|
|
296
|
+
},
|
|
297
|
+
id: null
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
// MCP GET endpoint for SSE streams (naked path for dedicated MCP subdomain)
|
|
303
|
+
app.get('/', async (req, res) => {
|
|
304
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
305
|
+
console.log('🔍 MCP GET request for session:', sessionId);
|
|
306
|
+
if (!sessionId || !this.transports.has(sessionId)) {
|
|
307
|
+
res.status(400).send('Invalid or missing session ID');
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
// Check for Last-Event-ID header for resumability
|
|
311
|
+
const lastEventId = req.headers['last-event-id'];
|
|
312
|
+
if (lastEventId) {
|
|
313
|
+
console.log(`🔍 Client reconnecting with Last-Event-ID: ${lastEventId}`);
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
console.log(`🔍 Establishing new SSE stream for session ${sessionId}`);
|
|
317
|
+
}
|
|
318
|
+
const transport = this.transports.get(sessionId);
|
|
319
|
+
await transport.handleRequest(req, res);
|
|
320
|
+
});
|
|
321
|
+
// MCP DELETE endpoint for session termination (naked path for dedicated MCP subdomain)
|
|
322
|
+
app.delete('/', async (req, res) => {
|
|
323
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
324
|
+
console.log(`🔍 Received session termination request for session ${sessionId}`);
|
|
325
|
+
if (!sessionId || !this.transports.has(sessionId)) {
|
|
326
|
+
res.status(400).send('Invalid or missing session ID');
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
try {
|
|
330
|
+
const transport = this.transports.get(sessionId);
|
|
331
|
+
await transport.handleRequest(req, res);
|
|
332
|
+
}
|
|
333
|
+
catch (error) {
|
|
334
|
+
console.error('🔍 Error handling session termination:', error);
|
|
335
|
+
if (!res.headersSent) {
|
|
336
|
+
res.status(500).send('Error processing session termination');
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
// Health check endpoint
|
|
341
|
+
app.get('/health', (_req, res) => {
|
|
342
|
+
res.json({ status: 'ok', service: 'meetbot-mcp' });
|
|
343
|
+
});
|
|
344
|
+
return app;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=mcp-server-streamable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server-streamable.js","sourceRoot":"","sources":["../src/mcp-server-streamable.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-server.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
6
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
7
|
-
const meetbot_client_js_1 = require("./meetbot-client.js");
|
|
1
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
+
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
+
import { MeetbotClient } from './meetbot-client.js';
|
|
8
5
|
/**
|
|
9
6
|
* MCP Server for Meet.bot Booking Page API
|
|
10
7
|
*/
|
|
11
|
-
class MeetbotMCPServer {
|
|
8
|
+
export class MeetbotMCPServer {
|
|
12
9
|
server;
|
|
13
10
|
client = null;
|
|
14
11
|
constructor() {
|
|
15
|
-
this.server = new
|
|
12
|
+
this.server = new Server({
|
|
16
13
|
name: 'meetbot-mcp',
|
|
17
14
|
version: '1.0.0',
|
|
18
15
|
});
|
|
@@ -20,7 +17,7 @@ class MeetbotMCPServer {
|
|
|
20
17
|
}
|
|
21
18
|
setupToolHandlers() {
|
|
22
19
|
// List available tools
|
|
23
|
-
this.server.setRequestHandler(
|
|
20
|
+
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
24
21
|
return {
|
|
25
22
|
tools: [
|
|
26
23
|
{
|
|
@@ -135,7 +132,7 @@ class MeetbotMCPServer {
|
|
|
135
132
|
};
|
|
136
133
|
});
|
|
137
134
|
// Handle tool calls
|
|
138
|
-
this.server.setRequestHandler(
|
|
135
|
+
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
139
136
|
const { name, arguments: args } = request.params;
|
|
140
137
|
try {
|
|
141
138
|
switch (name) {
|
|
@@ -170,7 +167,7 @@ class MeetbotMCPServer {
|
|
|
170
167
|
}
|
|
171
168
|
async handleConfigureMeetbot(args) {
|
|
172
169
|
if (!this.client) {
|
|
173
|
-
this.client = new
|
|
170
|
+
this.client = new MeetbotClient(args);
|
|
174
171
|
return {
|
|
175
172
|
content: [
|
|
176
173
|
{
|
|
@@ -182,7 +179,7 @@ class MeetbotMCPServer {
|
|
|
182
179
|
}
|
|
183
180
|
else {
|
|
184
181
|
// Reconfigure existing client
|
|
185
|
-
this.client = new
|
|
182
|
+
this.client = new MeetbotClient(args);
|
|
186
183
|
return {
|
|
187
184
|
content: [
|
|
188
185
|
{
|
|
@@ -277,10 +274,9 @@ class MeetbotMCPServer {
|
|
|
277
274
|
* Start the MCP server
|
|
278
275
|
*/
|
|
279
276
|
async run() {
|
|
280
|
-
const transport = new
|
|
277
|
+
const transport = new StdioServerTransport();
|
|
281
278
|
await this.server.connect(transport);
|
|
282
279
|
console.error('Meet.bot MCP server started');
|
|
283
280
|
}
|
|
284
281
|
}
|
|
285
|
-
exports.MeetbotMCPServer = MeetbotMCPServer;
|
|
286
282
|
//# sourceMappingURL=mcp-server.js.map
|
package/dist/mcp-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
package/dist/meetbot-client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BookSlot, BookSlotRequest, GetSlotsParams, GetInfoParams, PageInfo, Pages, Slots, MeetbotConfig } from './types';
|
|
1
|
+
import { BookSlot, BookSlotRequest, GetSlotsParams, GetInfoParams, PageInfo, Pages, Slots, MeetbotConfig } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Meet.bot API Client for interacting with the booking page API
|
|
4
4
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meetbot-client.d.ts","sourceRoot":"","sources":["../src/meetbot-client.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,eAAe,EACf,cAAc,EACd,aAAa,EACb,QAAQ,EACR,KAAK,EACL,KAAK,EACL,aAAa,EACd,MAAM,
|
|
1
|
+
{"version":3,"file":"meetbot-client.d.ts","sourceRoot":"","sources":["../src/meetbot-client.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,eAAe,EACf,cAAc,EACd,aAAa,EACb,QAAQ,EACR,KAAK,EACL,KAAK,EACL,aAAa,EACd,MAAM,YAAY,CAAC;AAQpB;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,MAAM,EAAE,aAAa;IAmCjC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC;IAKhC;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQ3D;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAQtD;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAM3D;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAuBrC;;OAEG;IACH,SAAS,IAAI,aAAa;CAG3B"}
|
package/dist/meetbot-client.js
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.MeetbotClient = void 0;
|
|
7
|
-
const axios_1 = __importDefault(require("axios"));
|
|
8
|
-
const schemas_1 = require("./schemas");
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { BookSlotRequestSchema, GetSlotsParamsSchema, GetInfoParamsSchema, MeetbotConfigSchema, } from './schemas.js';
|
|
9
3
|
/**
|
|
10
4
|
* Meet.bot API Client for interacting with the booking page API
|
|
11
5
|
*/
|
|
12
|
-
class MeetbotClient {
|
|
6
|
+
export class MeetbotClient {
|
|
13
7
|
client;
|
|
14
8
|
config;
|
|
15
9
|
constructor(config) {
|
|
16
10
|
// Validate configuration
|
|
17
|
-
const validatedConfig =
|
|
11
|
+
const validatedConfig = MeetbotConfigSchema.parse(config);
|
|
18
12
|
this.config = validatedConfig;
|
|
19
13
|
// Create axios instance with hardcoded base URL
|
|
20
|
-
this.client =
|
|
14
|
+
this.client = axios.create({
|
|
21
15
|
baseURL: 'https://meet.bot',
|
|
22
16
|
timeout: 30000,
|
|
23
17
|
headers: {
|
|
@@ -51,7 +45,7 @@ class MeetbotClient {
|
|
|
51
45
|
* Get information about a scheduling page
|
|
52
46
|
*/
|
|
53
47
|
async getPageInfo(params) {
|
|
54
|
-
const validatedParams =
|
|
48
|
+
const validatedParams = GetInfoParamsSchema.parse(params);
|
|
55
49
|
const response = await this.client.get('/v1/info', {
|
|
56
50
|
params: validatedParams,
|
|
57
51
|
});
|
|
@@ -61,7 +55,7 @@ class MeetbotClient {
|
|
|
61
55
|
* Get available booking slots with optional filters
|
|
62
56
|
*/
|
|
63
57
|
async getSlots(params) {
|
|
64
|
-
const validatedParams =
|
|
58
|
+
const validatedParams = GetSlotsParamsSchema.parse(params);
|
|
65
59
|
const response = await this.client.get('/v1/slots', {
|
|
66
60
|
params: validatedParams,
|
|
67
61
|
});
|
|
@@ -71,7 +65,7 @@ class MeetbotClient {
|
|
|
71
65
|
* Book a new meeting
|
|
72
66
|
*/
|
|
73
67
|
async bookSlot(request) {
|
|
74
|
-
const validatedRequest =
|
|
68
|
+
const validatedRequest = BookSlotRequestSchema.parse(request);
|
|
75
69
|
const response = await this.client.post('/v1/book', validatedRequest);
|
|
76
70
|
return response.data;
|
|
77
71
|
}
|
|
@@ -89,7 +83,7 @@ class MeetbotClient {
|
|
|
89
83
|
catch (error) {
|
|
90
84
|
// If we get a 401/403, it means the API is reachable but auth failed
|
|
91
85
|
// If we get a network error, the API is not reachable
|
|
92
|
-
if (
|
|
86
|
+
if (axios.isAxiosError(error)) {
|
|
93
87
|
const status = error.response?.status;
|
|
94
88
|
if (status === 401 || status === 403) {
|
|
95
89
|
return true; // API is reachable, just auth issue
|
|
@@ -108,5 +102,4 @@ class MeetbotClient {
|
|
|
108
102
|
return { ...this.config };
|
|
109
103
|
}
|
|
110
104
|
}
|
|
111
|
-
exports.MeetbotClient = MeetbotClient;
|
|
112
105
|
//# sourceMappingURL=meetbot-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meetbot-client.js","sourceRoot":"","sources":["../src/meetbot-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meetbot-client.js","sourceRoot":"","sources":["../src/meetbot-client.ts"],"names":[],"mappings":"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"}
|