Skip to main content
Glama
Congenital

remote-skill-mcp

by Congenital

remote-skill-mcp

Динамически предоставляет файлы навыков ( skill.md и его подфайлы) с удалённого HTTP-сервиса как инструменты, ресурсы и промпты MCP (Model Context Protocol), позволяя любому MCP-клиенту (Claude Desktop, Cursor, LobeHub и др.) напрямую читать удалённую документацию навыков через stdio.

Python MCP SDK Transport License

📖 English documentation / Английская документация: README.en.md

Реализация на основе стандартного MCP SDK с рантаймом FastMCP (не рукописный слой JSON-RPC-протокола), полностью соответствует спецификации MCP, может быть напрямую подключена любым MCP-клиентом и адаптирована для LobeHub MCP Market (см. lhm.plugin.json).


Принцип работы (ленивая загрузка, экономия контекста)

┌─────────────┐   stdio (newline-delimited JSON-RPC)   ┌──────────────────┐
│  MCP 客户端  │ ◄────────────────────────────────────► │   server.py      │
│ (Claude等)  │      initialize / tools/* /            │  (本仓库)         │
└─────────────┘      resources/* / prompts/*          └────────┬─────────┘
                                                                 │ HTTP GET/HEAD
                                                                 ▼
                                                      ┌─────────────────────┐
                                                      │ 远程 SimpleHTTP 服务 │
                                                      │  /skill.md          │
                                                      │  /image/*.md 等子文件│
                                                      └─────────────────────┘

При запуске (lifespan, ленивая загрузка):

  1. Из REMOTE_SKILL_BASE_URL загружается skill.md (лёгкий каталог возможностей, описывающий, какие направления навыков существуют);

  2. Выполняется парсинг markdown-ссылок / изображений / голых токенов файлов / имён каталогов, для каждой ссылки выполняется HEAD-проверка (без загрузки содержимого):

    • Ссылка — файл → записывается путь + mime/size;

    • Ссылка — каталог → GET его HTML-страницы списка, перечисленные файлы записываются (без рекурсивной загрузки содержимого файлов);

    • Голые имена файлов с 404 автоматически повторяются в известных каталогах;

  3. Динамически генерируются MCP-объекты (description содержит только список путей, без содержимого, чтобы избежать раздувания контекста):

    • Инструмент get_skill_file(path) — получение содержимого файла по требованию по пути;

    • Ресурсы skill://<относительный путь> — по одному ресурсу на каждый обнаруженный файл (загрузка только при read; текст встраивается инлайн, бинарные файлы — в base64);

    • Промпты skill / list_skills — возвращают полный текст skill.md / сводку каталога возможностей.

Таким образом, агент в обычном режиме видит только «какие направления навыков существуют» и загружает подробную документацию только когда реально использует конкретный навык, избегая загрузки всех деталей навыков в контекст единовременно. Если skill.md не перечисляет все файлы напрямую и требуется углубление в каталоги, можно установить MCP_DISCOVER_DEPTH>=1 для рекурсивного обхода N уровней (при этом загружается содержимое промежуточных уровней для парсинга дополнительных ссылок).


Related MCP server: skills-mcp-server

Возможности

  • ✅ Реализовано на основе стандартного MCP SDK (FastMCP), полностью соответствует спецификации MCP, транспорт stdio

  • Ленивая загрузка: при запуске читается только skill.md, для подфайлов записываются только пути, содержимое загружается по требованию (экономия контекста)

  • ✅ Динамическое обнаружение: HEAD-проверка файлов + GET страниц списков каталогов, парсинг ссылок/изображений/голых файлов/имён каталогов из skill.md

  • ✅ Повтор при 404: автоматический повтор неудачных путей в известных каталогах

  • ✅ Определение MIME: при content-type = application/octet-stream выполняется откат по расширению (.md и т.п. всё равно обрабатываются как текст)

  • ✅ Три способа предоставления: инструменты / ресурсы / промпты (description содержит только список путей, без содержимого)

  • ✅ Защита от больших файлов: чтение отклоняется при превышении MCP_MAX_FILE_BYTES

  • ✅ Логи идут только в stderr, stdout используется только для сообщений протокола

  • ✅ Ошибки инструментов возвращаются с isError=True (соответствует соглашению MCP, клиент не выбрасывает исключения)

  • ✅ Адаптировано для LobeHub MCP Market: включает манифест lhm.plugin.json, метаданные pyproject.toml, лицензию MIT


Предоставляемые возможности MCP

Тип

Название

Описание

Инструмент

get_skill_file(path)

Чтение содержимого файла по пути (текст/изображение/бинарный base64)

Ресурс

skill://<относительный путь>

По одному URI ресурса на каждый обнаруженный файл, доступен через resources/read

Промпт

skill

Возвращает полный текст skill.md (можно указать подфайл параметром file)

Промпт

list_skills

Возвращает сводку доступных направлений навыков (список файлов)


Установка

cd remote_skill_mcp
pip install -r requirements.txt

Зависимости: mcp (типы протокола + транспорт stdio + рантайм FastMCP), httpx (HTTP-клиент).


Конфигурация (переменные окружения)

Переменная

Значение по умолчанию

Описание

REMOTE_SKILL_BASE_URL

http://192.168.2.6:4000

Корневой адрес удалённого сервиса

SKILL_FILE

skill.md

Входной файл навыков (относительно BASE_URL)

MCP_MAX_FILE_BYTES

524288 (512КБ)

Максимальный размер одного файла, при превышении — отказ

MCP_MAX_FILES

200

Верхний предел количества записываемых файлов

MCP_TIMEOUT

30

Таймаут одного HTTP-запроса (секунды)

MCP_DISCOVER_DEPTH

0

Глубина обнаружения: 0=только skill.md (по умолчанию, максимально экономно); >=1 рекурсивно N уровней

MCP_CACHE_READS

false

Кэшировать ли содержимое прочитанных файлов (экономит повторные запросы, но занимает память)


Запуск

Прямой запуск (отладка)

export REMOTE_SKILL_BASE_URL=http://192.168.2.6:4000
python server.py

После запуска сервис блокируется в ожидании ввода через stdio.

Подключение к MCP-клиенту

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "remote-skill": {
      "command": "python",
      "args": ["/绝对路径/remote_skill_mcp/server.py"],
      "env": {
        "REMOTE_SKILL_BASE_URL": "http://192.168.2.6:4000"
      }
    }
  }
}

Cursor / другие клиенты, поддерживающие stdio MCP, аналогично — запустите server.py как дочерний процесс.


Публикация в LobeHub MCP Market

Репозиторий уже содержит манифест рынка lhm.plugin.json (полный набор identifier/name/version/author/homepage/icon/category/tags/description/tools/prompts/resources).

  1. Убедитесь, что репозиторий запушен в GitHub (origin = git@github.com:Congenital/remote_skill_mcp.git);

  2. Установите CLI рынка (требуется Node.js ≥ 22) и войдите:

    npx -y @lobehub/market-cli login
    npx -y @lobehub/market-cli github connect
  3. Опубликуйте (читает lhm.plugin.json из корня репозитория):

    npx -y @lobehub/market-cli plugin publish https://github.com/Congenital/remote_skill_mcp

    Обновление версии в дальнейшем: npx -y @lobehub/market-cli plugin update (достаточно изменить version в lhm.plugin.json).

Рынок ранжирует по таким параметрам, как активность / стабильность / отзывы сообщества. В манифесте уже заполнены поля автор, домашняя страница, иконка, категория, теги, инструменты/промпты/ресурсы для повышения оценки полноты.


Тестирование

python tests/e2e_test.py

Сквозной тест запускает сервер через mcp.ClientSession и проверяет полный цикл initialize / tools/list / tools/call (включая ошибку при недопустимом пути) / resources/list / resources/read / prompts/list / prompts/get (skill + list_skills).


Структура каталогов

remote_skill_mcp/
├── server.py            # MCP 服务(FastMCP 运行时 + 发现 + 工具/资源/提示词)
├── lhm.plugin.json      # LobeHub MCP 市场清单
├── pyproject.toml       # 项目元数据(名称/版本/作者/许可/入口点)
├── LICENSE              # MIT 许可
├── requirements.txt
├── README.md            # 中文文档
├── README.en.md         # 英文文档
└── tests/
    └── e2e_test.py      # 端到端测试

Требования к удалённому сервису

  • HTTP-сервис, позволяющий статически перечислять/скачивать файлы (например, python -m http.server);

  • В корневом каталоге должен быть skill.md (или укажите входной файл через SKILL_FILE);

  • Подфайлы указываются относительными путями (поддерживаются markdown-ссылки, изображения, голые имена файлов, формат имя_каталога:).


Лицензия

MIT © Congenital

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Converts AI Skills (following Claude Skills format) into MCP server resources, enabling LLM applications to discover, access, and utilize self-contained skill directories through the Model Context Protocol. Provides tools to list available skills, retrieve skill details and content, and read supporting files with security protections.
    3
    27
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    MCP server that serves agent skills (SKILL.md bundles) to any MCP client, exposing them via tools and resources for tool-oriented and resource-aware clients.
    3
    20
    ISC
  • A
    license
    Not graded
    quality
    C
    maintenance
    Serves SKILL.md-based skills as MCP resources and tools over streamable HTTP, enabling remote discovery and retrieval of skill files with full YAML frontmatter parsing.
    Apache 2.0

View all related MCP servers

Related MCP Connectors

  • Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.

  • Access Kernel's cloud-based browsers and app actions via MCP (remote HTTP + OAuth).

  • MCP server for skill documentation, generated by doc2mcp.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Congenital/remote_skill_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server