Skip to main content
Glama
FedWiebe

Federated Directory MCP

by FedWiebe
README.md
# Federated Directory MCP

A Model Context Protocol (MCP) server that integrates Claude with the Federated Directory API, allowing for contact searches by name or email address.

## Features

- Search contacts by name
- Search contacts by email address
- Comprehensive API request/response logging
- Automatic query type detection
- Error handling and validation

## Prerequisites

- Node.js (v18 or higher)
- A Federated Directory API key

## Installation

1. Clone the repository:
```bash
git clone [repository-url]
cd MCP
```

2. Install dependencies:
```bash
npm install
```

3. Copy the environment variables template:
```bash
cp .env.example .env
```

4. Configure your environment variables in `.env`:
```env
FEDERATED_DIRECTORY_API_KEY=your_api_key_here
```

## Usage

1. Start the MCP server:
```bash
node index.js
```

2. The server will start and wait for requests from Claude.

3. Example interactions:

   Search by name:
   ```
   Input: "John Smith"
   ```

   Search by email:
   ```
   Input: "john@example.com"
   ```

## API Response Format

The server returns results in the following format:

```json
{
  "message": "Here are the contacts matching your search:",
  "results": [
    {
      "name": "John Smith",
      "email": "john@example.com",
      "organization": "Example Corp",
      "title": "Software Engineer"
    }
  ]
}
```

## Logging

The server logs all API interactions, including:
- Request method, URL, headers, and body
- Response status, headers, and body
- Search parsing and processing details

## Environment Variables

| Variable | Description | Required | Default |
|----------|-------------|----------|---------|
| FEDERATED_DIRECTORY_API_KEY | Your API key for Federated Directory | Yes | - |
| PORT | Server port number | No | 3000 |
| LOG_LEVEL | Logging verbosity | No | info |

## Error Handling

The server handles various error cases:
- Missing API key
- Invalid search queries
- API request failures
- Network issues

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.