Weeek MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Weeek MCP Servershow my active tasks from project 'Q4 Planning'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🚀 Weeek MCP Server
Model Context Protocol (MCP) сервер для полной интеграции с Weeek API
📋 Описание
Weeek MCP Server — это полнофункциональный MCP сервер на Python, который интегрирует все 71 endpoint Weeek API v1 и предоставляет их как MCP tools для использования с AI-клиентами (Claude Desktop, Perplexity, собственные MCP-клиенты и др.).
Ключевые возможности
✅ 71 инструмент — полная интеграция всех endpoint'ов Weeek API
✅ Надёжный HTTP-клиент с retry логикой и обработкой ошибок
✅ Безопасность — автоматическое сокрытие токенов в логах
✅ Типизация — полная поддержка type hints
✅ Async/await — асинхронная архитектура
✅ Docker поддержка — готовый Dockerfile
✅ SSE транспорт — удалённый доступ через HTTP для n8n, web-клиентов
Related MCP server: Wrike MCP Server
🛠 Установка
Требования
Python 3.10 или выше
pip (менеджер пакетов Python)
Аккаунт Weeek с API токеном
Шаг 1: Клонирование и установка
# Клонировать репозиторий
git clone https://github.com/your-repo/weeek-mcp-server.git
cd weeek-mcp-server
# Создать виртуальное окружение
python -m venv venv
source venv/bin/activate # Linux/macOS
# или
venv\Scripts\activate # Windows
# Установить зависимости
pip install -r requirements.txtШаг 2: Получение API токена
Войдите в ваш аккаунт Weeek
Перейдите в Settings → API
Нажмите "Add token"
Дайте токену имя и скопируйте его
Шаг 3: Настройка окружения
# Скопировать пример конфигурации
cp env.example .env
# Отредактировать .env файл
# Вставить ваш токен в WEEEK_TOKENСодержимое .env:
WEEEK_TOKEN=your-api-token-here
WEEEK_BASE_URL=https://api.weeek.net/public/v1
REQUEST_TIMEOUT=30
RETRY_ATTEMPTS=3
LOG_LEVEL=INFO🚀 Запуск
Локальный запуск
python -m src.serverЧерез Docker
# Сборка образа
docker build -t weeek-mcp .
# Запуск с передачей токена
docker run -e WEEEK_TOKEN="your-token" -it weeek-mcp
# Или с использованием .env файла
docker run --env-file .env -it weeek-mcpDocker Compose
# Создать .env файл из примера
cp env.example .env
# Отредактировать .env и добавить WEEEK_TOKEN
# Запуск
docker-compose up -d
# Или для сборки и запуска
docker-compose up --build -d🌐 SSE режим (для удалённого доступа)
MCP сервер поддерживает два режима работы:
stdio (по умолчанию) — для локальных клиентов (Claude Desktop, Cursor)
sse — для сетевого доступа через HTTP (n8n, удалённые клиенты)
Настройка SSE
# В .env файле
TRANSPORT=sse
SERVER_HOST=0.0.0.0
SERVER_PORT=3847Деплой на VPS через Docker
Подготовка VPS:
# Склонировать репозиторий на VPS
git clone https://github.com/your-repo/weeek-mcp-server.git
cd weeek-mcp-server
# Создать .env файл
cp env.example .env
nano .envНастройка .env (ОБЯЗАТЕЛЬНО):
WEEEK_TOKEN=ваш-weeek-api-токен
TRANSPORT=sse
MCP_API_KEY=ваш-секретный-ключ-минимум-32-символаГенерация безопасного API ключа:
python -c "import secrets; print(secrets.token_urlsafe(32))"
# Пример: Kx7mN9pQ2rS5tU8vW0xY3zA6bC9dE2fGЗапуск:
docker-compose up -d --buildПроверка работы:
# Проверить статус
docker-compose ps
# Просмотр логов
docker-compose logs -f
# Проверить health endpoint (без авторизации)
curl http://localhost:3847/health
# Проверить SSE endpoint (с авторизацией)
curl -H "Authorization: Bearer YOUR_MCP_API_KEY" http://localhost:3847/sseДоступные endpoints
Endpoint | Описание | Авторизация |
| SSE endpoint для подключения MCP клиентов | Требуется |
| Endpoint для отправки сообщений | Требуется |
| Health check endpoint | Не требуется |
Аутентификация
Все запросы к /sse и /messages требуют API ключ. Передавайте его одним из способов:
# Способ 1: Authorization header (рекомендуется)
curl -H "Authorization: Bearer YOUR_MCP_API_KEY" http://host:3847/sse
# Способ 2: X-API-Key header
curl -H "X-API-Key: YOUR_MCP_API_KEY" http://host:3847/messagesСмена порта
Если порт 3847 занят, измените в .env:
SERVER_PORT=9999И в docker-compose.yml обновите порты:
ports:
- "9999:9999"🔗 Интеграция с n8n
Подключение MCP сервера к n8n
Убедитесь, что MCP сервер запущен в SSE режиме на VPS
В n8n используйте HTTP Request ноду для вызова MCP endpoints:
URL: http://your-vps-ip:3847/messages
Method: POST
Headers:
Content-Type: application/json
Authorization: Bearer YOUR_MCP_API_KEY
Body (JSON):
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_tasks",
"arguments": {
"project_id": "your-project-id",
"limit": 10
}
}
}Настройка HTTP Request ноды в n8n:
Method: POST
URL:
http://your-vps-ip:3847/messagesAuthentication: Predefined Credential Type → Header Auth
Name:
AuthorizationValue:
Bearer YOUR_MCP_API_KEY
Body Content Type: JSON
Пример Code ноды с авторизацией:
// Вызов MCP tool из n8n Code ноды
const MCP_API_KEY = 'your-mcp-api-key'; // Лучше хранить в credentials
const response = await $http.request({
method: 'POST',
url: 'http://your-vps-ip:3847/messages',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${MCP_API_KEY}`
},
body: JSON.stringify({
jsonrpc: '2.0',
id: Date.now(),
method: 'tools/call',
params: {
name: 'create_task',
arguments: {
title: 'Task from n8n',
project_id: 'proj_123',
priority: 'high'
}
}
})
});
return response.data;Примеры вызовов из n8n
Создание задачи:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_task",
"arguments": {
"title": "New task from n8n workflow",
"project_id": "7",
"description": "Created automatically",
"priority": "medium"
}
}
}Получение списка проектов:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "list_projects",
"arguments": {
"limit": 50
}
}
}Поиск задач:
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "search_task_global",
"arguments": {
"q": "urgent"
}
}
}Firewall / Безопасность
Для продакшена рекомендуется:
Настроить firewall — открыть порт только для IP n8n сервера:
# UFW (Ubuntu)
ufw allow from YOUR_N8N_IP to any port 3847
# iptables
iptables -A INPUT -p tcp -s YOUR_N8N_IP --dport 3847 -j ACCEPT
iptables -A INPUT -p tcp --dport 3847 -j DROPИспользовать reverse proxy (nginx) с SSL:
server {
listen 443 ssl;
server_name mcp.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:3847;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_buffering off;
proxy_cache off;
}
}🔧 Интеграция с MCP клиентами
Вариант 1: Локальный запуск (stdio)
Для локального запуска без Docker используйте stdio транспорт.
Claude Desktop
Файл конфигурации:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"weeek": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "/path/to/weeek-mcp-server",
"env": {
"WEEEK_TOKEN": "your-api-token-here"
}
}
}
}Cursor IDE
Добавьте в .cursor/mcp.json:
{
"mcpServers": {
"weeek": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "/path/to/weeek-mcp-server",
"env": {
"WEEEK_TOKEN": "your-api-token-here"
}
}
}
}Вариант 2: Подключение к локальному Docker (SSE)
Если MCP сервер запущен в Docker на том же компьютере, используйте SSE транспорт.
1. Запустите Docker контейнер
cd weeek-mcp-server
# Создайте .env с настройками
cp env.example .env
# Отредактируйте: добавьте WEEEK_TOKEN и MCP_API_KEY
# Запустите контейнер
docker-compose up -d --build2. Настройка Claude Desktop (SSE)
{
"mcpServers": {
"weeek": {
"url": "http://localhost:3847/sse",
"headers": {
"Authorization": "Bearer YOUR_MCP_API_KEY"
}
}
}
}Примечание: Замените YOUR_MCP_API_KEY на значение из вашего .env файла.
3. Настройка Cursor IDE (SSE)
В файле .cursor/mcp.json:
{
"mcpServers": {
"weeek": {
"url": "http://localhost:3847/sse",
"headers": {
"Authorization": "Bearer YOUR_MCP_API_KEY"
}
}
}
}4. Проверка подключения
# Проверить что контейнер запущен
docker-compose ps
# Проверить health endpoint
curl http://localhost:3847/health
# Проверить SSE с авторизацией
curl -H "Authorization: Bearer YOUR_MCP_API_KEY" http://localhost:3847/sseПосле настройки перезапустите Claude Desktop или Cursor для применения изменений.
Вариант 3: Подключение к удалённому серверу (SSE)
Для подключения к MCP серверу на VPS используйте его внешний IP или домен.
Claude Desktop
{
"mcpServers": {
"weeek": {
"url": "http://YOUR_VPS_IP:3847/sse",
"headers": {
"Authorization": "Bearer YOUR_MCP_API_KEY"
}
}
}
}Cursor IDE
{
"mcpServers": {
"weeek": {
"url": "http://YOUR_VPS_IP:3847/sse",
"headers": {
"Authorization": "Bearer YOUR_MCP_API_KEY"
}
}
}
}С SSL (рекомендуется для продакшена):
{
"mcpServers": {
"weeek": {
"url": "https://mcp.yourdomain.com/sse",
"headers": {
"Authorization": "Bearer YOUR_MCP_API_KEY"
}
}
}
}📚 Полный список инструментов (71 tool)
Workspace (1)
Tool | Описание |
| Получить информацию о рабочем пространстве |
Users (5)
Tool | Описание |
| Получить текущего пользователя |
| Список пользователей |
| Получить пользователя по ID |
| Обновить пользователя |
| Удалить пользователя |
Tags (4)
Tool | Описание |
| Список тегов |
| Создать тег |
| Обновить тег |
| Удалить тег |
Custom Fields (4)
Tool | Описание |
| Список пользовательских полей |
| Создать поле |
| Обновить поле |
| Удалить поле |
Currencies (1)
Tool | Описание |
| Список валют |
Projects (5)
Tool | Описание |
| Список проектов |
| Получить проект |
| Создать проект |
| Обновить проект |
| Удалить проект |
Portfolio (4)
Tool | Описание |
| Список портфелей |
| Создать портфель |
| Обновить портфель |
| Удалить портфель |
Boards (5)
Tool | Описание |
| Список досок |
| Получить доску |
| Создать доску |
| Обновить доску |
| Удалить доску |
Board Columns (5)
Tool | Описание |
| Список столбцов |
| Получить столбец |
| Создать столбец |
| Обновить столбец |
| Удалить столбец |
Tasks (7) ⭐
Tool | Описание |
| Список задач с фильтрацией |
| Получить задачу |
| Создать задачу |
| Обновить задачу |
| Удалить задачу |
| Поиск в проекте |
| Глобальный поиск |
Funnels (5)
Tool | Описание |
| Список воронок |
| Получить воронку |
| Создать воронку |
| Обновить воронку |
| Удалить воронку |
Funnel Statuses (5)
Tool | Описание |
| Список статусов |
| Получить статус |
| Создать статус |
| Обновить статус |
| Удалить статус |
Deals (5)
Tool | Описание |
| Список сделок |
| Получить сделку |
| Создать сделку |
| Обновить сделку |
| Удалить сделку |
Organizations (5)
Tool | Описание |
| Список организаций |
| Получить организацию |
| Создать организацию |
| Обновить организацию |
| Удалить организацию |
Contacts (5)
Tool | Описание |
| Список контактов |
| Получить контакт |
| Создать контакт |
| Обновить контакт |
| Удалить контакт |
Attachments (3)
Tool | Описание |
| Получить вложение |
| Загрузить файл |
| Удалить вложение |
Tag Extras (2)
Tool | Описание |
| Детали тега |
| Задачи по тегу |
💡 Примеры использования
Создание задачи с приоритетом
# Через MCP клиент
result = await mcp_client.call("create_task", {
"title": "Implement user authentication",
"project_id": "proj_abc",
"description": "Add OAuth2 integration",
"priority": "high",
"due_date": "2025-12-31",
"assigned_to": "user_123",
"tags": ["backend", "security"]
})Поиск задач
# Найти высокоприоритетные открытые задачи
tasks = await mcp_client.call("list_tasks", {
"project_id": "proj_abc",
"status": "open",
"priority": "high",
"search": "bug",
"limit": 10
})Управление сделками
# Создать сделку
deal = await mcp_client.call("create_deal", {
"title": "Enterprise License",
"funnel_id": "funnel_123",
"status_id": "status_new",
"amount": 50000,
"currency": "USD",
"contact_id": "contact_456"
})
# Переместить сделку в другой статус
await mcp_client.call("update_deal", {
"deal_id": deal["id"],
"status_id": "status_won"
})Работа с контактами
# Создать контакт
contact = await mcp_client.call("create_contact", {
"first_name": "John",
"last_name": "Doe",
"email": "john@example.com",
"organization_id": "org_123"
})
# Получить контакты организации
contacts = await mcp_client.call("list_contacts", {
"organization_id": "org_123",
"limit": 20
})🧪 Тестирование
Запуск интеграционных тестов
# Установить токен и запустить тесты
WEEEK_TOKEN="your-token" python tests/test_integration.pyЧеклист тестирования
Workspace info
User operations
Project CRUD
Task CRUD
Tag operations
Board operations
Funnel & Deal operations
Contact & Organization operations
Error handling (401, 404, 429)
🔒 Безопасность
✅ Токены никогда не логируются (автоматическая редакция)
✅ Все данные передаются через HTTPS
✅ Поддержка переменных окружения для секретов
✅ Валидация всех входных данных
📁 Структура проекта
weeek-mcp-server/
├── README.md # Документация
├── requirements.txt # Зависимости
├── env.example # Пример конфигурации
├── .env # Локальная конфигурация (не в git)
├── .gitignore
├── Dockerfile # Docker образ
├── docker-compose.yml # Docker Compose конфигурация
├── .dockerignore # Исключения для Docker
├── run_server.py # Скрипт запуска
├── src/
│ ├── __init__.py
│ ├── server.py # MCP сервер
│ ├── weeek_client.py # HTTP клиент
│ ├── config.py # Конфигурация
│ ├── tools/ # Все MCP инструменты
│ │ ├── workspace_tools.py
│ │ ├── user_tools.py
│ │ ├── tag_tools.py
│ │ ├── task_tools.py
│ │ └── ...
│ ├── schemas/
│ │ └── models.py # Pydantic модели
│ └── utils/
│ ├── errors.py # Обработка ошибок
│ └── logger.py # Логирование
└── tests/
└── test_integration.py # Интеграционные тесты🐛 Обработка ошибок
Сервер обрабатывает все типы ошибок Weeek API:
HTTP код | Ошибка | Описание |
400 |
| Неверные параметры запроса |
401 |
| Проблема с токеном |
403 |
| Нет прав доступа |
404 |
| Ресурс не найден |
429 |
| Превышен лимит запросов |
5xx |
| Ошибка сервера Weeek |
🤝 Contributing
Fork репозитория
Создайте feature branch (
git checkout -b feature/amazing)Commit изменения (
git commit -m 'Add amazing feature')Push в branch (
git push origin feature/amazing)Откройте Pull Request
📄 License
MIT License - см. LICENSE файл.
📞 Поддержка
Weeek API Documentation: https://developers.weeek.net/api/
MCP Specification: https://modelcontextprotocol.io/
Issues: GitHub Issues
Made with ❤️ for the Weeek community
This server cannot be deployed
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Official Fibery MCP server: query and update your workspace from any AI client via OAuth.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
- AlicenseCqualityDmaintenanceMCP server for WEEEK Public API v1 enabling management of tasks, projects, boards, tags, custom fields, time tracking, and CRM entities.10059 npmMIT
- AlicenseBqualityDmaintenanceComplete MCP server for Wrike project management with 70+ tools and 20 interactive React apps, enabling task, project, and workflow management via natural language.88MIT
- AlicenseAqualityAmaintenanceAn MCP server that exposes 58 tools for boards, tasks, comments, worklogs, stages, members, invitations, tags, and a personal day planner, letting AI agents manage Kelvia workspaces through natural language.5845 npm1MIT
- AlicenseAqualityBmaintenanceLocal, read-only-by-default MCP server for Weeek that connects AI clients to your workspace over stdio, enabling listing projects, tasks, boards, members, and tags with opt-in write tools for task management.1059 npmMIT