stepik-courses-mcp
Read-only MCP server that retrieves educational context from started Stepik courses, offering tools to list courses, explore structure, fetch text step content, and perform local lexical search.
README
Stepik Courses Retrieval MCP
Read-only MCP-сервер: агент собирает учебный контекст из started courses Stepik (только text steps).
Сервер даёт тонкие GET-примитивы. Оркестрацию (decompose → select → fetch → gap-fill) держит host/skill, не один «толстый» tool.
Репозиторий: https://github.com/lifefucky/mcp_read_stepik
Нужен uv в PATH (MCP стартует через uvx, Python 3.11+ подтянется сам). Skill ставится отдельно и не запускает Python-сервер.
Установка в агент
Это git-marketplace репозитория, не official catalog (Cursor Marketplace / claude-plugins-official / openai-curated).
# Cursor
/add-plugin https://github.com/lifefucky/mcp_read_stepik
# либо Customize → Plugins → Import marketplace → тот же URL, затем Install plugin stepik-courses
# Claude Code
/plugin marketplace add lifefucky/mcp_read_stepik
/plugin install stepik-courses@stepik-courses
# Codex
codex plugin marketplace add lifefucky/mcp_read_stepik
# OpenCode (только skill; MCP — в вашем opencode.json)
npx skills add lifefucky/mcp_read_stepik -a opencode
# fallback: skill во все обнаруженные агенты (без MCP)
npx skills add lifefucky/mcp_read_stepik
После установки plugin введите CLIENT_ID и CLIENT_SECRET в UI хоста (Plugins → Configure / MCP settings). Не правьте файлы проекта и не вставляйте секреты в чат.
Учётные данные Stepik
Приложение OAuth, grant client-credentials. Создайте его так:
- Откройте https://stepik.org/oauth2/applications/ — страница «Ваши приложения».
- Нажмите «Новое приложение».
- Client type:
confidential. - Authorization Grant Type:
client-credentials. - Остальные поля заполняются сами; сохраните приложение и скопируйте
CLIENT_ID/CLIENT_SECRET.
Справка Stepik: OAuth applications.
MCP одной командой
Пока пакет не на PyPI:
uvx --from git+https://github.com/lifefucky/mcp_read_stepik stepik-mcp
После публикации на PyPI: uvx stepik-courses-mcp (тот же entry point).
Транспорт v1: stdio. При старте preflight проверяет /api/user-courses и завершает процесс, если started courses недоступны.
Локальный FTS-индекс: user-dir (%LOCALAPPDATA%/stepik-mcp/ или XDG stepik-mcp/) либо STEPIK_INDEX_DB. Fingerprint — STEPIK_INDEX_IDENTITY или hash CLIENT_ID, не bearer-токен.
Host config
Креды задаются полями env в UI хоста (не JSON в git). Пример формы, которую хост сохраняет у себя:
{
"mcpServers": {
"stepik-courses": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/lifefucky/mcp_read_stepik",
"stepik-mcp"
],
"env": {
"CLIENT_ID": "${CLIENT_ID}",
"CLIENT_SECRET": "${CLIENT_SECRET}"
}
}
}
}
${CLIENT_ID} / ${CLIENT_SECRET} — плейсхолдеры plugin variables, не shell ${env:...}.
OpenCode: skill через npx skills add lifefucky/mcp_read_stepik -a opencode. MCP в вашем opencode.json (не в этом репозитории), те же command / args / env.
Tools
| Tool | Назначение |
|---|---|
list_started_courses |
started courses; fail-fast если пусто |
get_course_structure |
sections → units → lessons; только started |
get_lesson_steps_meta |
step id / position / type / text_capable; только started |
get_step_content |
text-only + metadata + lesson_url; только started |
refresh_search_index |
явное обновление локального FTS-индекса |
search_lessons |
weighted lexical search: score / matched_fields / snippet |
Рекомендуемый путь: refresh_search_index → search_lessons → get_step_content. Browse-fallback: list_started_courses → get_course_structure → get_lesson_steps_meta → get_step_content.
Resources: stepik://course/{id}/outline, stepik://lesson/{id}/step/{position}, stepik://guide/retrieval.
Prompts: gather_course_context, gap_fill_pass (тонкие шаблоны; процедура в skills/stepik-course-retrieval/SKILL.md).
Ограничения v1: только started courses под текущими кредами; только text steps; course/lesson вне allowlist → отказ.
Inspector и разработка из исходников
Inspector — для локального checkout (креды в env процесса или корневой .env; перечень имён — .env.example):
HOST=127.0.0.1 npx @modelcontextprotocol/inspector@latest --web mcp_server/run_inspector.cmd
Launcher: mcp_server/run_inspector.cmd (python -m mcp_server.server, preflight отключён). На Windows, если localhost уходит в IPv6, задайте $env:HOST="127.0.0.1".
Из исходников (не основной UX): pip install -e ., затем stepik-mcp или python -m mcp_server.server. Креды — env процесса (CLIENT_ID / CLIENT_SECRET или STEPIK_*), иначе fallback корневой .env.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.