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-версия каждой задачи.