Weeek MCP Server
Click on "Install 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: weeek-mcp
🛠 Установка
Требования
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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AlekMel/weeek-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server