Skip to main content
Glama
srdmathur
by srdmathur
README.md
# Activity Collector MCP

An MCP (Model Context Protocol) server for collecting developer activity data from GitLab, GitHub, Google Calendar, and Outlook Calendar.

## Features

- **GitLab Integration**: Track commits, merge requests, code reviews, and issue activity
- **GitHub Integration**: Track commits, pull requests, code reviews, and issue activity
- **Dual Git Support**: Use GitLab, GitHub, or both simultaneously
- **Google Calendar**: Fetch meeting information with OAuth2 authentication
- **Outlook Calendar**: Fetch calendar events with Microsoft Graph API
- **Activity Caching**: Smart caching for improved performance
- **Secure Token Storage**: OAuth tokens stored securely in your home directory

## Installation

### Via npx (Recommended)

```bash
npx activity-collector-mcp
```

### Via npm

```bash
npm install -g activity-collector-mcp
```

### From Source

```bash
git clone https://github.com/srdmathur/activity-collector-mcp.git
cd activity-collector-mcp
npm install
npm run build
```

## Configuration

### For Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "activity-collector": {
      "command": "npx",
      "args": ["activity-collector-mcp"]
    }
  }
}
```

### For Claude Code (VS Code)

Add to `~/Library/Application Support/Code/User/mcp.json`:

```json
{
  "servers": {
    "activity-collector": {
      "type": "stdio",
      "command": "npx",
      "args": ["activity-collector-mcp"]
    }
  }
}
```

### API Configuration

Create `~/.activity-collector-mcp-config.json`:

```json
{
  "gitlab": {
    "url": "https://gitlab.com"
  },
  "google": {
    "clientId": "YOUR_GOOGLE_CLIENT_ID",
    "clientSecret": "YOUR_GOOGLE_CLIENT_SECRET",
    "redirectUri": "http://localhost:3000/oauth/callback"
  },
  "outlook": {
    "clientId": "YOUR_OUTLOOK_CLIENT_ID",
    "clientSecret": "YOUR_OUTLOOK_CLIENT_SECRET",
    "tenantId": "YOUR_TENANT_ID",
    "redirectUri": "http://localhost:3000/oauth/callback"
  }
}
```

## Usage

### First Time Setup

1. **Check authentication status**:
   ```
   Check my authentication status
   ```

2. **Configure GitLab**:
   ```
   Configure GitLab with token: YOUR_GITLAB_TOKEN
   ```

3. **Configure GitHub**:
   ```
   Configure GitHub with token: YOUR_GITHUB_TOKEN
   ```

4. **Configure Google Calendar** (Optional):
   ```
   Set up Google Calendar authentication
   ```

5. **Configure Outlook Calendar** (Optional):
   ```
   Set up Outlook Calendar authentication
   ```

### Fetching Activity Data

- **GitLab Activity**: `Fetch GitLab activity for 2024-12-05`
- **GitHub Activity**: `Fetch GitHub activity for last week`
- **Calendar Events**: `Fetch Google Calendar events for today`
- **Date Ranges**: `Fetch activity from 2024-12-01 to 2024-12-07`

## Available Tools (12)

### Service Configuration (6 tools)
- `configure_gitlab` - Set up GitLab personal access token
- `configure_github` - Set up GitHub personal access token
- `configure_google_calendar` - Start Google Calendar OAuth flow
- `google_calendar_callback` - Complete Google Calendar OAuth
- `configure_outlook_calendar` - Start Outlook Calendar OAuth flow
- `outlook_calendar_callback` - Complete Outlook Calendar OAuth

### Data Fetching (4 tools)
- `fetch_gitlab_activity` - Fetch GitLab activity for specific dates
- `fetch_github_activity` - Fetch GitHub activity for specific dates
- `fetch_google_calendar_events` - Fetch Google Calendar events
- `fetch_outlook_calendar_events` - Fetch Outlook Calendar events

### Utilities (2 tools)
- `check_authentication_status` - Check authentication for all services
- `clear_cache` - Clear cached activity data

## Getting API Credentials

### GitLab Personal Access Token
1. Go to GitLab → User Settings → Access Tokens
2. Create token with `read_api` and `read_repository` scopes

### GitHub Personal Access Token
1. Go to GitHub → Settings → Developer Settings → Personal Access Tokens
2. Generate token with `repo` and `read:user` scopes

### Google Calendar Credentials
1. Go to [Google Cloud Console](https://console.cloud.google.com/)
2. Create project and enable Google Calendar API
3. Create OAuth 2.0 Client ID credentials

### Outlook Calendar Credentials
1. Go to [Azure Portal](https://portal.azure.com/)
2. Register application in Azure AD
3. Add `Calendars.Read` permission
4. Create client secret

## Security

- Tokens stored in `~/.activity-collector-mcp-tokens.json` with restricted permissions (600)
- OAuth tokens automatically refreshed when expired
- Configuration file should not be committed to version control

## Companion MCP

This MCP works great with [Timesheet Assistant MCP](https://github.com/sharadmathuratthepsi/timesheet-mcp) for timesheet generation and PSI submission.

## License

MIT

## Contributing

Contributions welcome! Please open issues or submit pull requests.

## Author

Sharad Mathur (srdmathur@gmail.com)