Как MCP-сервер решает проблему интеграции AI-агентов?
Представьте: 50 менеджеров по продажам тратят в среднем 15 минут на сбор информации о клиенте перед звонком. В месяц это 500 часов непродуктивной работы. Они переключаются между Claude и CRM, вручную копируют данные, теряют фокус. MCP-сервер решает эту проблему — даёт AI-агенту прямой доступ к корпоративным данным через единый протокол. Время подготовки сокращается на 73%.
Мы разрабатываем кастомные MCP-серверы под ключ. Берём на себя полный цикл: от проектирования до деплоя и документирования. Гарантируем безопасность и совместимость с любыми MCP-клиентами (Claude, Cursor, собственные агенты). Опыт — более пяти лет в AI-интеграциях и 50+ успешных проектов.
MCP-сервер выступает мостом: вы описываете tools (функции), resources (данные) и prompts (шаблоны), и агент вызывает их как обычные методы. Один сервер — один раз реализовали, работает со всеми MCP-клиентами.
Почему HTTP+SSE транспорт предпочтительнее для продакшена?
| Транспорт | Когда использовать | Скорость | Безопасность |
|---|---|---|---|
| stdio | Локальная разработка, отладка | Максимальная | Нет встроенной аутентификации |
| HTTP+SSE | Удалённый доступ, продакшен | Высокая | JWT, OAuth2, API-ключи |
Для продакшена мы всегда выбираем HTTP+SSE с авторизацией — это гарантирует, что данные не утекут за пределы корпоративной сети. При этом stdio транспорт быстрее в 2-3 раза по задержкам, но не масштабируется.
Пример MCP-сервера на Python с двумя транспортами
Ниже — минимальный MCP-сервер на Python, который предоставляет инструменты для работы с CRM. Библиотека mcp (FastMCP) позволяет определять tools, resources и prompts в пару строк.
# pip install mcp
from mcp.server.fastmcp import FastMCP
from mcp import types
import json
mcp = FastMCP("Corporate CRM Server")
@mcp.tool()
async def search_customers(
query: str,
limit: int = 10,
status: str = "active",
) -> list[dict]:
"""Поиск клиентов в CRM по имени или компании."""
results = await crm_db.search(
query=query,
limit=min(limit, 50),
status=status,
)
return [{"id": r.id, "name": r.name, "company": r.company, "email": r.email}
for r in results]
@mcp.tool()
async def get_customer_orders(customer_id: str, months: int = 3) -> dict:
"""История заказов клиента."""
orders = await orders_db.get_for_customer(customer_id, months=months)
return {
"customer_id": customer_id,
"total_orders": len(orders),
"total_revenue": sum(o.amount for o in orders),
"orders": [{"id": o.id, "date": str(o.date), "amount": o.amount, "status": o.status}
for o in orders[:20]],
}
@mcp.tool()
async def create_task(
customer_id: str, title: str, description: str, assignee: str, due_date: str,
) -> dict:
"""Создать задачу в CRM."""
task = await crm_tasks.create(...)
return {"task_id": task.id, "url": task.url}
@mcp.resource("crm://dashboards/{dashboard_id}")
async def get_dashboard(dashboard_id: str) -> str:
data = await crm_analytics.get_dashboard(dashboard_id)
return json.dumps(data, ensure_ascii=False, indent=2)
@mcp.resource("crm://segments")
async def list_segments() -> str:
segments = await crm_db.get_segments()
return json.dumps([{"id": s.id, "name": s.name, "count": s.count}], ensure_ascii=False)
@mcp.prompt()
def customer_analysis_prompt(customer_id: str) -> list[types.PromptMessage]:
return [
types.PromptMessage(
role="user",
content=types.TextContent(
type="text",
text=f"Проведи полный анализ клиента {customer_id}:\n1. История заказов и тренды\n2. Риск оттока\n3. Upsell\n4. Рекомендации"
),
)
]
if __name__ == "__main__":
mcp.run()
Если нужно запустить сервер удалённо — используем HTTP+SSE транспорт. Это позволяет подключать агентов из любого места, с авторизацией через JWT.
from mcp.server.fastmcp import FastMCP
from fastapi import FastAPI
import uvicorn
mcp = FastMCP("Remote CRM Server")
# ... tools, resources ...
app = mcp.get_asgi_app()
from fastapi.middleware.base import BaseHTTPMiddleware
class AuthMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request, call_next):
token = request.headers.get("Authorization", "").replace("Bearer ", "")
if not await verify_token(token):
return Response(status_code=401)
return await call_next(request)
app.add_middleware(AuthMiddleware)
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8080)
Кейс: интеграция MCP-сервера с Bitrix24 для отдела продаж
Из нашей практики: компания с 50 менеджерами по продажам. Они активно используют Claude для подготовки к встречам, но каждый раз вручную ищут информацию в Bitrix24. Это отнимало в среднем 15 минут на звонок.
Мы развернули один MCP-сервер на корпоративном сервере, подключили его к REST API Bitrix24. Сервер предоставляет инструменты: поиск клиентов по имени, история сделок, создание задач, аналитика по сегментам. Каждый менеджер подключается через Claude Desktop — после авторизации AI-агент сам получает нужные данные.
Результаты:
- Время подготовки к звонку сократилось с 15 до 4 минут (экономия 73%)
- Переключение между системами снизилось на 83%
- Внедрение прошло без обучения — Claude понимает естественные вопросы
Процесс разработки и сроки
| Этап | Длительность | Результат |
|---|---|---|
| Анализ и проектирование | 1–2 дня | Архитектура, спецификация tools/resources |
| Разработка MCP-сервера | 2–5 дней | Рабочий сервер с выбранным транспортом |
| Интеграция с системой заказчика | 1–3 дня | Подключение к CRM/ERP |
| Тестирование и деплой | 1–2 дня | Документация, мониторинг, обучение команды |
Базовый сервер на stdio — от 1 дня. Полноценная интеграция с HTTP+SSE и авторизацией — от 5 дней. Точные сроки обсуждаются после анализа вашего API.
Распространенные ошибки при разработке MCP-сервера
- Неправильная обработка авторизации: не все инструменты защищены.
- Отсутствие rate limiting: агент может заспамить CRM.
- Слишком большие ответы: для resources нужно ограничивать размер.
- Игнорирование версионирования: протокол MCP эволюционирует, нужно следить за совместимостью.
Какие риски безопасности нужно учесть?
При разработке MCP-сервера критически важна защита от prompt injection и утечек данных. Мы используем JWT-авторизацию на уровне каждого инструмента, валидацию входных параметров и rate limiting для предотвращения злоупотреблений. Дополнительно настраивается HTTPS и изоляция ресурсов. Для высоконагруженных систем проводим нагрузочное тестирование с контролем latency p99 — время ответа сервера не должно превышать 200 мс.
Мы занимаемся AI-интеграциями более пяти лет, выполнили 50+ проектов для компаний от стартапов до enterprise. Используем проверенный стек: Python/TypeScript, авторизация через JWT, готовая интеграция с MCP SDK. Гарантируем безопасность и совместимость. Свяжитесь с нами для оценки вашего проекта — мы подготовим коммерческое предложение за 1 рабочий день. Закажите разработку MCP-сервера под ключ и экономьте часы ваших менеджеров.







