Skip to main content
Glama
INSIDE-HAIR

Google Calendar and Meet MCP Server

by INSIDE-HAIR
README.md
# šŸš€ Google Meet MCP Server v3.0 - Production Ready

[![smithery badge](https://smithery.ai/badge/@inside-hair/google-calendar-and-meet)](https://smithery.ai/server/@inside-hair/google-calendar-and-meet)

A **production-ready enterprise** Model Context Protocol (MCP) server for comprehensive Google Meet management through Google Calendar API v3 and Google Meet API v2. Features **Docker containerization**, **Smithery deployment**, **direct token authentication**, **team security**, and enterprise-grade TypeScript architecture with 23 fully validated tools.

## šŸŽÆ **Quick Start Options**

### **šŸ”Ø Smithery (Recommended)**
- **Perfect for teams** and individual users
- **One-click deployment** with web interface
- **Automatic updates** and health monitoring
- **šŸ“– [Complete Smithery User Guide](./docs/SMITHERY_USER_GUIDE.md)**

### **🐳 Docker**
- **Production deployments** with full containerization
- **Multi-stage builds** optimized for size and security
- **Development and production** configurations
- **šŸ“– [Docker Deployment Guide](./docs/DOCKER_DEPLOYMENT.md)**

### **āš™ļø Manual Setup**
- **Full control** over installation and configuration
- **Development environments** and custom deployments
- **Direct Node.js** execution with TypeScript
- **šŸ“– [Manual Setup Guide](./docs/SETUP.md)**

## šŸš€ What's New in v3.0 - Production Ready Edition

### šŸŽÆ **NEW IN v3.0 - PRODUCTION FEATURES**

#### 🐳 **Docker Containerization**
- āœ… **Multi-stage production builds** - Optimized for size and security (<200MB)
- āœ… **Development and production** configurations with Docker Compose
- āœ… **Health checks and monitoring** - Container-native health endpoints
- āœ… **Security hardening** - Non-root user, read-only filesystem
- āœ… **Volume management** - Persistent data and credential handling

#### šŸ”Ø **Smithery Integration + Direct Token Auth**
- āœ… **Direct token authentication** - No file dependencies (CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN)
- āœ… **One-click deployment** - Web interface for easy configuration  
- āœ… **Backward compatibility** - Still supports file-based OAuth credentials
- āœ… **Team-friendly setup** - Individual credentials, shared project structure
- āœ… **Automatic health monitoring** - Real-time server status and metrics
- āœ… **Cross-platform support** - Windows, macOS, Linux compatibility
- āœ… **Configuration validation** - Smart path handling and error detection

#### šŸ›”ļø **Enhanced Security**
- āœ… **Team security policies** - Enterprise-grade credential management
- āœ… **Individual credential isolation** - No shared secrets between users
- āœ… **Compliance monitoring** - Automated security and rotation tracking
- āœ… **Audit logging** - Google Cloud Console integration
- āœ… **Incident response** - Documented procedures for security events

#### šŸ“š **Complete Documentation**
- āœ… **User guides for all deployment methods** - Smithery, Docker, Manual
- āœ… **Team onboarding procedures** - Step-by-step for corporate environments
- āœ… **Troubleshooting and diagnostics** - Common issues and automated solutions
- āœ… **Security best practices** - Individual and team security policies

### šŸ“Š **Production Quality Metrics**
- **Container Size**: <200MB production image
- **Security Score**: Non-root user, minimal attack surface
- **Documentation Coverage**: 7 comprehensive guides (2000+ lines)
- **Deployment Options**: 3 methods (Smithery, Docker, Manual)
- **Team Ready**: Multi-user, enterprise security, compliance monitoring

## šŸŽÆ Core Capabilities - Enhanced

### Clear API Separation

- šŸ“… **Google Calendar API v3** - Full calendar event management with guest permissions
- šŸŽ„ **Google Meet API v2 (GA)** - Space management, conference records, and participant tracking

### Enterprise Features

- šŸ“ **Auto-Transcription** - Enable automatic meeting transcription
- 🧠 **Smart Notes** - AI-generated meeting summaries with Gemini
- šŸ“Š **Attendance Reports** - Generate detailed attendance tracking
- šŸ›”ļø **Meeting Moderation** - Chat/presentation restrictions and controls
- šŸ‘€ **Viewer Mode** - Force participants to join as viewers by default
- šŸ“¹ **Auto-Recording** - Enable automatic recording (manual activation required)

### Advanced Space Management

- šŸ—ļø **Google Meet Spaces** - Direct space creation and configuration
- šŸ‘„ **Participant Tracking** - Access participant data and session information
- šŸ”’ **Access Controls** - OPEN, TRUSTED, or RESTRICTED access types
- āš™ļø **Artifact Configuration** - Recording, transcription, and smart notes settings

## šŸš€ **Installation & Deployment**

### **šŸ”Ø Smithery (Recommended for Teams)**

1. **Visit [Smithery.ai](https://smithery.ai/server/@INSIDE-HAIR/mcp-google-meet-and-calendar)**
2. **Click "Deploy Server"**
3. **Configure your Google credentials path**
4. **Start using in Claude Desktop**

**šŸ“– [Complete Smithery User Guide](./docs/SMITHERY_USER_GUIDE.md)** - Step-by-step for teams

### **🐳 Docker (Recommended for Production)**

```bash
# Quick start development
./scripts/docker-deploy.sh dev

# Production deployment
./scripts/docker-deploy.sh prod --backup --fresh

# View status
./scripts/docker-deploy.sh status
```

**šŸ“– [Docker Deployment Guide](./docs/DOCKER_DEPLOYMENT.md)** - Complete containerization

### **āš™ļø Manual Installation**

```bash
# Clone the repository
git clone https://github.com/INSIDE-HAIR/google-meet-mcp-server.git
cd google-meet-mcp-server

# Install dependencies
npm install

# Setup OAuth credentials
npm run setup
```

**šŸ“– [Manual Setup Guide](./docs/SETUP.md)** - Full control installation

## šŸ›”ļø **Security & Team Management**

### **šŸ” Individual Security**
- **Each user creates their own Google OAuth credentials**
- **No shared credentials or tokens between team members**
- **Secure file storage with proper permissions (chmod 600)**
- **šŸ“– [Security Guide](./docs/SECURITY.md)** - Individual security practices

### **šŸ‘„ Team Security**
- **Comprehensive team onboarding procedures**
- **Corporate Google Cloud project management**
- **Credential rotation and compliance monitoring**
- **šŸ“– [Team Security Guide](./docs/TEAM_SECURITY.md)** - Enterprise team deployment

### **šŸ”§ Troubleshooting**
- **Complete diagnostics and problem resolution**
- **Common issues and solutions**
- **Health check scripts and monitoring**
- **šŸ“– [Troubleshooting Guide](./docs/TROUBLESHOOTING.md)** - Problem resolution

## Usage

### Development Mode (TypeScript with Hot Reload)

```bash
# Start server in development mode
npm run start

# Run setup in TypeScript mode
npm run setup
```

### Production Mode (Compiled JavaScript)

```bash
# Build TypeScript to JavaScript
npm run build

# Run compiled server
npm run start:js
```

### Testing

```bash
# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Generate coverage report
npm run test:coverage

# Type checking only
npm run type-check
```

## šŸ› ļø **Available Tools (21 Total) - All Type-Safe & Validated**

### šŸ“… Google Calendar API v3 Tools (6 tools)

#### 1. `calendar_v3_list_calendars` āœ… **Validated**
List all calendars available to the user.

**Validation**: No parameters required

#### 2. `calendar_v3_list_events` āœ… **Validated**
List upcoming calendar events with filtering options.

**Validation**: Date formats, max results (1-2500), calendar ID format

#### 3. `calendar_v3_get_event` āœ… **Validated**
Get detailed information about a specific calendar event.

**Validation**: Required event_id parameter

#### 4. `calendar_v3_create_event` āœ… **Validated**
Create a new calendar event with optional Google Meet conference.

**Validation**: Required fields, ISO date format, guest permissions, duration logic

**Parameters:**
- `summary` (required): Event title
- `start_time` (required): ISO format start time
- `end_time` (required): ISO format end time
- `create_meet_conference` (optional): Add Google Meet
- `guest_can_invite_others` (optional): Guest invitation permissions
- `guest_can_modify` (optional): Guest modification permissions
- `guest_can_see_other_guests` (optional): Guest visibility permissions

#### 5. `calendar_v3_update_event` āœ… **Validated**
Update an existing calendar event.

**Validation**: Required event_id, optional update fields, time validation

#### 6. `calendar_v3_delete_event` āœ… **Validated**
Delete a calendar event.

**Validation**: Required event_id parameter

### šŸŽ„ Google Meet API v2 Tools (15 tools)

#### 7. `meet_v2_create_space` āœ… **Validated**
Create a Google Meet space with advanced configuration.

**Validation**: Access type enum, boolean flags, restriction combinations

**Parameters:**
- `access_type`: "OPEN" | "TRUSTED" | "RESTRICTED" (default: "TRUSTED")
- `enable_recording`: Enable automatic recording preparation
- `enable_transcription`: Enable automatic transcription
- `moderation_mode`: "ON" | "OFF" meeting moderation
- `chat_restriction`: Chat permissions control
- `present_restriction`: Presentation permissions control

#### 8. `meet_v2_get_space` āœ… **Validated**
Get details of a Google Meet space.

**Validation**: Space name format (`spaces/{space_id}`)

#### 9. `meet_v2_update_space` āœ… **Validated**
Update configuration of a Google Meet space.

#### 10. `meet_v2_end_active_conference` āœ… **Validated**
End the active conference in a Google Meet space.

**Validation**: Space name format validation

#### 11. `meet_v2_list_conference_records` āœ… **Validated**
List conference records for historical meetings.

**Validation**: Filter format, page size limits (1-50)

#### 12-21. **Additional Meet API Tools** āœ… **All Validated**
- `meet_v2_get_conference_record` - Get specific conference details
- `meet_v2_list_recordings` - List conference recordings  
- `meet_v2_get_recording` - Get recording details
- `meet_v2_list_transcripts` - List conference transcripts
- `meet_v2_get_transcript` - Get transcript details
- `meet_v2_list_transcript_entries` - List transcript speech segments
- `meet_v2_get_participant` - Get participant details
- `meet_v2_list_participants` - List conference participants
- `meet_v2_get_participant_session` - Get session details
- `meet_v2_list_participant_sessions` - List participant sessions

**Validation Features:**
- Resource name format validation (conferenceRecords/{id}/recordings/{id})
- Page size limits (1-1000 depending on endpoint)
- Regex validation for all Google API resource identifiers
- Smart defaults for pagination

## MCP Configuration for Claude Desktop

Add to your Claude Desktop configuration:

```json
{
  "mcpServers": {
    "google-meet": {
      "command": "npx",
      "args": ["tsx", "/absolute/path/to/google-meet-mcp-server/src/index.ts"],
      "env": {
        "G_OAUTH_CREDENTIALS": "/absolute/path/to/credentials.json"
      },
      "disabled": false
    }
  }
}
```

**Production Configuration (with compiled JS):**

```json
{
  "mcpServers": {
    "google-meet": {
      "command": "node",
      "args": ["/absolute/path/to/google-meet-mcp-server/build/index.js"],
      "env": {
        "G_OAUTH_CREDENTIALS": "/absolute/path/to/credentials.json"
      },
      "disabled": false
    }
  }
}
```

## šŸ—ļø Enterprise Architecture

### TypeScript Structure

```
google-meet-mcp-server/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts                 # Main MCP server (TypeScript)
│   ā”œā”€ā”€ GoogleMeetAPI.ts         # API wrapper (fully typed)
│   ā”œā”€ā”€ setup.ts                 # OAuth setup (typed)
│   ā”œā”€ā”€ types/                   # Type system (921+ lines)
│   │   ā”œā”€ā”€ google-apis.d.ts        # Google API types
│   │   ā”œā”€ā”€ mcp-server.d.ts         # MCP-specific types
│   │   ā”œā”€ā”€ utilities.d.ts          # Branded types & helpers
│   │   └── index.ts                # Centralized exports
│   ā”œā”€ā”€ validation/              # Zod schemas
│   │   └── meetSchemas.ts          # 6 validated tools
│   └── errors/                  # Error handling
│       └── GoogleApiErrorHandler.ts
ā”œā”€ā”€ test/                        # Test suite (101 tests)
│   ā”œā”€ā”€ setup.ts                    # Test utilities
│   ā”œā”€ā”€ GoogleMeetAPI.test.ts       # Unit tests
│   ā”œā”€ā”€ integration.test.ts         # Integration tests
│   ā”œā”€ā”€ validation.test.ts          # Validation tests
│   └── simple.test.ts             # Basic functionality
ā”œā”€ā”€ build/                       # Compiled JavaScript
ā”œā”€ā”€ package.json                 # TypeScript + testing deps
ā”œā”€ā”€ tsconfig.json               # TypeScript configuration
└── vitest.config.ts            # Testing configuration
```

### Type Safety Features

```typescript
// Branded types for enhanced safety
type EventId = Brand<string, 'EventId'>;
type SpaceName = Brand<string, 'SpaceName'>;

// Complete API interfaces
interface GoogleMeetAPI {
  createMeetSpace(config: SpaceConfigInput): Promise<MeetSpace>;
  listCalendars(): Promise<ProcessedCalendar[]>;
  createCalendarEvent(data: CreateEventInput): Promise<ProcessedEvent>;
}

// Zod validation with business logic
const CreateSpaceSchema = z.object({
  access_type: z.enum(["OPEN", "TRUSTED", "RESTRICTED"]).default("TRUSTED"),
  enable_recording: z.boolean().default(false)
}).refine((data) => {
  // Custom business logic validation
  if (data.enable_recording && data.access_type === "OPEN") {
    throw new Error("Recording cannot be enabled for OPEN access meetings");
  }
  return true;
});
```

## Error Handling - Claude Desktop Optimized

The server provides context-aware error messages designed for AI assistance:

### Google API Errors
```
šŸ” Access Denied
Problem: Your Google account doesn't have the required permissions.
Solution: 
1. Run `npm run setup` to re-authenticate
2. Make sure you granted all requested permissions  
3. For enterprise features, check you have Google Workspace Business+
```

### Enterprise Feature Errors
```
šŸ¢ Enterprise Feature Required
Problem: This Meet feature requires Google Workspace Business Standard or higher.
Options:
- Use basic calendar events with Meet links instead
- Upgrade your Google Workspace plan
Alternative: Try `calendar_v3_create_event` with `create_meet_conference: true`
```

## Requirements

### Technical Requirements
- **Node.js**: 18+ (for TypeScript support)
- **TypeScript**: 5+ (included in dependencies)
- **Google Account**: Any Google account works for basic features

### Feature Requirements
- āœ… **Basic Features**: Works with any Google account
- āœ… **Calendar Integration**: Google Calendar API enabled
- šŸ¢ **Enterprise Features**: Google Workspace Business Standard or higher
- 🧠 **Smart Notes**: Gemini Business/Enterprise license
- šŸ“¹ **Recording**: Manual activation required during meetings

## Development

### TypeScript Development

```bash
# Development with hot reload
npm run start          # tsx src/index.ts with watch
npm run setup          # tsx src/setup.ts

# Type checking
npm run type-check     # tsc --noEmit

# Testing
npm test              # vitest run
npm run test:watch    # vitest with watch mode
npm run test:coverage # coverage report
```

### Production Build

```bash
# Build TypeScript
npm run build         # tsc to build/ directory
npm run clean         # clean build directory

# Run compiled JavaScript
npm run start:js      # node build/index.js
npm run setup:js      # node build/setup.js
```

## Testing Results

```
āœ… Test Files: 5 passed (5)
āœ… Tests: 101 passed (101)  
āœ… Duration: 2.61s
āœ… TypeScript: 0 compilation errors
āœ… Type Coverage: ~90% specific types

Test Categories:
- 28 GoogleMeetAPI unit tests
- 12 Integration workflow tests  
- 35 Validation schema tests
- 16 Basic functionality tests
- 10 MCP server tests
```

## šŸ”§ **Common Issues & Quick Fixes**

### **🚨 Server Won't Start**
```bash
# Check credentials path and permissions
ls -la "/path/to/your/credentials.json"
chmod 600 "/path/to/your/credentials.json"

# Verify configuration
npx tsx scripts/health-check.js
```

### **šŸ” Authentication Failed**
```bash
# Re-run OAuth setup
G_OAUTH_CREDENTIALS="/path/to/creds.json" npm run setup

# Check Google Cloud Console:
# 1. APIs enabled (Calendar + Meet)
# 2. OAuth consent screen configured
# 3. Scopes properly set
```

### **šŸ¤– Claude Desktop Issues**
```bash
# Verify MCP configuration
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json

# Restart Claude Desktop
# Check server status in Smithery (if using)
```

**šŸ“– [Complete Troubleshooting Guide](./docs/TROUBLESHOOTING.md)** - Detailed problem resolution

## Enterprise Features Limitations

### Google Meet API v2
- Some advanced features require Google Workspace licenses
- Recording cannot be started programmatically (requires manual activation)
- Smart Notes require Gemini Business/Enterprise license
- Participant data is only available for completed conferences

### Implementation Notes
- All 21 tools are fully implemented using official Google APIs
- Advanced features use direct REST API calls to Google Meet API v2
- Authentication and token management handled automatically
- Complete TypeScript coverage with branded types for safety

## šŸ¤ **Contributing**

### **Development Requirements**
- āœ… **TypeScript code** with proper types (no 'any' types)
- āœ… **Tests pass** (`npm test`) - maintain 100% test success rate
- āœ… **Zod validation schemas** for new tools
- āœ… **Error handling** for new endpoints
- āœ… **Documentation updates** for new features
- āœ… **Security review** for credential handling

### **Contribution Process**
1. **Fork and clone** the repository
2. **Create feature branch** from `main`
3. **Implement changes** with tests and documentation
4. **Run full test suite** (`npm test`)
5. **Update relevant guides** in `docs/`
6. **Submit pull request** with detailed description

## šŸ“„ **License**

**ISC License** - Free for commercial and personal use. See [LICENSE](./LICENSE) file for details.

---

**šŸŽ‰ Ready to supercharge your Google Meet workflow? Choose your deployment method above and get started in minutes!**

> šŸ’” **Recommended**: Start with [Smithery deployment](./docs/SMITHERY_USER_GUIDE.md) for the easiest setup experience.

## šŸ“ž **Support & Resources**

### **šŸ“š Documentation**
- **[Smithery User Guide](./docs/SMITHERY_USER_GUIDE.md)** - Team deployment with Smithery
- **[Docker Deployment](./docs/DOCKER_DEPLOYMENT.md)** - Containerized production deployment
- **[Manual Setup](./docs/SETUP.md)** - Direct installation and configuration
- **[Security Guide](./docs/SECURITY.md)** - Individual security best practices
- **[Team Security](./docs/TEAM_SECURITY.md)** - Enterprise team management
- **[Troubleshooting](./docs/TROUBLESHOOTING.md)** - Problem diagnosis and resolution

### **šŸ†˜ Getting Help**
- **šŸ› [GitHub Issues](https://github.com/INSIDE-HAIR/google-meet-mcp-server/issues)** - Bug reports and feature requests
- **šŸ”Ø [Smithery Support](https://smithery.ai/support)** - Platform-specific help
- **šŸ“– [MCP Documentation](https://modelcontextprotocol.io)** - Model Context Protocol resources

### **šŸŽÆ Quick Links**
- **Repository**: [github.com/INSIDE-HAIR/google-meet-mcp-server](https://github.com/INSIDE-HAIR/google-meet-mcp-server)
- **Smithery Page**: [smithery.ai/server/@inside-hair/google-meet-mcp-server](https://smithery.ai/server/@INSIDE-HAIR/mcp-google-meet-and-calendar)
- **Docker Hub**: [ghcr.io/inside-hair/google-meet-mcp-server](https://ghcr.io/inside-hair/google-meet-mcp-server)

## Acknowledgments

- Built with [Model Context Protocol SDK](https://github.com/modelcontextprotocol)
- Powered by Google Calendar API and Google Meet API
- Compatible with Claude Desktop and other MCP clients
- Enterprise-grade TypeScript architecture
- Comprehensive Zod validation system

TDQS

B3.4/5.0

Scored across 24 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Calendar tools focus on event/calendar management (create, delete, get, list, update, move, quick_add, freebusy_query), while Meet tools focus on space/conference management and data retrieval (create_space, update_space, end_conference, get_* for various entities, list_* for various entities). The separation between Calendar and Meet domains is explicit, and within each domain, tools target specific resources and actions without overlap.

Naming Consistency5/5

Tool names follow a highly consistent pattern throughout. All tools use a verb_noun format with a prefix indicating the API (calendar_v3_ or meet_v2_), followed by a descriptive action and resource (e.g., create_event, list_calendars, get_participant, update_space). There are no deviations in style or convention, making the naming predictable and easy to understand.

Tool Count3/5

With 24 tools, the count is borderline heavy for a single server, though it covers two related domains (Calendar and Meet). While each tool appears purposeful, the high number might overwhelm agents or indicate over-specialization. A typical well-scoped server often has 3-15 tools, so 24 pushes into the upper limit of reasonable, leaning toward feeling heavy but not extreme.

Completeness5/5

The tool surface is complete with comprehensive CRUD/lifecycle coverage for both Calendar and Meet domains. Calendar tools cover all essential operations (create, read, update, delete, list, move, quick_add, freebusy_query), and Meet tools cover space management, conference control, and detailed data retrieval (participants, recordings, transcripts). There are no obvious gaps, and agents can handle full workflows without dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues