AI-Нативний Контроль для Worksection: Клод, Курсор, ChatGPT через М
AI-Нативний Контроль для Worksection: Claude, Cursor, ChatGPT через MCP
Ситуація
Клієнт управляв усією своєю діяльністю в Worksection: завдання, проекти, коментарі, витрати, призначення команди. Їхня команда також повністю перейшла на AI асистентів (Claude, Cursor, ChatGPT) для щоденної роботи. Але ці два світи були відокремлені. AI нічого не знав про Worksection, а Worksection нічого не знав про AI.
Проблема
Кожна взаємодія між цими двома інструментами була ручною. Розробник просив Claude скласти опис завдання, а потім вручну копіював його в Worksection. PM робив скріншот статусу проекту і вставляв його в ChatGPT для підсумування. AI міг думати про роботу, але не міг виконувати її. Цей цикл копіювання-вставки знищив більшість продуктивності, яку клієнт очікував від AI спочатку. Їм потрібно було, щоб AI міг читати і писати в Worksection безпосередньо, з належною аутентифікацією, без спільних облікових даних і без ручної інтеграції для кожного члена команди.
Рішення
Я побудував сервер MCP (Модель Контекст Протоколу) для виробництва, який знаходиться між будь-яким AI клієнтом, сумісним з MCP, і API Worksection. AI викликає названий інструмент, наприклад, post_task або get_projects, а сервер обробляє аутентифікацію, обмеження швидкості, переклад даних та формування відповіді.
Це постачається як багатокористувацький SaaS: кожна команда реєструється один раз, отримує свої власні зашифровані облікові дані та OAuth клієнтів і підключає Claude або Cursor за допомогою одного URL. Панель адміністратора (React + Vite) дозволяє оператору керувати орендарями, обертати секрети OAuth, налаштовувати обмеження швидкості для кожного орендаря та бачити, які інструменти викликаються і як часто.
Три технічні рішення визначили побудову. По-перше, API Worksection аутентифікується лише з рядка запиту URL (тіла POST ігноруються його хеш-валідатором), тому кожен вихідний виклик використовує двоетапне кодування: сирий рядок для MD5 хешування, повторно закодований рядок для транспорту. По-друге, кожен ключ API орендаря зашифрований у спокої за допомогою AES-256-GCM; відкритий текст ніколи не потрапляє в базу даних. По-третє, відповіді API активно стискаються перед поверненням до AI, оскільки сирі дані Worksection можуть переповнити вікно контексту моделі на великих проектах.
Технічний стек: Node.js 20, TypeScript, Express, @ modelcontextprotocol/sdk, Supabase (PostgreSQL), OAuth2, AES-256-GCM, Zod, Winston, React, Vite, Docker, nginx, Hetzner VPS.
Результати
26 інструментів MCP працюють у виробництві в 7 категоріях: завдання, проекти, коментарі, учасники, витрати, теги, файли
Багатокористувацький SaaS з аутентифікацією OAuth2, обмеженнями швидкості для кожного орендаря та зашифрованими обліковими даними
Нульове копіювання-вставка між AI асистентом і Worksection для щоденних проектних операцій
30-денні токени OAuth, налаштовані спеціально для шаблонів використання AI клієнтів (без тихих 401 помилок під час сесії)
Панель адміністратора з управлінням орендарями, обертанням секретів OAuth та аналітикою використання по інструментах за 7/30/90 днів
Виробничо-стійкий: розгортання Docker, реверсний проксі nginx, точка здоров'я з метаданими збірки, структуроване логування
Активний у виробництві, обслуговуючи реальних орендарів на живому VPS
Як це працює
1. Орендар реєструється зі своїм URL Worksection та ключем API; сервер шифрує ключ і надсилає електронний лист з підтвердженням OTP
2. Орендар підтверджує через OTP, обліковий запис активується
3. AI клієнт (Claude, Cursor, ChatGPT) аутентифікується через OAuth2 і отримує 30-денний токен доступу
4. AI викликає інструмент (наприклад, post_task); сервер перевіряє токен доступу і знаходить орендаря з кешу
5. Сервер перекладає виклик на запит GET Worksection з MD5-хешованою аутентифікацією, повторює з затримкою у разі невдачі
6. Стиснута відповідь повертається до AI; використання реєструється в Supabase для аналітики
Ситуація
Клієнт управляв усією своєю діяльністю в Worksection: завдання, проекти, коментарі, витрати, призначення команди. Їхня команда також повністю перейшла на AI асистентів (Claude, Cursor, ChatGPT) для щоденної роботи. Але ці два світи були відокремлені. AI нічого не знав про Worksection, а Worksection нічого не знав про AI.
Проблема
Кожна взаємодія між цими двома інструментами була ручною. Розробник просив Claude скласти опис завдання, а потім вручну копіював його в Worksection. PM робив скріншот статусу проекту і вставляв його в ChatGPT для підсумування. AI міг думати про роботу, але не міг виконувати її. Цей цикл копіювання-вставки знищив більшість продуктивності, яку клієнт очікував від AI спочатку. Їм потрібно було, щоб AI міг читати і писати в Worksection безпосередньо, з належною аутентифікацією, без спільних облікових даних і без ручної інтеграції для кожного члена команди.
Рішення
Я побудував сервер MCP (Модель Контекст Протоколу) для виробництва, який знаходиться між будь-яким AI клієнтом, сумісним з MCP, і API Worksection. AI викликає названий інструмент, наприклад, post_task або get_projects, а сервер обробляє аутентифікацію, обмеження швидкості, переклад даних та формування відповіді.
Це постачається як багатокористувацький SaaS: кожна команда реєструється один раз, отримує свої власні зашифровані облікові дані та OAuth клієнтів і підключає Claude або Cursor за допомогою одного URL. Панель адміністратора (React + Vite) дозволяє оператору керувати орендарями, обертати секрети OAuth, налаштовувати обмеження швидкості для кожного орендаря та бачити, які інструменти викликаються і як часто.
Три технічні рішення визначили побудову. По-перше, API Worksection аутентифікується лише з рядка запиту URL (тіла POST ігноруються його хеш-валідатором), тому кожен вихідний виклик використовує двоетапне кодування: сирий рядок для MD5 хешування, повторно закодований рядок для транспорту. По-друге, кожен ключ API орендаря зашифрований у спокої за допомогою AES-256-GCM; відкритий текст ніколи не потрапляє в базу даних. По-третє, відповіді API активно стискаються перед поверненням до AI, оскільки сирі дані Worksection можуть переповнити вікно контексту моделі на великих проектах.
Технічний стек: Node.js 20, TypeScript, Express, @ modelcontextprotocol/sdk, Supabase (PostgreSQL), OAuth2, AES-256-GCM, Zod, Winston, React, Vite, Docker, nginx, Hetzner VPS.
Результати
26 інструментів MCP працюють у виробництві в 7 категоріях: завдання, проекти, коментарі, учасники, витрати, теги, файли
Багатокористувацький SaaS з аутентифікацією OAuth2, обмеженнями швидкості для кожного орендаря та зашифрованими обліковими даними
Нульове копіювання-вставка між AI асистентом і Worksection для щоденних проектних операцій
30-денні токени OAuth, налаштовані спеціально для шаблонів використання AI клієнтів (без тихих 401 помилок під час сесії)
Панель адміністратора з управлінням орендарями, обертанням секретів OAuth та аналітикою використання по інструментах за 7/30/90 днів
Виробничо-стійкий: розгортання Docker, реверсний проксі nginx, точка здоров'я з метаданими збірки, структуроване логування
Активний у виробництві, обслуговуючи реальних орендарів на живому VPS
Як це працює
1. Орендар реєструється зі своїм URL Worksection та ключем API; сервер шифрує ключ і надсилає електронний лист з підтвердженням OTP
2. Орендар підтверджує через OTP, обліковий запис активується
3. AI клієнт (Claude, Cursor, ChatGPT) аутентифікується через OAuth2 і отримує 30-денний токен доступу
4. AI викликає інструмент (наприклад, post_task); сервер перевіряє токен доступу і знаходить орендаря з кешу
5. Сервер перекладає виклик на запит GET Worksection з MD5-хешованою аутентифікацією, повторює з затримкою у разі невдачі
6. Стиснута відповідь повертається до AI; використання реєструється в Supabase для аналітики