Вечная проблема: переключение между 50 вкладками
Ты когда-нибудь ловил себя на том, что за 15 минут до встречи лихорадочно ищешь письмо с повесткой, дергаешь API Webex, чтобы узнать ссылку, а заодно пытаешься вспомнить, что обсуждали на прошлой неделе? Я — да. И это бесит. У менеджеров и команд это отнимает часы в неделю. Решение — дать AI-агенту прямые руки в виде MCP-серверов.
В этой статье я покажу, как собрать ассистента, который сам вытащит твои upcoming events из Amazon Quick (да, у Amazon есть свой календарный сервис, который на удивление живуч), создаст Webex-ссылку, а после звонка — отправит follow-up с транскриптом и действиями. Никакого переключения между окнами — просто команда в чат.
MCP-сервер как клей между встречами и действиями
Если ты еще не читал статью про MCP протокол — срочно исправляйся. Суть простая: MCP (Model Context Protocol) — это единый интерфейс, через который LLM (Claude, GPT и т.д.) может вызывать внешние инструменты. Вместо того чтобы писать кучу интеграций под каждую систему, мы пишем один MCP-сервер, который предоставляет инструменты для Amazon Quick и Webex.
На практике это выглядит так: Claude говорит "покажи мои встречи на завтра", MCP-сервер дёргает API Amazon Quick, возвращает список, и Claude уже сам решает, что делать дальше. Или: "создай Webex-ссылку на 15:00" — сервер создаёт комнату и возвращает URL. Всё это без человеческого вмешательства, чистой магией агентного подхода. Именно об этом мы говорили в архитектуре Spaceduck.
Собираем в песочнице: MCP Chat Studio
Прежде чем писать сервер, я советую поиграться в MCP Chat Studio v2 — это Postman для MCP-серверов. Там можно подключать любые MCP-серверы, тестировать вызовы инструментов и даже смотреть экспорт в Python. Мы, кстати, используем его для отладки всех наших серверов. Скачай, установи — пригодится.
Пишем MCP-сервер для Webex и Amazon Quick (Python)
Ладно, хватит теории. Открывай терминал и создавай папку meeting-assistant-mcp. Дальше — код. Я покажу минимальную реализацию на базе mcp Python SDK v1.2.0 (последняя на июнь 2026).
1 Структура проекта
meeting-assistant-mcp/
├── server.py
├── requirements.txt
├── .env
└── README.md
2 install dependencies
pip install mcp==1.2.0 httpx python-dotenv
3 Пишем server.py
Не советую копипастить токены прямо в код — используй .env. Кстати, в Self-Aware MCP Server мы поднимали вопрос контекста окружения — здесь аналогично: не забудь про credentials.
# server.py
import os
import json
from datetime import datetime, timedelta
from dotenv import load_dotenv
from mcp.server import Server
from mcp.types import Tool, TextContent
import httpx
load_dotenv()
# Инициализация сервера
app = Server("meeting-assistant")
# --- Инструменты ---
@app.tool()
def get_upcoming_events(days: int = 1) -> list[dict]:
"""
Возвращает события из Amazon Quick на ближайшие N дней.
Использует Amazon Quick Calendar API (гипотетический эндпоинт для примера).
На практике замени на реальный вызов.
"""
# Здесь должен быть вызов Amazon Quick API
# В реальности: response = httpx.get("https://api.quick.amazon.com/events", ...)
# Пока возвращаем тестовые данные
now = datetime.now()
tomorrow = now + timedelta(days=1)
return [
{
"id": "evt_001",
"title": "Sprint Review",
"start": tomorrow.replace(hour=10, minute=0).isoformat(),
"end": tomorrow.replace(hour=11, minute=0).isoformat(),
"attendees": ["alice@corp.com", "bob@corp.com"]
},
{
"id": "evt_002",
"title": "1:1 with Mike",
"start": tomorrow.replace(hour=14, minute=0).isoformat(),
"end": tomorrow.replace(hour=14, minute=30).isoformat(),
"attendees": ["mike@corp.com"]
}
]
@app.tool()
def create_webex_meeting(title: str, start_time: str, duration_minutes: int = 30) -> dict:
"""
Создаёт комнату в Cisco Webex через API и возвращает ссылку.
"""
# Заглушка для Webex API
meeting_data = {
"title": title,
"start": start_time,
"duration": duration_minutes,
"join_url": f"https://webex.com/meet/{title.lower().replace(' ', '-')}-{datetime.now().timestamp():.0f}"
}
# В реальности: POST /v1/meetings с access token
return meeting_data
@app.tool()
def send_follow_up(meeting_id: str, action_items: list[str], summary: str) -> dict:
"""
Отправляет follow-up с резюме и списком действий через Webex Messages API.
"""
message = f"**Meeting Summary**\n\n{summary}\n\n**Action Items**:\n" + "\n".join([f"- {item}" for item in action_items])
# Здесь POST /v1/messages
return {"status": "sent", "meeting_id": meeting_id, "message_preview": message[:50]}
if __name__ == "__main__":
app.run(transport="stdio")
Грабли: Не выноси токены в код! Используй .env или секретный менеджер. В MCP-сервере, который работает через stdio, переменные окружения — твой лучший друг.
4 Запускаем и тестируем
cd meeting-assistant-mcp
python server.py
Теперь в MCP Chat Studio или в Claude Desktop добавь MCP-сервер с командой python server.py. Запрос: "Покажи мои встречи на завтра" — Claude вызовет get_upcoming_events и вернёт результат.
Подключаем к Claude: сценарий использования
Представь реальный workflow. Ты пишешь в чат: "Подготовься к завтрашнему Daily Standup. Если во встрече больше 5 участников — создай Webex-ссылку, иначе используй Amazon Quick. После встречи отправь follow-up с action items, которые мы обсуждали."
Claude получит список событий, выберет подходящее, вызовет create_webex_meeting, а после твоего согласия (если включено подтверждение) — сгенерирует follow-up. Всё за 2 минуты.
Мы описали похожий сценарий в статье Meeting-LLM, но там был полностью локальный стек. Наш подход с MCP-серверами даёт гибкость подключать как облачные, так и on-prem сервисы.
Типичные грабли и как их обойти
- Таймауты API. Amazon Quick и Webex могут быть медленными. Добавь в MCP-сервер
timeout=30в httpx и оберни вызовы в ретраи. - Rate limiting. Не превышай лимиты — иначе получишь 429. Реализуй
asyncс очередью. Загляни в DQ-шаблон с ИИ-агентом — у нас была похожая проблема. - Безопасность. MCP-сервер через stdio работает локально — это плюс. Если решишь выложить его на сервер — используй транспорт SSE и аутентификацию. Не доверяй входным данным от LLM.
- Context window. Если долго общаешься с агентом, он может забыть прошлые вызовы. Подсказывай в prompt системное сообщение о контексте — как в Computer-use MCP.
get_meeting_context, который возвращает историю прошлых митингов по ID. Так ассистент сможет сам подтянуть предыдущие обсуждения — меньше ручной работы.Собери свой MCP-сервер, подключи к любимому AI-клиенту и забудь про хаос предвстречной лихорадки. Если наткнёшься на баги — пиши в комментарии, разберёмся.