Skip to main content
Glama
smat-dev

Jinni: Bring Your Project Into Context

by smat-dev

Jinni: добавьте контекст в свой проект

Jinni — это инструмент для эффективного предоставления Large Language Models контекста ваших проектов. Он дает консолидированное представление соответствующих файлов проекта, преодолевая ограничения и неэффективность чтения файлов по одному. Содержимому каждого файла предшествует простой заголовок, указывающий его путь:

```path=src/app.py
print("hello")

Философия этого инструмента заключается в том, что контекстные окна LLM большие, модели интеллектуальные, а непосредственное наблюдение за вашим проектом наилучшим образом подготавливает модель к решению любых задач, которые вы перед ней ставите.

Имеется сервер MCP (Model Context Protocol) для интеграции с инструментами искусственного интеллекта и утилита командной строки (CLI) для ручного использования, которая копирует контекст проекта в буфер обмена, готовый к вставке в нужное место.

Эти инструменты имеют собственное мнение о том, что считается соответствующим контекстом проекта, чтобы наилучшим образом работать сразу после установки в большинстве случаев использования, автоматически исключая:

* Binary files
* Dotfiles and hidden directories
* Common naming conventions for logs, build directories, tempfiles, etc

При необходимости включения/исключения можно настраивать с полной детализацией с помощью .contextfiles — это работает как .gitignore , за исключением определения включений. Сами файлы .gitignore также соблюдаются автоматически, но любые правила в .contextfiles имеют приоритет.

Сервер MCP может предоставить столько проекта, сколько необходимо. По умолчанию областью действия является весь проект, но модель может запросить определенные модули / шаблоны соответствия / и т. д.

MCP Быстрый старт

Файл конфигурации сервера MCP для Cursor / Roo / Claude Desktop / клиента по выбору:

{
    "mcpServers": {
        "jinni": {
            "command": "uvx",
            "args": ["jinni-server"]
        }
    }
}

При желании вы можете ограничить сервер чтением только из дерева в целях безопасности на случай, если ваш LLM выйдет из-под контроля: добавьте "--root", "/absolute/path/" в список args .

Установите uv, если его нет в вашей системе: https://docs.astral.sh/uv/getting-started/installation/

Перезагрузите IDE, и теперь вы можете попросить агента прочитать контекст.

Если вы хотите ограничить это определенными модулями/путями, просто укажите, например, «Читать контекст для тестов».

В действии с курсором:

Примечание для пользователей курсора

Курсор может молча сбрасывать контекст, который больше допустимого максимума, поэтому, если у вас большой проект и агент ведет себя так, как будто вызов инструмента никогда не происходил, попробуйте уменьшить то, что вы вносите («прочитать контекст для xyz»).

Компоненты

  1. Сервер jinni MCP:

    • Интегрируется с клиентами MCP, такими как Cursor, Cline, Roo, Claude Desktop и т. д.

    • Предоставляет инструмент read_context , который возвращает объединенную строку соответствующего содержимого файла из указанного каталога проекта.

  2. jinni CLI:

    • Инструмент командной строки для ручного создания дампа контекста проекта.

    • Полезно для передачи контекста LLM через копирование-вставку или входной файл. Или перенаправьте вывод туда, где он вам нужен.

Related MCP server: scythe-context-mcp

Функции

  • Эффективный сбор контекста: считывает и объединяет соответствующие файлы проекта за одну операцию.

  • Интеллектуальная фильтрация (включение в стиле Gitignore):

    • Использует систему, основанную на синтаксисе .gitignore ( gitwildmatch библиотеки pathspec ).

    • Автоматически загружает файлы .gitignore из корня проекта вниз. Эти исключения могут быть переопределены правилами в .contextfiles .

    • Поддерживает иерархическую конфигурацию с использованием .contextfiles , размещенных в каталогах вашего проекта. Правила применяются динамически на основе обрабатываемого файла/каталога.

    • Поведение сопоставления: Шаблоны сопоставляются с путем относительно обрабатываемого целевого каталога (или корня проекта, если не указана конкретная цель). Например, если нацелен на src/ , правило !app.py в src/.contextfiles будет соответствовать app.py . Выходные пути остаются относительно исходного корня проекта.

    • Переопределения: Поддерживает --overrides (CLI) или rules (MCP) для использования определенного набора правил исключительно. Когда переопределения активны, как встроенные правила по умолчанию, так и любые .contextfiles игнорируются. Сопоставление путей для переопределений по-прежнему относительно целевого каталога.

    • Явное включение цели: Файлы, явно указанные в качестве целей, всегда включаются (обходя проверки правил, но не проверки двоичности/размера). Каталоги, явно указанные в качестве целей, всегда вводятся, и затем обнаружение/сопоставление правил выполняется относительно этого целевого каталога.

  • Настраиваемая конфигурация ( .contextfiles / Overrides):

    • Точно определите, какие файлы/каталоги следует включить или исключить, используя шаблоны в стиле .gitignore применяемые к относительному пути .

    • Шаблоны, начинающиеся с ! , отрицают совпадение (шаблон исключения). (См. раздел «Конфигурация» ниже).

  • Обработка большого контекста: прерывается с DetailedContextSizeError , если общий размер включенных файлов превышает настраиваемый предел (по умолчанию: 100 МБ). Сообщение об ошибке включает список из 10 самых больших файлов, влияющих на размер, что помогает вам определить кандидатов на исключение. См. раздел «Устранение неполадок» для получения рекомендаций по управлению размером контекста.

  • Заголовки метаданных: вывод включает заголовок пути для каждого включенного файла (например, ````path=src/app.py ). This can be disabled with list_only`.

  • Обработка кодировок: пытается использовать несколько распространенных кодировок текста (UTF-8, Latin-1 и т. д.).

  • Режим «Только список»: возможность перечислить только относительные пути файлов, которые будут включены, без их содержимого.

Использование

MCP-сервер (инструмент read_context )

  1. Настройка: Настройте клиент MCP (например, claude_desktop_config.json Claude Desktop) для запуска сервера jinni через uvx .

  2. Вызов: при взаимодействии с вашим LLM через клиент MCP модель может вызвать инструмент read_context .

    • project_root (string, required): Абсолютный путь к корневому каталогу проекта. Пути обнаружения и вывода правил относительны этого корня.

    • targets (JSON-массив строк, обязательно): указывает обязательный список файлов/каталогов в project_root для обработки. Должен быть JSON-массивом строковых путей (например, ["path/to/file1", "path/to/dir2"] ). Пути могут быть абсолютными или относительными к CWD. Все целевые пути должны разрешаться в местоположения внутри project_root . Если указан пустой список [] , обрабатывается весь project_root .

    • rules (JSON-массив строк, обязательно): обязательный список встроенных правил фильтрации (используя синтаксис в стиле .gitignore , например, ["src/**/*.py", "!*.tmp"] ). Укажите пустой список [] если не требуется никаких конкретных правил (будут использоваться встроенные значения по умолчанию). Если он непустой, эти правила используются исключительно, игнорируя встроенные значения по умолчанию и .contextfiles .

    • list_only (логическое значение, необязательное): если true, возвращает только список относительных путей к файлам вместо содержимого.

    • size_limit_mb (целое число, необязательно): переопределить ограничение размера контекста в МБ.

    • debug_explain (логическое значение, необязательно): включить ведение журнала отладки на сервере.

    1. Вывод: Инструмент возвращает одну строку, содержащую объединенный контент (с заголовками) или список файлов. Пути в заголовках/списках указаны относительно предоставленного project_root . В случае ошибки размера контекста он возвращает DetailedContextSizeError с подробностями о самых больших файлах.

MCP Server (инструмент usage )

  • Вызов: модель может вызывать инструмент usage (аргументы не требуются).

  • Вывод: Возвращает содержимое файла README.md в виде строки.

(Подробные инструкции по настройке сервера будут различаться в зависимости от вашего клиента MCP. Как правило, вам необходимо настроить клиент для запуска сервера Jinni.)

Запуск сервера:

  • Рекомендуемый метод: используйте uvx для непосредственного запуска точки входа на сервер (необходимо, чтобы пакет jinni был опубликован в PyPI или мог быть найден uvx ):

    uvx jinni-server [OPTIONS]

    Пример конфигурации клиента MCP (например, claude_desktop_config.json ):

    {
      "mcpServers": {
        "jinni": {
          "command": "uvx",
          "args": ["jinni-server"]
        }
      }
    }

При желании вы можете ограничить сервер чтением только из дерева в целях безопасности на случай, если ваш LLM выйдет из-под контроля: добавьте "--root", "/absolute/path/" в список args .

Точные шаги настройки см. в документации вашего клиента MCP. Убедитесь, что uv установлен

Утилита командной строки ( jinni CLI)

jinni [OPTIONS] [<PATH...>]
  • <PATH...> (необязательно): Один или несколько путей к каталогам проекта или файлам для анализа. По умолчанию используется текущий каталог ( . ), если ничего не указано.

  • -r <DIR> / --root <DIR> (необязательно): Укажите корневой каталог проекта. Если указан, обнаружение правил начинается здесь, а выходные пути относительны этого каталога. Если пропущен, корень выводится из общего предка аргументов <PATH...> (или CWD, если обрабатывается только '.').

  • --output <FILE> / -o <FILE> (необязательно): Записать вывод в <FILE> вместо вывода на стандартный вывод.

  • --list-only / -l (необязательно): вывести только относительные пути файлов, которые будут включены.

  • --overrides <FILE> (необязательно): использовать правила из <FILE> вместо обнаружения .contextfiles .

  • --size-limit-mb <MB> / -s <MB> (необязательно): Переопределить максимальный размер контекста в МБ.

  • --debug-explain (необязательно): вывести подробные причины включения/исключения в stderr и jinni_debug.log .

  • --root <DIR> / -r <DIR> (необязательно): см. выше.

  • --no-copy (необязательно): предотвратить автоматическое копирование выходного содержимого в системный буфер обмена при печати на стандартный вывод (по умолчанию копирование).

Установка

Вы можете установить Jinni с помощью pip или uv :

Используя pip:

pip install jinni

Использование УФ:

uv pip install jinni

Это сделает команду jinni CLI доступной в вашей среде. См. раздел «Запуск сервера» выше, чтобы узнать, как запустить сервер MCP в зависимости от вашего метода установки.

Заметки, специфичные для платформы

Окна + WSL

Jinni v0.1.7+ автоматически преобразует пути WSL.

Укажите любой из них в качестве project_root (аргумент CLI --root или MCP):

/home/user/project
vscode-remote://wsl+Ubuntu-22.04/home/user/project

Никаких оболочек, монтирований или дополнительных флагов не требуется — Jinni автоматически разрешает UNC-путь ( \\wsl$\... ) в Windows.

Формат пути UNC: Jinni всегда использует \\wsl$\<distro>\... для максимальной совместимости со всеми версиями Windows, поддерживающими WSL. Обработка имени дистрибутива: в имени дистрибутива разрешены пробелы и большинство специальных символов. Только действительно недопустимые символы UNC заменяются на _ . Кэширование: поиск и преобразование пути WSL кэшируются для повышения производительности. Если вы устанавливаете WSL во время работы Jinni, перезапустите Jinni, чтобы использовать новый wslpath . Отказ: установите переменную среды JINNI_NO_WSL_TRANSLATE=1 чтобы отключить всю логику преобразования пути WSL.

Транслируются только URI wsl+<distro> и абсолютные пути POSIX (начинающиеся с / ); для удаленных SSH или контейнеров запустите Jinni внутри этой среды.

ОС времени выполнения

Что вы передаете

Что возвращает _translate_wsl_path()

Окна

vscode-remote://wsl%2BUbuntu/home/a/b

\\wsl$\\Ubuntu\home\a\b

Окна

/home/a/b

\\wsl$\\Ubuntu\home\a\b (через wslpath)

Linux/WSL

vscode-remote://wsl+Ubuntu/home/a/b

/home/a/b

Linux/WSL

/home/a/b

/home/a/b (без изменений)

Примеры

  • Вывести контекст my_project/ на консоль:

    jinni ./my_project/ # Process a single directory
    jinni ./src ./docs/README.md # Process multiple targets
    jinni # Process current directory (.)
  • Список файлов, которые будут включены в my_project/ без содержимого:

    jinni -l ./my_project/
    jinni --list-only ./src ./docs/README.md
  • Сохраните контекст my_project/ в файл с именем context_dump.txt :

    jinni -o context_dump.txt ./my_project/
  • Используйте правила переопределения из custom.rules вместо .contextfiles :

    jinni --overrides custom.rules ./my_project/
  • Показать отладочную информацию:

    jinni --debug-explain ./src
  • Контекст дампа (по умолчанию вывод автоматически копируется в буфер обмена):

    jinni ./my_project/
  • Сделать дамп контекста, но не копировать в буфер обмена:

    jinni --no-copy ./my_project/

Конфигурация ( .contextfiles и переопределения)

Jinni использует .contextfiles (или файл переопределения) для определения того, какие файлы и каталоги следует включить или исключить, на основе шаблонов в стиле .gitignore .

  • Основной принцип: правила применяются динамически во время обхода относительно текущего обрабатываемого целевого каталога.

  • Расположение ( .contextfiles ): Поместите .contextfiles в любой каталог. При обработке каталога (либо исходного целевого, либо подкаталога) Jinni ищет .contextfiles , начиная с этого каталога и далее вниз. Правила из родительских каталогов за пределами текущего целевого каталога игнорируются при обработке внутри этого целевого каталога.

  • Формат: простой текст в кодировке UTF-8, один шаблон на строку.

  • Синтаксис: использует стандартный синтаксис шаблона .gitignore (в частности, реализацию gitwildmatch``pathspec ).

    • Комментарии: Строки, начинающиеся с # игнорируются.

    • Шаблоны включения: укажите файлы/каталоги для включения (например, src/**/*.py , *.md , /config.yaml ).

    • Шаблоны исключения: строки, начинающиеся с ! указывают, что соответствующий файл следует исключить (отменяет шаблон).

    • Привязка: начальный символ / привязывает шаблон к каталогу, содержащему файлы .contextfiles .

    • Соответствие каталогам: завершающий символ / соответствует только каталогам.

    • Подстановочные знаки: * , ** , ? работают как в .gitignore .

  • Логика применения правила:

    1. Определение цели: Jinni определяет целевой каталог (либо явно указанный, либо корневой каталог проекта).

    2. Проверка переопределения: Если указаны --overrides (CLI) или rules (MCP), то используются исключительно эти правила. Все .contextfiles и встроенные значения по умолчанию игнорируются. Сопоставление путей выполняется относительно целевого каталога.

    3. Правила динамического контекста (без переопределений): При обработке файла или подкаталога в целевом каталоге:

      • Jinni находит все .gitignore и .contextfiles , начиная с целевого каталога и заканчивая каталогом текущего элемента.

      • Сначала применяются правила из .gitignore , затем встроенные значения по умолчанию и, наконец, любые .contextfiles (которые имеют приоритет).

      • Он компилирует эти объединенные правила в спецификацию ( PathSpec ).

      • Он сопоставляет текущий путь к файлу/подкаталогу, рассчитанный относительно целевого каталога , с этой спецификацией.

    4. Сопоставление: последний шаблон в объединенном наборе правил, который соответствует относительному пути элемента, определяет его судьбу. ! отменяет соответствие. Если ни один определенный пользователем шаблон не соответствует, элемент включается, если только он не соответствует встроенному исключению по умолчанию (например !.* ).

    5. Обработка целей: явно целевые файлы обходят проверки правил. Явно целевые каталоги становятся корнем для обнаружения правил и сопоставления их содержимого. Выходные пути всегда остаются относительно исходного project_root .

Примеры ( .contextfiles )

Пример 1: включение исходного кода Python и корневой конфигурации

Расположено в my_project/.contextfiles :

# Include all Python files in the src directory and subdirectories
src/**/*.py

# Include the main config file at the root of the project
/config.json

# Include all markdown files anywhere
*.md

# Exclude any test data directories found anywhere
!**/test_data/

Пример 2: Переопределение в подкаталоге

Расположено по адресу my_project/src/.contextfiles :

# In addition to rules inherited from parent .contextfiles...

# Include specific utility scripts in this directory
utils/*.sh

# Exclude a specific generated file within src, even if *.py is included elsewhere
!generated_parser.py

Разработка

  • Подробности дизайна: DESIGN.md

  • Запуск сервера локально: во время разработки (после установки с помощью uv pip install -e . или аналогичной команды) вы можете запустить модуль сервера напрямую:

    python -m jinni.server [OPTIONS]

    Пример конфигурации клиента MCP для локальной разработки:

    {
      "mcpServers": {
        "jinni": {
          // Adjust python path if needed, or ensure the correct environment is active
          "command": "python -m jinni.server"
          // Optionally constrain the server to only read within a tree (recommended for security):
          // "command": "python -m jinni.server --root /absolute/path/to/repo"
        }
      }
    }

Поиск неисправностей

Ошибки размера контекста ( DetailedContextSizeError )

Если вы столкнетесь с ошибкой, указывающей на превышение предела размера контекста, Jinni предоставит список из 10 самых больших файлов, которые он пытался включить. Это поможет вам определить потенциальных кандидатов на исключение.

Чтобы решить эту проблему:

  1. Просмотрите самые большие файлы: проверьте список, предоставленный в сообщении об ошибке. Есть ли большие файлы (например, файлы данных, журналы, артефакты сборки, медиа), которые не должны быть частью контекста LLM?

  2. Настройте исключения: используйте .contextfiles или параметры --overrides / rules , чтобы исключить ненужные файлы или каталоги.

    • Пример ( .contextfiles ): Чтобы исключить все файлы .log и определенный большой каталог данных:

      # Exclude all log files
      !*.log
      
      # Exclude a large data directory
      !large_data_files/
    • Подробную информацию о синтаксисе и использовании см. в разделе «Конфигурация» выше.

  3. Увеличьте лимит (используйте с осторожностью): Если все включенные файлы действительно необходимы, вы можете увеличить лимит размера с помощью --size-limit-mb (CLI) или size_limit_mb (MCP). Помните об ограничениях окна контекста LLM и затратах на обработку.

  4. Используйте jinni usage / usage : если вам необходимо вернуться к этим инструкциям или сведениям о конфигурации при устранении неполадок, используйте команду jinni usage или инструмент MCP usage .

Available Tools

2 tools
read_contextA

Reads context from a specified project root directory (absolute path). Focuses on the specified target files/directories within that root. Returns a static view of files with paths relative to the project root. Assume the user wants to read in context for the whole project unless otherwise specified - do not ask the user for clarification if just asked to read context. If the user just says 'jinni', interpret that as read_context. If the user asks to list context, use the list_only argument. Both targets and rules accept a JSON array of strings. The project_root, targets, and rules arguments are mandatory. You can ignore the other arguments by default. IMPORTANT NOTE ON RULES: Ensure you understand the rule syntax (details available via the usage tool) before providing specific rules. Using rules=[] is recommended if unsure, as this uses sensible defaults.

Guidance for AI Model Usage

When requesting context using this tool:

  • Default Behavior: If you provide an empty rules list ([]), Jinni uses sensible default exclusions (like .git, node_modules, __pycache__, common binary types) combined with any project-specific .contextfiles. This usually provides the "canonical context" - files developers typically track in version control. Assume this is what the users wants if they just ask to read context.

  • Targeting Specific Files: If you have a list of specific files you need (e.g., ["src/main.py", "README.md"]), provide them in the targets list. This is efficient and precise, quicker than reading one by one.

ParametersJSON Schema
NameRequiredDescriptionDefault
debug_explainNo
exclusionsNoOptional exclusion configuration. Object with 'global' (list of keywords), 'scoped' (object mapping paths to keyword lists), and 'patterns' (list of file patterns) fields.
list_onlyNo
project_rootYes**MUST BE ABSOLUTE PATH**. The absolute path to the project root directory.
rulesYes**Mandatory**. List of inline filtering rules. Provide `[]` if no specific rules are needed (uses defaults). It is strongly recommended to consult the `usage` tool documentation before providing a non-empty list.
size_limit_mbNo
targetsYes**Mandatory**. List of paths (absolute or relative to CWD) to specific files or directories within the project root to process. Must be a JSON array of strings. If empty (`[]`), the entire `project_root` is processed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: the tool returns a 'static view' (implying read-only, non-destructive), uses 'sensible default exclusions' when rules=[], and provides guidance on default behavior and targeting efficiency. However, it doesn't explicitly mention permission requirements, rate limits, or error handling, leaving some behavioral aspects uncovered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately front-loaded with core functionality, but it contains some redundancy (e.g., repeating that targets and rules accept JSON arrays) and includes implementation details like 'You can ignore the other arguments by default' that could be streamlined. The 'Guidance for AI Model Usage' section is helpful but adds length. Overall, it's informative but could be more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, 57% schema coverage, no annotations, but with an output schema), the description is mostly complete. It covers the core purpose, usage guidelines, parameter semantics for key inputs, and behavioral context. The output schema exists, so return values needn't be explained. However, it lacks details on less critical parameters like 'debug_explain' and 'size_limit_mb', and doesn't mention error cases or performance implications.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 57%, so the description must compensate. It adds significant value beyond the schema: it explains that 'targets' and 'rules' accept JSON arrays, clarifies that empty rules ([]) use sensible defaults, provides examples of default exclusions, and gives practical guidance on when to use specific targets versus processing the entire root. However, it doesn't fully explain all 7 parameters, particularly 'debug_explain' and 'size_limit_mb'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Reads context from a specified project root directory' and 'Returns a static view of files with paths relative to the project root.' It specifies the verb (read), resource (context/files), and scope (project root directory), distinguishing it from the sibling 'usage' tool which provides documentation rather than file reading.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool: 'Assume the user wants to read in context for the whole project unless otherwise specified' and 'If the user just says 'jinni', interpret that as read_context.' It also specifies when to use the list_only argument: 'If the user asks to list context, use the list_only argument.' This gives clear usage rules and context for invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usageA

Retrieves the Jinni usage documentation (content of README.md).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the behavioral trait of retrieving documentation, which is a read-only operation, but does not add context beyond that, such as rate limits, authentication needs, or error handling. It adequately describes the core behavior but lacks richer operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the key information ('Retrieves the Jinni usage documentation') without any wasted words. It is appropriately sized for a simple tool with no parameters, making it easy to understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no annotations, but with an output schema), the description is complete enough for its purpose. It explains what the tool does, and since an output schema exists, it does not need to detail return values. However, it could slightly improve by mentioning the output format or usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%, so there is no need for parameter details in the description. The baseline for 0 parameters is 4, as the description correctly avoids unnecessary parameter information and focuses on the tool's purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Retrieves') and resource ('Jinni usage documentation (content of README.md)'), distinguishing it from the sibling tool 'read_context' which likely serves a different purpose. It precisely defines what the tool does without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by specifying what is retrieved, but it does not provide explicit guidance on when to use this tool versus alternatives or any exclusions. It lacks context about scenarios where this tool is preferred over the sibling 'read_context', leaving usage decisions to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv1.0.0
    • First observedread_context
    • First observedusage

TDQS

A3.9/5.0
Disambiguation5/5

The two tools have completely distinct purposes: 'read_context' is for reading project files and directories, while 'usage' is for retrieving documentation. There is no overlap or ambiguity between them; an agent would never confuse one for the other.

Naming Consistency4/5

Both tools use snake_case naming, which is consistent. However, 'read_context' follows a verb_noun pattern, while 'usage' is a noun only, representing a minor deviation from a fully uniform convention.

Tool Count2/5

With only 2 tools, the server feels thin for its purpose of bringing projects into context. While 'read_context' is core, there are likely missing operations like updating context, managing rules, or querying context metadata, making the set under-scoped.

Completeness2/5

The tool surface is severely incomplete for the domain of project context management. It only supports reading context and accessing documentation, lacking essential operations such as writing/modifying context, listing available contexts, or configuring rules beyond defaults, which will limit agent capabilities.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Intelligently analyzes codebases to enhance LLM prompts with relevant context, featuring adaptive context management and task detection to produce higher quality AI responses.
    2
    -
  • A
    license
    A
    quality
    A
    maintenance
    Generates AI context files (CLAUDE.md, AGENTS.md, Cursor/Windsurf/Cline/Continue/Kilo Code/Trae rules, GEMINI.md, Copilot, Aider, Junie, Warp) for any repository. Runs as CLI or MCP server, 100% local.
    3
    60
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Combines codebase files into a single prompt for AI assistants, enabling code review, documentation, and debugging via natural language.
    19
    2
    MIT

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/smat-dev/jinni'

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