MCP-сервер блогу: як підключити статті до Claude Code, Cursor та інших асистентів
Привіт!
У цього блогу є власний MCP-сервер. MCP (Model Context Protocol) — спільний протокол, за яким AI-асистент підключає зовнішні інструменти й дані; його розуміють майже всі сучасні асистенти та агенти для програмування (порівняння AI-агентів). Коли сервер підключено, асистент сам знаходить статтю під ваше запитання й читає її повністю разом із лістингами коду — без пошуку посилання, копіювання тексту та вставляння його в чат.
Адреса і що вміє сервер
- Адреса:
https://mcp.romankryvolapov.com/ - Транспорт: Streamable HTTP. Авторизації немає — ні реєстрації, ні ключа.
- Лише читання: сервер віддає опубліковані статті й більше нічого не вміє; доступу до ваших файлів і даних у нього немає.
| Інструмент | Що робить |
|---|---|
search | шукає по всіх статтях англійською, російською та українською, запит можна писати будь-якою з трьох мов; повертає до 20 статей із заголовком, адресою та фрагментом тексту |
get_page | повертає статтю повністю в markdown за її адресою, наприклад https://romankryvolapov.com/uk/ktor-manual/; лістинги коду збігаються із сайтом байт у байт |
Сервер бере текст із самого сайту й оновлює свій індекс приблизно раз на годину, тож нова стаття знаходиться через годину-дві після публікації.
Як підключити
Ім'я сервера в прикладах нижче — romankryvolapov; воно може бути будь-яким, асистент показує його у списку інструментів.
Claude Code
Одна команда в терміналі, потім перевірка зв'язку:
claude mcp add --transport http --scope user romankryvolapov https://mcp.romankryvolapov.com/claude mcp listЗ --scope user сервер доступний в усіх проєктах; без цього прапорця — лише в поточному. У виводі claude mcp list біля сервера має стояти «✔ Connected», усередині сесії те саме показує команда /mcp. Докладніше про команди й налаштування — у довіднику з Claude Code.
Claude (сайт і застосунок)
У Claude сервер підключається як власний конектор — один раз для акаунта, після чого працює і на сайті, і в застосунку:
- Customize → Connectors → «+ Add» → «Add custom connector».
- Ім'я — будь-яке, адреса —
https://mcp.romankryvolapov.com/, далі «Continue». - У розділі Authentication вибрати «No sign in» і натиснути «Add».
- У чаті: «+» ліворуч унизу → Connectors → увімкнути конектор.
На безкоштовному тарифі можна додати один власний конектор. Звертається до сервера хмара Anthropic, а не ваш комп'ютер, — цьому серверу саме так і треба: він публічний.
Cursor
Файл ~/.cursor/mcp.json підключає сервер до всіх проєктів, .cursor/mcp.json у корені проєкту — лише до нього:
{ "mcpServers": { "romankryvolapov": { "url": "https://mcp.romankryvolapov.com/" } }}Транспорт зазначати не треба: запис із полем url Cursor сам вважає віддаленим сервером.
VS Code (GitHub Copilot)
Найпростіше — командою MCP: Add Server з палітри команд: тип HTTP, потім адреса й ім'я. Вручну — у файлі .vscode/mcp.json проєкту:
{ "servers": { "romankryvolapov": { "type": "http", "url": "https://mcp.romankryvolapov.com/" } }}Тут поле type обов'язкове, а кореневий ключ називається servers, а не mcpServers, як у Cursor і Gemini CLI.
Codex
codex mcp add romankryvolapov --url https://mcp.romankryvolapov.com/Той самий запис вручну, у ~/.codex/config.toml:
[mcp_servers.romankryvolapov]url = "https://mcp.romankryvolapov.com/"Перевірка — codex mcp list у терміналі або /mcp усередині сесії.
Gemini CLI
gemini mcp add --transport http --scope user romankryvolapov https://mcp.romankryvolapov.com/Без --scope user сервер запишеться в налаштування поточного проєкту, .gemini/settings.json. Вручну це виглядає так:
{ "mcpServers": { "romankryvolapov": { "httpUrl": "https://mcp.romankryvolapov.com/" } }}Ключ саме httpUrl: поле url у Gemini CLI означає старий транспорт SSE, і з ним сервер не підключиться.
Інші клієнти
Підійде будь-який клієнт, що вміє підключати віддалені MCP-сервери. Потрібні три речі: адреса https://mcp.romankryvolapov.com/, транспорт Streamable HTTP (у налаштуваннях його називають HTTP або streamable-http) і відсутність авторизації. Та сама інформація в машиночитному вигляді лежить у картці сервера: https://romankryvolapov.com/.well-known/mcp.json.
Як користуватися
Коли викликати інструмент, асистент вирішує сам — за тим, про що ви питаєте. Найнадійніше — назвати блог прямо:
- «Знайди в блозі romankryvolapov.com, як у Ktor підключити Exposed і Koin».
- «Прочитай статтю про хуки Claude Code і склади за нею чек-лист для мого проєкту».
- «Що в блозі написано про LoRA і чим донавчання відрізняється від RAG?»
Асистент спершу викличе search, отримає список статей з адресами, а потім забере потрібну через get_page — повністю, а не переказ із видачі пошуковика.
Перевірити сервер без клієнта
Сервер відповідає на звичайні JSON-RPC-запити, тож перевірити його можна й без асистента — одним запитом із термінала:
curl -s https://mcp.romankryvolapov.com/ \ -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search","arguments":{"query":"Project Loom","limit":3}}}'У відповідь прийде JSON зі знайденими статтями: заголовок, адреса й фрагмент тексту навколо збігу.
Як він влаштований
Сервер — невеликий Cloudflare Worker без бази даних. Під час першого звернення він завантажує із сайту llms-full.txt — повний текст усіх статей у markdown, — ділить його на статті й будує в пам'яті пошуковий індекс BM25: слово тим вагоміше, чим рідше воно трапляється на сайті загалом і чим частіше в конкретній статті. Окрема пошукова бібліотека для цього не потрібна, а сервер віддає рівно те, що опубліковано на сайті, з тими самими лістингами.