Code Snippet Server
by ngeojiajun
Verified
# Services Directory Documentation
## Overview
This directory contains service implementations that handle external integrations and business logic for the MCP server. The services are organized into two main categories:
1. System Prompt Services - For interacting with the systemprompt.io API
2. Google Services - For interacting with various Google APIs (Gmail, Calendar, etc.)
## Service Architecture
### Base Services
#### `google-base-service.ts`
An abstract base class that provides common functionality for all Google services:
```typescript
abstract class GoogleBaseService {
protected auth: GoogleAuthService;
constructor();
protected waitForInit(): Promise<void>;
}
```
Features:
- Automatic authentication initialization
- Shared auth instance management
- Error handling for auth failures
### Core Services
#### `systemprompt-service.ts`
A singleton service for interacting with the systemprompt.io API:
```typescript
class SystemPromptService {
private static instance: SystemPromptService | null = null;
static initialize(apiKey: string, baseUrl?: string): void;
static getInstance(): SystemPromptService;
static cleanup(): void;
// Prompt Operations
async getAllPrompts(): Promise<SystempromptPromptResponse[]>;
// Block Operations
async listBlocks(): Promise<SystempromptBlockResponse[]>;
async getBlock(blockId: string): Promise<SystempromptBlockResponse>;
}
```
Features:
- Singleton pattern with API key initialization
- Comprehensive error handling with specific error types
- Configurable API endpoint
- Type-safe request/response handling
#### `google-auth-service.ts`
Manages Google OAuth2 authentication:
```typescript
class GoogleAuthService {
static getInstance(): GoogleAuthService;
async initialize(): Promise<void>;
async authenticate(): Promise<void>;
}
```
#### `gmail-service.ts`
Handles Gmail API interactions:
```typescript
class GmailService extends GoogleBaseService {
// Email operations
async listMessages(): Promise<GmailMessage[]>;
async sendEmail(): Promise<void>;
// ... other Gmail operations
}
```
#### `calendar-service.ts`
Manages Google Calendar operations:
```typescript
class CalendarService extends GoogleBaseService {
// Calendar operations
async listEvents(): Promise<CalendarEvent[]>;
// ... other calendar operations
}
```
## Implementation Details
### Error Handling
All services implement comprehensive error handling:
```typescript
try {
const response = await fetch(endpoint, options);
if (!response.ok) {
switch (response.status) {
case 403:
throw new Error("Invalid API key");
case 404:
throw new Error("Resource not found");
// ... other status codes
}
}
} catch (error) {
throw new Error(`API request failed: ${error.message}`);
}
```
### Authentication
#### System Prompt Authentication
- API key-based authentication
- Key passed via headers
- Environment variable configuration
#### Google Authentication
- OAuth2 flow
- Automatic token refresh
- Scoped access for different services
## Usage Examples
### System Prompt Service
```typescript
// Initialize
SystemPromptService.initialize(process.env.SYSTEMPROMPT_API_KEY);
const service = SystemPromptService.getInstance();
// Get all prompts
const prompts = await service.getAllPrompts();
// List blocks
const blocks = await service.listBlocks();
```
### Google Services
```typescript
// Gmail
const gmailService = new GmailService();
await gmailService.waitForInit();
const messages = await gmailService.listMessages();
// Calendar
const calendarService = new CalendarService();
await calendarService.waitForInit();
const events = await calendarService.listEvents();
```
## Testing
All services have corresponding test files in the `__tests__` directory:
- `systemprompt-service.test.ts`
- `gmail-service.test.ts`
- `calendar-service.test.ts`
- `google-auth-service.test.ts`
- `google-base-service.test.ts`
Tests cover:
- Service initialization
- API interactions
- Error handling
- Authentication flows