Skip to main content
Glama
d4nshields

MCP Meetup-Claude Integration Server

by d4nshields
README.md
# MCP Meetup-Claude Integration Server

## Overview

This is a production-quality Model Communication Protocol (MCP) server that seamlessly integrates Meetup.com's event discovery APIs with Anthropic's Claude LLM. The server enables intelligent event discovery, natural language querying, and AI-powered recommendations for Meetup events.

## Architecture

### Core Components

1. **MCP Protocol Handler** (`MeetupClaudeMCPServer`)
   - Manages client connections and tool definitions
   - Handles resource management and server lifecycle
   - Provides standardized MCP interface

2. **Authentication Manager** (`AuthenticationManager`)
   - OAuth2 flow implementation for Meetup.com
   - Token lifecycle management and refresh
   - Secure credential handling

3. **Event Discovery Engine** (`EventDiscoveryEngine`)
   - Natural language query parameter extraction
   - Dual API support (REST and GraphQL)
   - Intelligent event filtering and ranking

4. **Prompt Augmentation Service** (`PromptAugmentationService`)
   - Context-aware prompt enhancement
   - Event data formatting for LLM consumption
   - Smart relevance filtering

5. **Claude Integration** (`ClaudeIntegration`)
   - Anthropic API client management
   - Response generation and error handling
   - Configurable model parameters

### Data Flow

```
User Query → Parameter Extraction → Event Discovery → Data Augmentation → Claude Processing → Response
```

## Quick Start

### Prerequisites

- Python 3.8+
- Meetup.com account
- Anthropic API account

### Installation

```bash
# Clone or download the project
cd /home/daniel/work/mcp-meetup

# Install dependencies
pip install -r requirements.txt

# Configure environment
cp .env.example .env
# Edit .env with your credentials

# Run the server
python meetup_claude_mcp_server.py
```

## API Setup Instructions

### 1. Meetup.com OAuth Setup

1. Visit [Meetup OAuth Consumers](https://secure.meetup.com/meetup_api/oauth_consumers/)
2. Click "Create New Consumer"
3. Fill in application details:
   - **Application Name**: Your app name
   - **Application Website**: Your website or GitHub repo
   - **Redirect URI**: `http://localhost:8080/oauth/callback`
   - **Application Description**: Brief description of your use case

4. Save the generated:
   - **Client ID**
   - **Client Secret**

### 2. Anthropic API Setup

1. Visit [Anthropic Console](https://console.anthropic.com/)
2. Create account or sign in
3. Navigate to API Keys section
4. Generate new API key
5. Copy the API key securely

### 3. Environment Configuration

Required environment variables in `.env`:
```bash
MEETUP_CLIENT_ID=your_meetup_client_id_here
MEETUP_CLIENT_SECRET=your_meetup_client_secret_here
ANTHROPIC_API_KEY=your_anthropic_api_key_here
```

Optional configuration:
```bash
MEETUP_ACCESS_TOKEN=your_access_token_if_available
MEETUP_REDIRECT_URI=http://localhost:8080/oauth/callback
LOG_LEVEL=INFO
MAX_EVENTS_PER_QUERY=20
DEFAULT_RADIUS=25
```

## MCP Tools

### 1. `search_meetup_events`

Search for Meetup events using natural language queries.

**Parameters:**
- `query` (string, required): Natural language search query
- `max_results` (integer, optional): Maximum events to return (default: 20)

**Example:**
```json
{
  "query": "Python programming events near San Francisco this week",
  "max_results": 10
}
```

### 2. `augment_prompt_with_events`

Enhance a user prompt with relevant event data for context.

**Parameters:**
- `prompt` (string, required): User prompt to augment

**Example:**
```json
{
  "prompt": "What programming events should I attend this weekend?"
}
```

### 3. `get_event_recommendations`

Get AI-powered event recommendations using Claude with event context.

**Parameters:**
- `query` (string, required): Natural language query for recommendations
- `preferences` (string, optional): Additional preferences or constraints

**Example:**
```json
{
  "query": "I'm interested in machine learning and networking events",
  "preferences": "Prefer free events, willing to travel up to 30 miles"
}
```

### 4. `get_oauth_url`

Get Meetup OAuth authorization URL for authentication setup.

**Parameters:** None

## MCP Resources

### 1. `meetup://config`

Current server configuration and status information.

### 2. `meetup://auth/status`

Authentication status with Meetup.com including token validity.

## Natural Language Query Examples

The server intelligently extracts parameters from natural language:

**Time-based queries:**
- "events today"
- "what's happening tomorrow"
- "events this week"

**Location-based queries:**
- "events near me"
- "meetups in San Francisco"
- "remote events only"

**Topic-based queries:**
- "Python programming meetups"
- "data science events"
- "startup networking"
- "AI and machine learning"

**Combined queries:**
- "Python events near me today"
- "remote data science meetups this week"
- "free networking events in San Francisco"

## Error Handling

The server includes comprehensive error handling for:

- **Authentication errors**: Missing credentials, expired tokens
- **API errors**: Rate limiting, network failures, invalid queries
- **Data processing errors**: Malformed events, empty results

## Security Considerations

- Environment variable configuration prevents credential exposure
- OAuth2 flow implementation follows security best practices
- No persistent storage of user queries or personal data
- Configurable logging levels to control information exposure

## Development

### Project Structure

```
mcp-meetup/
├── meetup_claude_mcp_server.py    # Main server implementation
├── requirements.txt               # Python dependencies
├── .env.example                  # Environment configuration template
├── README.md                     # This documentation
├── docs/                         # Additional documentation
│   └── adr/                      # Architecture decision records
└── tests/                        # Test files (future)
```

### Testing

Basic testing can be done by running the server and using MCP client tools:

```bash
# Start the server
python meetup_claude_mcp_server.py

# In another terminal, test with MCP client
# (MCP client implementation would go here)
```

### Extending the Server

The modular design makes it easy to extend:

1. **Additional APIs**: Add other event platforms in `EventDiscoveryEngine`
2. **Enhanced filtering**: Extend `extract_query_parameters` method
3. **Caching**: Add Redis or memory caching in `PromptAugmentationService`
4. **Additional tools**: Add new MCP tools in `_setup_tools` method

## Troubleshooting

### Common Issues

1. **Authentication failures**
   - Verify client ID and secret are correct
   - Check redirect URI matches OAuth consumer settings
   - Ensure access token hasn't expired

2. **No events found**
   - Try broader search terms
   - Check location spelling and format
   - Verify time parameters are reasonable

3. **API rate limiting**
   - Reduce query frequency
   - Implement request caching
   - Check API quota usage

4. **Claude integration errors**
   - Verify Anthropic API key is valid
   - Check API quota and billing status
   - Review prompt length and complexity

### Debug Mode

Enable debug logging:

```bash
export LOG_LEVEL=DEBUG
python meetup_claude_mcp_server.py
```

### Health Checks

Check server status using MCP resources:

```bash
# Check configuration
# Use MCP client to read meetup://config

# Check authentication status
# Use MCP client to read meetup://auth/status
```

## Contributing

### Development Workflow

1. Fork repository
2. Create feature branch
3. Implement changes with tests
4. Update documentation
5. Submit pull request

### Code Standards

- Follow PEP 8 style guidelines
- Use type hints throughout
- Maintain comprehensive docstrings
- Include unit tests for new features

## License

MIT License - see LICENSE file for details.

## Support

For issues and questions:

1. Check troubleshooting section
2. Review configuration and setup
3. Create detailed bug report with logs
4. Include reproduction steps and environment details

---

**Version**: 1.0.0  
**Last Updated**: 2025-07-27  
**Author**: Generated for Dan Shields

Maintenance

ActivityInactive
ResponsivenessNo issues