Skip to main content
Glama
biguxuzz

Outlook MCP Server

by biguxuzz
README.md
# Outlook MCP Server

A Model Context Protocol (MCP) server that provides access to Microsoft Outlook email functionality, allowing LLMs and other MCP clients to read, search, and manage emails through a standardized interface.

## Features

- **Folder Management**: List available mail folders in your Outlook client
- **Email Listing**: Retrieve emails from specified time periods or date ranges
- **Date Range Filtering**: Filter emails by specific date ranges (supports YYYY-MM and YYYY-MM-DD formats)
- **Email Search**: Search emails by contact name, keywords, or phrases with OR operators
- **Email Details**: View complete email content, including attachments
- **Email Composition**: Create and send new emails
- **Email Replies**: Reply to existing emails

## Prerequisites

- Windows operating system
- Python 3.10 or later
- Microsoft Outlook installed and configured with an active account
- Claude Desktop or another MCP-compatible client

## Installation

1. Clone or download this repository
2. Install required dependencies:

```bash
pip install mcp>=1.2.0 pywin32>=305
```

3. Configure Claude Desktop (or your preferred MCP client) to use this server

## Configuration

### Claude Desktop Configuration

Add the following to your `MCP_client_config.json` file:

```json
{
  "mcpServers": {
    "outlook": {
      "command": "python",
      "args": ["Your path\\outlook_mcp_server_v2.py"],
      "env": {}
    }
  }
}
```

### Cursor Configuration

For Cursor IDE, add the following to your `mcp.json` file (usually located at `~/.cursor/mcp.json`):

**Important**: First, start the server manually or use a process manager:

```bash
python outlook_mcp_server_v2.py
```

Then add this configuration to your `mcp.json`:

```json
{
  "mcpServers": {
    "outlook_mcp_server": {
      "url": "http://127.0.0.1:8050/mcp",
      "connection_id": "outlook_mcp_server"
    }
  }
}
```

**Note**: Make sure the server is running before Cursor tries to connect. The server must be started with HTTP transport enabled (default).

## Usage

### Starting the Server

You can start the server directly:

```bash
python outlook_mcp_server_v2.py
```

Or allow an MCP client like Claude Desktop to start it via the configuration.

### Environment Variables (Optional)

The server supports the following environment variables for HTTP transport configuration:

- `MCP_TRANSPORT`: Transport type (default: "streamablehttp")
- `MCP_HTTP_HOST`: HTTP host (default: "127.0.0.1")
- `MCP_HTTP_PORT`: HTTP port (default: 8050)
- `MCP_HTTP_PATH`: HTTP path (default: "/mcp")

### Available Tools

The server provides the following tools:

1. `list_folders`: Lists all available mail folders in Outlook
2. `list_recent_emails`: Lists email titles from the specified number of days or date range
   - Supports date filtering with `start_date` and `end_date` parameters
   - Date formats: `YYYY-MM` (entire month) or `YYYY-MM-DD` (specific day)
3. `search_emails`: Searches emails by contact name or keyword within a time period or date range
   - Supports date filtering with `start_date` and `end_date` parameters
   - Date formats: `YYYY-MM` (entire month) or `YYYY-MM-DD` (specific day)
4. `get_email_by_number`: Retrieves detailed content of a specific email
5. `reply_to_email_by_number`: Replies to a specific email
6. `compose_email`: Creates and sends a new email

### Example Workflow

1. Use `list_folders` to see all available mail folders
2. Use `list_recent_emails` to view recent emails (e.g., from last 7 days, or from a specific date range)
3. Use `search_emails` to find specific emails by keywords within a date range
4. Use `get_email_by_number` to view a complete email
5. Use `reply_to_email_by_number` to respond to an email

## Examples

### Listing Recent Emails
```
Could you show me my unread emails from the last 3 days?
```

### Listing Emails by Date Range
```
Show me all emails from January 2024 (2024-01)
```

```
List emails from 2024-01-15 to 2024-02-20
```

```
Show me emails since 2024-03-01
```

### Searching for Emails
```
Search for emails about "project update OR meeting notes" in the last week
```

### Searching Emails by Date Range
```
Search for emails containing "budget" from 2024-01 to 2024-02
```

```
Find emails about "meeting" from 2024-01-15 to 2024-01-31
```

### Reading Email Details
```
Show me the details of email #2 from the list
```

### Replying to an Email
```
Reply to email #3 with: "Thanks for the information. I'll review this and get back to you tomorrow."
```

### Composing a New Email
```
Send an email to john.doe@example.com with subject "Meeting Agenda" and body "Here's the agenda for our upcoming meeting..."
```

## Troubleshooting

- **Connection Issues**: Ensure Outlook is running and properly configured
- **Permission Errors**: Make sure the script has permission to access Outlook
- **Search Problems**: For complex searches, try using OR operators between terms
- **Email Access Errors**: Check if the email ID is valid and accessible
- **Server Crashes**: Check Outlook's connection and stability

## Security Considerations

This server has access to your Outlook email account and can read, send, and manage emails. Use it only with trusted MCP clients and in secure environments.

## Limitations

- Currently supports text emails only (not HTML)
- Maximum email history is limited to 365 days when using `days` parameter
- Date range filtering supports formats: `YYYY-MM` (entire month) and `YYYY-MM-DD` (specific day)
- Search capabilities depend on Outlook's built-in search functionality
- Only supports basic email functions (no calendar, contacts, etc.)

---

# Outlook MCP Server (Русский язык)

Сервер Model Context Protocol (MCP), предоставляющий доступ к функциональности электронной почты Microsoft Outlook, позволяющий LLM и другим MCP-клиентам читать, искать и управлять письмами через стандартизированный интерфейс.

## Возможности

- **Управление папками**: Просмотр всех доступных почтовых папок в Outlook
- **Список писем**: Получение писем за указанный период времени или диапазон дат
- **Фильтрация по диапазону дат**: Фильтрация писем по конкретным диапазонам дат (поддерживаются форматы YYYY-MM и YYYY-MM-DD)
- **Поиск писем**: Поиск писем по имени контакта, ключевым словам или фразам с операторами OR
- **Детали письма**: Просмотр полного содержимого письма, включая вложения
- **Создание писем**: Создание и отправка новых писем
- **Ответы на письма**: Ответ на существующие письма

## Требования

- Операционная система Windows
- Python 3.10 или новее
- Установленный и настроенный Microsoft Outlook с активной учетной записью
- Claude Desktop или другой MCP-совместимый клиент

## Установка

1. Клонируйте или скачайте этот репозиторий
2. Установите необходимые зависимости:

```bash
pip install mcp>=1.2.0 pywin32>=305
```

3. Настройте Claude Desktop (или ваш предпочитаемый MCP-клиент) для использования этого сервера

## Конфигурация

### Конфигурация Claude Desktop

Добавьте следующее в ваш файл `MCP_client_config.json`:

```json
{
  "mcpServers": {
    "outlook": {
      "command": "python",
      "args": ["Ваш путь\\outlook_mcp_server_v2.py"],
      "env": {}
    }
  }
}
```

### Конфигурация Cursor

Для Cursor IDE добавьте следующее в ваш файл `mcp.json` (обычно находится в `~/.cursor/mcp.json`):

**Важно**: Сначала запустите сервер вручную или используйте менеджер процессов:

```bash
python outlook_mcp_server_v2.py
```

Затем добавьте эту конфигурацию в ваш `mcp.json`:

```json
{
  "mcpServers": {
    "outlook_mcp_server": {
      "url": "http://127.0.0.1:8050/mcp",
      "connection_id": "outlook_mcp_server"
    }
  }
}
```

**Примечание**: Убедитесь, что сервер запущен перед тем, как Cursor попытается подключиться. Сервер должен быть запущен с включенным HTTP транспортом (по умолчанию).

## Использование

### Запуск сервера

Вы можете запустить сервер напрямую:

```bash
python outlook_mcp_server_v2.py
```

Или позволить MCP-клиенту, такому как Claude Desktop, запустить его через конфигурацию.

### Переменные окружения (опционально)

Сервер поддерживает следующие переменные окружения для настройки HTTP транспорта:

- `MCP_TRANSPORT`: Тип транспорта (по умолчанию: "streamablehttp")
- `MCP_HTTP_HOST`: HTTP хост (по умолчанию: "127.0.0.1")
- `MCP_HTTP_PORT`: HTTP порт (по умолчанию: 8050)
- `MCP_HTTP_PATH`: HTTP путь (по умолчанию: "/mcp")

### Доступные инструменты

Сервер предоставляет следующие инструменты:

1. `list_folders`: Список всех доступных почтовых папок в Outlook
2. `list_recent_emails`: Список заголовков писем за указанное количество дней или диапазон дат
   - Поддерживает фильтрацию по датам с параметрами `start_date` и `end_date`
   - Форматы дат: `YYYY-MM` (весь месяц) или `YYYY-MM-DD` (конкретный день)
3. `search_emails`: Поиск писем по имени контакта или ключевому слову в пределах периода времени или диапазона дат
   - Поддерживает фильтрацию по датам с параметрами `start_date` и `end_date`
   - Форматы дат: `YYYY-MM` (весь месяц) или `YYYY-MM-DD` (конкретный день)
4. `get_email_by_number`: Получение подробного содержимого конкретного письма
5. `reply_to_email_by_number`: Ответ на конкретное письмо
6. `compose_email`: Создание и отправка нового письма

### Примерный рабочий процесс

1. Используйте `list_folders` для просмотра всех доступных почтовых папок
2. Используйте `list_recent_emails` для просмотра недавних писем (например, за последние 7 дней или за конкретный диапазон дат)
3. Используйте `search_emails` для поиска конкретных писем по ключевым словам в пределах диапазона дат
4. Используйте `get_email_by_number` для просмотра полного письма
5. Используйте `reply_to_email_by_number` для ответа на письмо

## Примеры

### Просмотр недавних писем
```
Покажи мне непрочитанные письма за последние 3 дня
```

### Просмотр писем по диапазону дат
```
Покажи мне все письма за январь 2024 года (2024-01)
```

```
Покажи письма с 2024-01-15 по 2024-02-20
```

```
Покажи письма с 2024-03-01
```

### Поиск писем
```
Найди письма о "обновление проекта OR заметки встречи" за последнюю неделю
```

### Поиск писем по диапазону дат
```
Найди письма содержащие "бюджет" с 2024-01 по 2024-02
```

```
Найди письма о "встрече" с 2024-01-15 по 2024-01-31
```

### Просмотр деталей письма
```
Покажи мне детали письма №2 из списка
```

### Ответ на письмо
```
Ответь на письмо №3: "Спасибо за информацию. Я изучу это и отвечу завтра."
```

### Создание нового письма
```
Отправь письмо на john.doe@example.com с темой "Повестка встречи" и текстом "Вот повестка дня для нашей предстоящей встречи..."
```

## Решение проблем

- **Проблемы с подключением**: Убедитесь, что Outlook запущен и правильно настроен
- **Ошибки прав доступа**: Убедитесь, что скрипт имеет разрешение на доступ к Outlook
- **Проблемы с поиском**: Для сложных запросов попробуйте использовать операторы OR между терминами
- **Ошибки доступа к письмам**: Проверьте, что ID письма действителен и доступен
- **Сбои сервера**: Проверьте подключение и стабильность Outlook

## Вопросы безопасности

Этот сервер имеет доступ к вашей учетной записи Outlook и может читать, отправлять и управлять письмами. Используйте его только с доверенными MCP-клиентами и в безопасных средах.

## Ограничения

- В настоящее время поддерживаются только текстовые письма (не HTML)
- Максимальная история писем ограничена 365 днями при использовании параметра `days`
- Фильтрация по диапазону дат поддерживает форматы: `YYYY-MM` (весь месяц) и `YYYY-MM-DD` (конкретный день)
- Возможности поиска зависят от встроенной функциональности поиска Outlook
- Поддерживаются только базовые функции электронной почты (без календаря, контактов и т.д.)