Are you the author? Sign in to claim
MCP server for Meet.bot. AI agents check real calendar availability and book meetings on Google/Microsoft calendars. Pay
A Model Context Protocol (MCP) server for the Meet.bot Booking Page API, enabling AI assistants to interact with scheduling and booking functionality.
This MCP server connects AI assistants (like Claude, ChatGPT, and others that support MCP) to your Meet.bot account, allowing them to schedule meetings on your behalf. Instead of manually copying booking links or checking your calendar, you can simply ask your AI assistant to "schedule a 30-minute meeting with John next week" and it will handle the booking through your MeetBot scheduling pages.
How it works:
This is particularly useful for busy professionals who want to automate meeting scheduling and let their AI assistant manage their calendar intelligently.
If you don't have an account, you can get one for free at https://meet.bot
npm install @meetbot/mcp
# Install the package
npm install @meetbot/mcp
# Or install globally for CLI usage
npm install -g @meetbot/mcp
Authentication is not a tool—it is connection-based:
Authorization: Bearer <your_api_token> in the request headers when connecting. The server uses this token for all API calls in that session.MEETBOT_AUTH_TOKEN environment variable when starting the server (e.g. MEETBOT_AUTH_TOKEN=your_token npx @meetbot/mcp).There is no configure_meetbot or similar tool; the AI uses the tools below and auth is handled by the connection.
The MCP server provides the following tools:
await get_scheduling_pages();
// Returns all scheduling pages for the authenticated user
await get_page_info({
page: "https://meet.bot/user/30min"
});
// Returns detailed information about a specific scheduling page
await get_available_slots({
page: "https://meet.bot/user/30min",
count: 10,
start: "2025-01-01",
end: "2025-01-31",
timezone: "America/New_York",
booking_link: true
});
// Returns available booking slots with optional filters
await book_meeting({
page: "https://meet.bot/user/30min",
guest_email: "guest@example.com",
guest_name: "Jane Doe",
notes: "Meeting to discuss project requirements",
start: "2025-01-15T14:00:00Z"
});
// Books a new meeting slot
await health_check();
// Verifies API connectivity using the /v1/pages endpoint
Get notified the moment a meeting is booked, rescheduled, or cancelled. Meet.bot POSTs a JWT-signed (HS256) JSON payload — the same contract as the partner webhook — to your URL for each event (booking_received, booking_rescheduled, booking_cancelled).
// List your webhooks
await list_webhooks();
// Create (omit id) or update (pass id) a webhook
await set_webhook({
webhook_url: "https://your-app.example.com/meetbot-hook",
description: "CRM sync",
coverage: "all", // or "selected" with pages: [<page id>, ...]
scope: "self" // team admins can use "team" to also receive teammates' bookings
});
// Returns the webhook including the shared secret used to verify the signature.
// Delete a webhook
await delete_webhook({ id: 123 });
The MCP server can be run in two modes:
For local integration with AI assistants like Claude Desktop. Uses stdio transport for communication.
# Run locally
npx @meetbot/mcp
# Or with environment variable
MEETBOT_AUTH_TOKEN="your_token" npx @meetbot/mcp
For remote deployment with HTTP/SSE transport. This allows the MCP server to be accessed over the network.
# Build and start the HTTP server
npm run build
npm run start:http
# Or with custom port
PORT=8080 npm run start:http
# Or run directly with npx
npx meetbot-mcp-http
GET /sse - Establishes an SSE connection for MCP communicationPOST /messages?sessionId=<id> - Receives client messagesGET /health - Server health statusAll requests require a Bearer token in the Authorization header:
Authorization: Bearer <your-meetbot-api-token>
The same token is used to authenticate with the Meet.bot API.
Local Testing:
# Health check (should fail without auth)
curl http://localhost:3000/health
# Health check with authentication
curl -H "Authorization: Bearer YOUR_TOKEN" http://localhost:3000/health
# Connect to SSE endpoint
curl -N -H "Authorization: Bearer YOUR_TOKEN" http://localhost:3000/sse
# Or use the test script
./test-http-server.sh YOUR_TOKEN
Production Testing:
# Test the live deployment
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://mcp.meet.bot/health
# Expected response:
# {"status":"ok","service":"meetbot-mcp"}
The HTTP server can be deployed to various platforms:
railway up ✅ Live at https://mcp.meet.botfly launch && fly deployExample: Connecting to Production
# Your MCP client should connect to:
# https://mcp.meet.bot/sse
# With Authorization header:
# Authorization: Bearer <your-meetbot-api-token>
Example Dockerfile:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY dist ./dist
EXPOSE 3000
CMD ["node", "dist/cli-http.js"]
This MCP server can be integrated with AI assistants like Claude, ChatGPT, and others that support the Model Context Protocol.
{
"mcpServers": {
"meetbot": {
"command": "npx",
"args": ["@meetbot/mcp"],
"env": {
"MEETBOT_AUTH_TOKEN": "your_bearer_token_here"
}
}
}
}
The server exposes 8 tools for AI assistants:
get_scheduling_pages - List all scheduling pagesget_page_info - Get page detailsget_available_slots - Find available time slotsbook_meeting - Book a meetinghealth_check - Verify API connectivity using /v1/pages endpointlist_webhooks - List your outbound booking webhooksset_webhook - Create or update a webhook (booking_received / booking_rescheduled / booking_cancelled)delete_webhook - Delete a webhookAuthentication is provided by the connection (Bearer token in HTTP header for remote, or MEETBOT_AUTH_TOKEN for local stdio)—there is no separate configure tool.
The package has been thoroughly tested and validated:
✅ MCP Protocol Compliance: Full JSON-RPC 2.0 support ✅ Tool Discovery: All 5 tools properly exposed ✅ Error Handling: Graceful error responses ✅ Type Safety: Complete TypeScript support ✅ Schema Validation: Input validation with Zod ✅ Production Ready: Tested with real MCP clients
import { MeetbotClient, MeetbotMCPServer } from '@meetbot/mcp';
// Use as a direct API client
const client = new MeetbotClient({
authToken: 'your_token'
});
// Use as an MCP server
const server = new MeetbotMCPServer();
await server.run();
# Run the MCP server
npx @meetbot/mcp
# Or install globally
npm install -g @meetbot/mcp
meetbot-mcp
The core API client for direct integration:
import { MeetbotClient } from '@meetbot/mcp';
const client = new MeetbotClient({
authToken: 'your_token'
});
// Get all scheduling pages
const pages = await client.getPages();
// Get page information
const pageInfo = await client.getPageInfo({
page: 'https://meet.bot/user/30min'
});
// Get available slots
const slots = await client.getSlots({
page: 'https://meet.bot/user/30min',
count: 20
});
// Book a meeting
const booking = await client.bookSlot({
page: 'https://meet.bot/user/30min',
guest_email: 'guest@example.com',
guest_name: 'Jane Doe',
start: '2025-01-15T14:00:00Z'
});
All API responses are fully typed:
interface BookSlot {
success: boolean;
page: string;
guest_email: string;
guest_name: string;
notes?: string;
start: string;
ical_uid: string;
}
interface PageInfo {
title: string;
duration: number;
url: string;
owner_name: string;
max_days_into_the_future: number;
}
interface Slots {
count: number;
duration: number;
slots: SlotDetails[];
}
You can configure the MCP server using environment variables:
export MEETBOT_AUTH_TOKEN="your_bearer_token"
# Then run the server
meetbot-mcp
Auth is connection-based, not a tool:
Authorization: Bearer <token> in request headers when connecting to the MCP server.MEETBOT_AUTH_TOKEN when running the server (e.g. MEETBOT_AUTH_TOKEN=your_token meetbot-mcp).npm test
npm run test:watch
npm run lint
npm run lint:fix
The package includes a command-line interface for running the MCP server:
# Install globally
npm install -g @meetbot/mcp
# Run the MCP server
meetbot-mcp
# Or run directly with npx (no installation required)
npx @meetbot/mcp
You can configure the server using environment variables:
export MEETBOT_AUTH_TOKEN="your_bearer_token"
# Then run the server
meetbot-mcp
The MCP server provides detailed error messages for common issues:
MIT License - see LICENSE file for details.
npx @meetbot/mcp) declared a tools handler without advertising the tools capability, so the MCP SDK threw "Server does not support tools" and the process exited on launch. Now declares capabilities.tools; the server boots and answers initialize + tools/list (no token needed for introspection)./.well-known/mcp/server-card.json for discovery and manual metadata (tools, prompts, authentication)audience, priority), richer parameter descriptions, and prompts capability for quality scoringschedule_meeting, check_availability, book_for_guest, share_booking_link, list_my_pages, suggest_times with full prompts/list and prompts/get supportMEETBOT_BASE_URL from example configuration (base URL is hardcoded to https://meet.bot).js extensions to all relative imports/health endpoint for monitoring/v1/pages endpoint instead of a fake health endpointRun Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases
Official GitHub integration for repos, issues, PRs, and CI/CD workflows