Octocode MCP

Octocode MCP

от bgauryy
Octocode — MCP сервер для доказательного исследования кода. Он объединяет 13 инструментов: поиск по GitHub, локальный поиск, AST, LSP, чтение файлов и репозиториев. Помогает AI-агентам и разработчи...

Octocode - Agentic Research Platform

Octocode Logo

MCP Community Server Ask DeepWiki

Website YouTube

Evidence-first code research for AI agents and developers.

Octocode gives an agent the full context it needs to change, review, or explain code: real evidence from your local workspace and from external sources (GitHub repositories, pull requests, and npm packages). One toolset covers all of it: ripgrep and AST structural search, repository tree browsing, precise content fetching, LSP semantic navigation, and binary inspection.

Run it as a CLI or an MCP server. A Rust engine keeps every call fast and token-efficient, minifying and skeletonizing code so an agent reads the shape of a file instead of every byte, from a single file to a mega-repo. It is also the best tool for cross-repository research and exploration across millions of repositories.


Table of Contents

  • Quick Start
  • Why Octocode
  • What You Can Do
  • Tools
  • MCP
  • CLI
  • Configuration
  • Authentication Methods
  • Security
  • Language Support
  • Skills
  • Architecture
  • Documentation
  • Troubleshooting

Quick Start

1. Run the Octocode CLI with npx

ghGetFileContentтолько чтениеидемпотентныйвнешний мир

GitHub | Читает файл или конкретную область из репозитория GitHub. | Читает один файл, совпадающий фрагмент, диапазон строк или каталог на основе клона. Используйте matchRanges[].start/end в качестве LSP-якорей строк. Рабочий процесс ориентации: неизвестный или большой файл → сначала minify:"symbols" (структура символов + номера строк, низкая стоимость токенов) → затем читайте точные области с помощью startLine/endLine или matchString. Используйте minify:"none" только для цитат, регулярных выражений или diff-ов, где важен пробел. isPartial:true означает продолжать с charOffset из pagination.nextCharOffset. type:"directory" требует ENABLE_CLONE в конфигурации MCP-сервера; в противном случае используйте ghViewRepoStructure для просмотра дерева. 404: проверьте путь (точный регистр, без ведущего слеша) и ветку, или выведите дерево с помощью ghViewRepoStructure. Для type:"directory": результат включает localPath и параметры next.localSearch / next.viewStructure - передайте localPath в localSearchCode или localViewStructure для дальнейшего анализа.

GitHub | Читает файл или конкретную область из репозитория GitHub. | Читает один файл, совпадающий фрагмент, диапазон строк или каталог на основе клона. Используйте matchRanges[].start/end в качестве LSP-якорей строк. Рабочий процесс ориентации: неизвестный или большой файл → сначала minify:"symbols" (структура символов + номера строк, низкая стоимость токенов) → затем читайте точные области с помощью startLine/endLine или matchString. Используйте minify:"none" только для цитат, регулярных выражений или diff-ов, где важен пробел. isPartial:true означает продолжать с charOffset из pagination.nextCharOffset. type:"directory" требует ENABLE_CLONE в конфигурации MCP-сервера; в противном случае используйте ghViewRepoStructure для просмотра дерева. 404: проверьте путь (точный регистр, без ведущего слеша) и ветку, или выведите дерево с помощью ghViewRepoStructure. Для type:"directory": результат включает localPath и параметры next.localSearch / next.viewStructure - передайте localPath в localSearchCode или localViewStructure для дальнейшего анализа.

Параметры

  • queriesobject[]обязательный

    Parallel queries.

  • responseCharOffsetinteger

    Full-response char offset; re-call with returned value when hasMore.

  • responseCharLengthinteger

    Full-response char window.

ghHistoryResearchтолько чтениеидемпотентныйвнешний мир

GitHub | Поиск и чтение GitHub pull request'ов и истории коммитов. `type:"prs"` ищет PR; добавьте `prNumber`, чтобы прочитать выбранное содержимое. `type:"commits"` читает историю `owner/repo/path`. `type:"issues"` ищет или читает GitHub issues; добавьте `issueNumber`, чтобы прочитать конкретный issue (тело + комментарии). `type:"releases"` выводит список релизов репозитория. Используйте `concise:true` для триажа; археология: `state:"merged"` + `sort:"created"` + `order:"asc"`. Тело/патчи разбиваются по страницам через `charOffset`, комментарии — через `commentBodyOffset`, списки — через `contentPagination` pages. Пустой результат: расширьте фильтры `date`/`state`/`author` или перепроверьте написание `owner`/`repo`/`branch`.

GitHub | Поиск и чтение GitHub pull request'ов и истории коммитов. `type:"prs"` ищет PR; добавьте `prNumber`, чтобы прочитать выбранное содержимое. `type:"commits"` читает историю `owner/repo/path`. `type:"issues"` ищет или читает GitHub issues; добавьте `issueNumber`, чтобы прочитать конкретный issue (тело + комментарии). `type:"releases"` выводит список релизов репозитория. Используйте `concise:true` для триажа; археология: `state:"merged"` + `sort:"created"` + `order:"asc"`. Тело/патчи разбиваются по страницам через `charOffset`, комментарии — через `commentBodyOffset`, списки — через `contentPagination` pages. Пустой результат: расширьте фильтры `date`/`state`/`author` или перепроверьте написание `owner`/`repo`/`branch`.

Параметры

  • queriesobject[]обязательный

    Parallel queries.

  • responseCharOffsetinteger

    Full-response char offset; re-call with returned value when hasMore.

  • responseCharLengthinteger

    Full-response char window.

ghSearchCodeтолько чтениеидемпотентныйвнешний мир

Github | Поиск по содержимому кода или путям файлов в репозиториях GitHub. | Используйте match:"path" для дешёвого поиска файлов; используйте match:"file" только когда нужны фрагменты. Поиск выполняется только по ветке по умолчанию и с ограничениями; сужайте запрос через owner/repo/path/extension/filename. matchIndices — это смещения фрагментов, а не номера строк. Пустой результат: репозиторий может быть не проиндексирован или содержит только ветку по умолчанию — не утверждайте, что файл отсутствует. Проверьте существование пути через structure, затем используйте ограниченное локальное подтверждение: search "term" path --repo owner/repo --materialize required, clone owner/repo[/path] или cache fetch owner/repo [path] --depth file|tree|clone.

Github | Поиск по содержимому кода или путям файлов в репозиториях GitHub. | Используйте match:"path" для дешёвого поиска файлов; используйте match:"file" только когда нужны фрагменты. Поиск выполняется только по ветке по умолчанию и с ограничениями; сужайте запрос через owner/repo/path/extension/filename. matchIndices — это смещения фрагментов, а не номера строк. Пустой результат: репозиторий может быть не проиндексирован или содержит только ветку по умолчанию — не утверждайте, что файл отсутствует. Проверьте существование пути через structure, затем используйте ограниченное локальное подтверждение: search "term" path --repo owner/repo --materialize required, clone owner/repo[/path] или cache fetch owner/repo [path] --depth file|tree|clone.

Параметры

  • queriesobject[]обязательный

    Parallel queries.

  • responseCharOffsetinteger

    Full-response char offset; re-call with returned value when hasMore.

  • responseCharLengthinteger

    Full-response char window.

ghSearchReposтолько чтениеидемпотентныйвнешний мир

Github | Ищите репозитории GitHub по имени, теме, языку или популярности. | Используйте concise:true для сканирования строк owner/repo, затем проверьте кандидата с помощью ghViewRepoStructure или поиска по содержимому. Ключевые слова объединяются по AND; темы разрежены. Передача ключевых слов вместе с темами объединяет два поиска с семантикой OR. Пустой результат: удалите тему или фильтр, попробуйте синонимы или меньше ключевых слов.

Github | Ищите репозитории GitHub по имени, теме, языку или популярности. | Используйте concise:true для сканирования строк owner/repo, затем проверьте кандидата с помощью ghViewRepoStructure или поиска по содержимому. Ключевые слова объединяются по AND; темы разрежены. Передача ключевых слов вместе с темами объединяет два поиска с семантикой OR. Пустой результат: удалите тему или фильтр, попробуйте синонимы или меньше ключевых слов.

Параметры

  • queriesobject[]обязательный

    Parallel queries.

  • responseCharOffsetinteger

    Full-response char offset; re-call with returned value when hasMore.

  • responseCharLengthinteger

    Full-response char window.

ghViewRepoStructureтолько чтениеидемпотентныйвнешний мир

Github | Обзор дерева каталогов репозитория на GitHub. | Просматривайте дерево на GitHub перед чтением файлов. Используйте ghSearchCode(match:"path"), если уже знаете фрагмент имени файла. Сгенерированные директории и vendor автоматически исключаются. Вывод — structure[]; листайте, пока pagination.hasMore. Пустой результат/404: проверьте owner/repo/branch и путь, или просматривайте с корня.

Github | Обзор дерева каталогов репозитория на GitHub. | Просматривайте дерево на GitHub перед чтением файлов. Используйте ghSearchCode(match:"path"), если уже знаете фрагмент имени файла. Сгенерированные директории и vendor автоматически исключаются. Вывод — structure[]; листайте, пока pagination.hasMore. Пустой результат/404: проверьте owner/repo/branch и путь, или просматривайте с корня.

Параметры

  • queriesobject[]обязательный

    Parallel queries.

  • responseCharOffsetinteger

    Full-response char offset; re-call with returned value when hasMore.

  • responseCharLengthinteger

    Full-response char window.

localFindFilesтолько чтениеидемпотентный

Local | Ищет локальные файлы и папки по имени, размеру, времени или правам доступа. | Находит пути по имени, метаданным, времени, размеру, правам или типу; возвращает пути/метаданные, а не содержимое файлов. Используй localSearchCode, если условие — содержимое файлов. Временные окна задаются в d/h/w/m. По умолчанию ничего не исключено: передай excludeDir (например ["node_modules","dist","coverage"]), чтобы отсечь папки сборки/вендоров. Пустой результат: ослабь фильтры по имени/типу/размеру/времени или расширь путь поиска.

Local | Ищет локальные файлы и папки по имени, размеру, времени или правам доступа. | Находит пути по имени, метаданным, времени, размеру, правам или типу; возвращает пути/метаданные, а не содержимое файлов. Используй localSearchCode, если условие — содержимое файлов. Временные окна задаются в d/h/w/m. По умолчанию ничего не исключено: передай excludeDir (например ["node_modules","dist","coverage"]), чтобы отсечь папки сборки/вендоров. Пустой результат: ослабь фильтры по имени/типу/размеру/времени или расширь путь поиска.

Параметры

  • queriesobject[]обязательный

    Parallel queries.

  • responseCharOffsetinteger

    Full-response char offset; re-call with returned value when hasMore.

  • responseCharLengthinteger

    Full-response char window.

localGetFileContentтолько чтениеидемпотентный

Local | Прочитать локальный файл или конкретную область. | Прочитать один локальный файл, совпавшие срезы или диапазон строк. Используйте matchRanges[].start/end как якоря строк LSP. Рабочий процесс ориентации: неизвестный или большой файл → сначала minify:"symbols" (схема символов + номера строк, низкая стоимость токенов) → затем читать точные регионы с помощью startLine/endLine или matchString. Используйте minify:"none" только для цитат, регулярных выражений или diff, где важны пробелы. isPartial:true означает продолжать с charOffset из pagination.nextCharOffset; предупреждения указывают на редактирование, разбиение на страницы или запасной вариант symbols. Не найдено: проверьте путь или выведите список директории с помощью localViewStructure.

Local | Прочитать локальный файл или конкретную область. | Прочитать один локальный файл, совпавшие срезы или диапазон строк. Используйте matchRanges[].start/end как якоря строк LSP. Рабочий процесс ориентации: неизвестный или большой файл → сначала minify:"symbols" (схема символов + номера строк, низкая стоимость токенов) → затем читать точные регионы с помощью startLine/endLine или matchString. Используйте minify:"none" только для цитат, регулярных выражений или diff, где важны пробелы. isPartial:true означает продолжать с charOffset из pagination.nextCharOffset; предупреждения указывают на редактирование, разбиение на страницы или запасной вариант symbols. Не найдено: проверьте путь или выведите список директории с помощью localViewStructure.

Параметры

  • queriesobject[]обязательный

    Parallel queries.

  • responseCharOffsetinteger

    Full-response char offset; re-call with returned value when hasMore.

  • responseCharLengthinteger

    Full-response char window.

localSearchCodeтолько чтениеидемпотентный

Local — ищет локальные файлы по тексту, регулярным выражениям или AST-шаблонам, чтобы найти файл и строку. Используйте discovery для путей, paginated для фрагментов, detailed для контекста, structural для поиска по AST. Текстовый/регулярный поиск требует ключевых слов; структурный — шаблон или правило. Сужайте шумные запросы перед пролистыванием; searchEngine предупреждает, когда fallback снижает возможности. Послепоисковый рабочий процесс: найдя якорь файл+строка, прочитайте файл с помощью localGetFileContent(minify:"symbols") для краткого обзора символов, экономящего токены, затем используйте startLine/endLine для точных областей. Используйте minify:"none" только если пробелы или комментарии являются доказательствами. Совет по структурным шаблонам: шаблон должен соответствовать полному узлу AST. Функция обычно требует тело ({ $$$BODY }), тип возврата и любой необходимый синтаксис — просто имя или сигнатура без тела дают ноль совпадений без ошибки синтаксического анализа. Используйте YAML-правило (inside/has/not/any) для частичных или относительных совпадений вместо простого шаблона. Пустой результат: расширьте ключевые слова, удалите фильтры include/exclude/langType или проверьте путь.

Local — ищет локальные файлы по тексту, регулярным выражениям или AST-шаблонам, чтобы найти файл и строку. Используйте discovery для путей, paginated для фрагментов, detailed для контекста, structural для поиска по AST. Текстовый/регулярный поиск требует ключевых слов; структурный — шаблон или правило. Сужайте шумные запросы перед пролистыванием; searchEngine предупреждает, когда fallback снижает возможности. Послепоисковый рабочий процесс: найдя якорь файл+строка, прочитайте файл с помощью localGetFileContent(minify:"symbols") для краткого обзора символов, экономящего токены, затем используйте startLine/endLine для точных областей. Используйте minify:"none" только если пробелы или комментарии являются доказательствами. Совет по структурным шаблонам: шаблон должен соответствовать полному узлу AST. Функция обычно требует тело ({ $$$BODY }), тип возврата и любой необходимый синтаксис — просто имя или сигнатура без тела дают ноль совпадений без ошибки синтаксического анализа. Используйте YAML-правило (inside/has/not/any) для частичных или относительных совпадений вместо простого шаблона. Пустой результат: расширьте ключевые слова, удалите фильтры include/exclude/langType или проверьте путь.

Параметры

  • queriesobject[]обязательный

    Parallel queries.

  • responseCharOffsetinteger

    Full-response char offset; re-call with returned value when hasMore.

  • responseCharLengthinteger

    Full-response char window.

localViewStructureтолько чтениеидемпотентный

Local | Просмотр дерева локального каталога — самый дешёвый шаг первичной ориентации; контент не загружается. | Просмотр формы каталога. Используйте localFindFiles для фильтров по имени/метаданным и localSearchCode(mode:"discovery") для файлов, содержащих текст. details:true или showFileLastModified:true переключает вывод на структурированный entries[]. Перелистывайте, когда pagination.hasMore. Если результат пуст: сбросьте фильтры pattern/extensions/filesOnly или проверьте путь.

Local | Просмотр дерева локального каталога — самый дешёвый шаг первичной ориентации; контент не загружается. | Просмотр формы каталога. Используйте localFindFiles для фильтров по имени/метаданным и localSearchCode(mode:"discovery") для файлов, содержащих текст. details:true или showFileLastModified:true переключает вывод на структурированный entries[]. Перелистывайте, когда pagination.hasMore. Если результат пуст: сбросьте фильтры pattern/extensions/filesOnly или проверьте путь.

Параметры

  • queriesobject[]обязательный

    Parallel queries.

  • responseCharOffsetinteger

    Full-response char offset; re-call with returned value when hasMore.

  • responseCharLengthinteger

    Full-response char window.

lspGetSemanticsтолько чтениеидемпотентный

Локально | Выполняет семантические запросы LSP - определения, ссылки, иерархия вызовов, символы, иерархия типов, диагностика. | documentSymbols/diagnostic требуют только uri; workspaceSymbol требует только symbolName; всем остальным типам нужны uri + symbolName + lineHint из реального поискового якоря - никогда не угадывайте lineHint. Ориентационный workflow: сначала вызывайте documentSymbols - это семантический аналог minify:"symbols", возвращает полную структуру символов с номерами строк с низкой стоимостью токенов. Используйте эти номера строк как lineHint для запросов определений, ссылок, вызывающих и наведения. callers/callees/callHierarchy для влияния вызываемых объектов; references для невызываемых; supertypes/subtypes для цепочек наследования. Предпочитайте format:"compact" и groupByFile для широких запросов, чтобы снизить стоимость токенов; ranges[].line - это якоря для последующих действий. serverUnavailable/unsupported = отсутствие возможности, а не отсутствие использования. Нет сервера: выполните "octocode lsp-server list", чтобы проверить, что доступно; "octocode lsp-server install [language]" - чтобы добавить сервер. Пусто/неполно: заново установите якорь с помощью свежего вызова documentSymbols или вернитесь к localSearchCode.

Локально | Выполняет семантические запросы LSP - определения, ссылки, иерархия вызовов, символы, иерархия типов, диагностика. | documentSymbols/diagnostic требуют только uri; workspaceSymbol требует только symbolName; всем остальным типам нужны uri + symbolName + lineHint из реального поискового якоря - никогда не угадывайте lineHint. Ориентационный workflow: сначала вызывайте documentSymbols - это семантический аналог minify:"symbols", возвращает полную структуру символов с номерами строк с низкой стоимостью токенов. Используйте эти номера строк как lineHint для запросов определений, ссылок, вызывающих и наведения. callers/callees/callHierarchy для влияния вызываемых объектов; references для невызываемых; supertypes/subtypes для цепочек наследования. Предпочитайте format:"compact" и groupByFile для широких запросов, чтобы снизить стоимость токенов; ranges[].line - это якоря для последующих действий. serverUnavailable/unsupported = отсутствие возможности, а не отсутствие использования. Нет сервера: выполните "octocode lsp-server list", чтобы проверить, что доступно; "octocode lsp-server install [language]" - чтобы добавить сервер. Пусто/неполно: заново установите якорь с помощью свежего вызова documentSymbols или вернитесь к localSearchCode.

Параметры

  • queriesobject[]обязательный

    Parallel queries.

  • responseCharOffsetinteger

    Full-response char offset; re-call with returned value when hasMore.

  • responseCharLengthinteger

    Full-response char window.

npmSearchтолько чтениеидемпотентныйвнешний мир

NPM | Ищите npm-пакеты и находите их исходные репозитории. | Приводит npm-пакет к его исходному репозиторию на GitHub. Пропускайте, когда owner/repo уже известен. Точное имя → один подробный результат: репозиторий (URL на GitHub, передаётся в ghSearchCode или ghViewRepoStructure), загрузки (количество в неделю), лицензия, описание и предзаполненные подсказки для следующего шага. Поиск по ключевым словам → постраничный сжатый список кандидатов; используйте пагинацию с помощью pagination.hasMore и page. Пустой результат: проверьте написание, попробуйте с областью видимости и без (@scope/pkg или pkg), или синоним.

NPM | Ищите npm-пакеты и находите их исходные репозитории. | Приводит npm-пакет к его исходному репозиторию на GitHub. Пропускайте, когда owner/repo уже известен. Точное имя → один подробный результат: репозиторий (URL на GitHub, передаётся в ghSearchCode или ghViewRepoStructure), загрузки (количество в неделю), лицензия, описание и предзаполненные подсказки для следующего шага. Поиск по ключевым словам → постраничный сжатый список кандидатов; используйте пагинацию с помощью pagination.hasMore и page. Пустой результат: проверьте написание, попробуйте с областью видимости и без (@scope/pkg или pkg), или синоним.

Параметры

  • queriesobject[]обязательный

    Parallel queries.

  • responseCharOffsetinteger

    Full-response char offset; re-call with returned value when hasMore.

  • responseCharLengthinteger

    Full-response char window.

Другие проверенные MCP-сервера

weaviate/mcp-server-weaviate

weaviate/mcp-server-weaviate

официальный

Встроенный MCP сервер Weaviate даёт AI-агентам гибридный поиск, управление коллекциями и объектами прямо через REST API. Полезен разработчикам, работающим с векторными базами данных.

162
tinyfish-io/agentql-mcp

tinyfish-io/agentql-mcp

официальный

Сервер AgentQL для MCP извлекает структурированные данные с любой веб-страницы по описанию на естественном языке. Разработчику достаточно указать URL и перечислить нужные поля – MCP инструмент сам соберет информацию для AI-агентов.

JavaScript175
bankless/onchain-mcp

bankless/onchain-mcp

официальный

MCP-сервер для доступа к on-chain данным через Bankless API. Позволяет AI-моделям читать контракты, получать события и транзакции на разных сетях. Полезен разработчикам блокчейн-приложений и AI-аге...

TypeScript80
keboola/keboola-mcp-server

keboola/keboola-mcp-server

официальный

MCP сервер для подключения AI-агентов к Keboola: он открывает доступ к данным, SQL-запросам и трансформациям без написания кода. Идеален для аналитиков и разработчиков, которые хотят кормить ИИ актуальными данными напрямую.

Python84
bitbonsai/mcp-obsidian

bitbonsai/mcp-obsidian

MCPVault — AI-мост для Obsidian по стандарту MCP. Подключает Claude, ChatGPT и других ассистентов к вашим заметкам с безопасным доступом и защитой frontmatter. Без привязки к одному провайдеру.

TypeScript1547
pydantic/logfire-mcp

pydantic/logfire-mcp

официальный

MCP-сервер для интеграции с Logfire от Pydantic. Текущая версия архивирована — используйте новый удаленный сервер для быстрой итерации инструментов и лучшего опыта. Полезен разработчикам, работающим с логированием и мониторингом Pydantic Logfire.

Python162
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин