Перейти к содержанию

MCP-сервер для ИИ-агентов

Сайт предоставляет MCP-сервер — программный интерфейс для ИИ-агентов. Агент подключается к нему и получает структурированные данные об условиях и решениях задач Чертова А. Г. и Воробьёва А. А.: список глав и параграфов, поиск по условиям, конкретную задачу с ссылкой на решение.

Это не чат-бот и не языковая модель. Каждый ответ — данные из базы; сервер ничего не генерирует и ничего не изменяет.

Адрес сервера

https://www.chertov.org.ua/mcp

Транспорт — Streamable HTTP, метод POST. Авторизация не требуется: сервер доступен только для чтения и отдаёт те же данные, что и обычные страницы сайта.

Подключение

Большинство MCP-клиентов настраивается через JSON. Например:

{
  "mcpServers": {
    "chertov": {
      "type": "http",
      "url": "https://www.chertov.org.ua/mcp"
    }
  }
}

Для Claude Code достаточно одной команды:

claude mcp add --transport http chertov https://www.chertov.org.ua/mcp

Инструменты

Все инструменты доступны только для чтения, не имеют побочных эффектов и безопасны для параллельных вызовов. Поля ответа названы по-английски, значения — на русском.

list_chapters

Map of the whole corpus: every chapter of the Chertov & Vorobyov physics problem book, with its paragraph (§) numbers and how many solved problems it holds. Takes no arguments. Returns JSON: {chapters: [{chapter, name, paragraph_count, paragraphs, paragraph_range, solved_problem_count, page_url}], totals: {chapters, paragraphs, solved_problems}}. Call this first to learn the shape of the corpus.

Без аргументов.

list_paragraphs

Paragraphs (§) of the problem book, optionally restricted to one chapter. Arguments: chapter (optional integer). Returns JSON: {chapter, paragraphs: [{paragraph, name, chapter, chapter_name, solved_problem_count, problem_number_range, page_url}], totals: {paragraphs, solved_problems}}. Paragraph numbers are unique across the whole book, so a paragraph number alone addresses a section.

Аргумент Тип Описание
chapter integer Chapter number to restrict to. Omit for every paragraph in the book.

* — обязательный аргумент.

list_problems

Solved problems of one paragraph (§), paginated and in book order. Arguments: paragraph (required integer), page (optional, default 1), per_page (optional, default 25, max 100). Returns JSON: {paragraph, paragraph_name, chapter, chapter_name, problems: [{label, paragraph, number, chapter, condition, solution_image_url, page_url}], pagination: {page, per_page, total, total_pages}}. `condition` is the problem statement as plain Russian text; the worked solution exists only as the GIF at `solution_image_url`. Problems without a solution are not listed and are not counted.

Аргумент Тип Описание
paragraph* integer Paragraph (§) number. Unique across the whole book; see list_paragraphs.
page integer 1-based page number. Defaults to 1.
per_page integer Results per page, 1 to 100. Defaults to 25.

* — обязательный аргумент.

get_problem

One solved problem, in full. Address it either with paragraph + number, or with label — the spoken form "1.12" (a dot, a dash or a space also work: "1-12", "1 12"). Returns JSON: when found, {found: true, problem: {label, paragraph, number, chapter, condition, solution_image_url, page_url, chapter_name, paragraph_name, chapter_url, paragraph_url, solution_format}}; otherwise {found: false, reason: "not_solved"|"not_found", label, paragraph, number, message}. A missing or unsolved problem is a normal result, not an error — do not retry it.

Аргумент Тип Описание
label string The problem label as it is spoken or written: "1.12", "1-12" or "1 12". Use this OR paragraph + number.
paragraph integer Paragraph (§) number. Give together with `number`, or use `label` instead.
number integer Problem number within the paragraph. Give together with `paragraph`, or use `label` instead.

* — обязательный аргумент.

search_problems

Full-text search over the Russian problem statements. Searches PROBLEMS ONLY — never articles or news. Arguments: query (required string, at least 5 characters once whitespace is removed), page (optional, default 1), per_page (optional, default 25, max 100). Returns JSON: {query, problems: [{label, paragraph, number, chapter, condition, solution_image_url, page_url}], pagination: {page, per_page, total, total_pages}}. Query in Russian — the statements are Russian. A shorter query is rejected with a validation error rather than returning nothing, and LIKE wildcards in the query are matched literally.

Аргумент Тип Описание
query* string Text to look for inside the problem statements, in Russian. At least 5 characters once all whitespace is removed — spaces do not count towards that minimum.
page integer 1-based page number. Defaults to 1.
per_page integer Results per page, 1 to 100. Defaults to 25.

* — обязательный аргумент.

Примеры

Получить задачу 1.12

{"name": "get_problem", "arguments": {"label": "1.12"}}

Номер задачи принимается в виде 1.12, 1-12 или 1 12, либо раздельными аргументами paragraph и number.

{
  "found": true,
  "problem": {
    "label": "1.12",
    "paragraph": 1,
    "number": 12,
    "chapter": 1,
    "condition": "Прожектор О (рис. 1.7) установлен на расстоянии l=100 м от стены АВ…",
    "solution_image_url": "https://static1.chertov.org.ua/reshenia/par1/p01-z12.gif",
    "page_url": "https://www.chertov.org.ua/viev_zadachi.php?par=1&num=12"
  }
}

Найти задачу по условию

{"name": "search_problems", "arguments": {"query": "прямые дороги", "page": 1}}

Поиск идёт только по условиям задач — статьи и новости он не затрагивает. Запрос должен содержать не менее 5 символов без учёта пробелов; более короткий запрос вернёт понятную ошибку, а не пустой результат.

Что важно знать

  • Выдаются только задачи с опубликованным решением. Задачи без решения не попадают ни в один ответ и не учитываются в счётчиках.
  • Решения — отсканированные изображения на static1.chertov.org.ua. Ссылки постоянные, их можно использовать напрямую. Текстовой расшифровки решения нет; условие задачи доступно текстом в поле condition.
  • Несуществующая задача возвращается как обычный ответ с found: false — это ответ, а не ошибка, повторять запрос не нужно.
  • Для агентов, которым удобнее читать документы, есть /llms.txt и markdown-версия каждой задачи.
Поделиться: Telegram X Facebook