глава 04
Свой MCP-сервер
Когда готового сервера под вашу систему нет, его пишут самостоятельно. У Anthropic есть официальные SDK на TypeScript и Python - они берут на себя протокол, а вы описываете возможности.
Что вы определяете
Главное - это tools. Каждый tool - это функция с понятным описанием и параметрами. Описание важно: именно по нему модель понимает, когда инструмент применить. Плохое описание - модель не вызовет инструмент или вызовет невпопад.
Минимальный пример
Концептуально на Python это выглядит так - один сервер с одним инструментом:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("my-server")
@mcp.tool()
def get_order_status(order_id: str) -> str:
"""Вернуть статус заказа по его номеру."""
# здесь поход в вашу систему
return lookup_status(order_id)
if __name__ == "__main__":
mcp.run()
Строка документации под функцией - это и есть описание для модели. После запуска и подключения в конфиге клиент увидит инструмент get_order_status и сможет его вызвать, когда пользователь спросит про статус заказа.
Как это видит клиент
Клиент при старте спрашивает сервер о возможностях и получает список инструментов с описаниями и параметрами. Дальше модель сама решает, нужно ли вызвать get_order_status, и с каким order_id. Клиент исполняет вызов и возвращает результат модели в диалог.
Когда писать свой
- Есть внутренняя система или API, которых нет в готовых серверах.
- Нужна специфичная логика: свои правила, доступы, форматы.
- Хотите дать команде один общий сервер под рабочие процессы.