Jinni: Bring Your Project Into Context
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»).
Компоненты
Сервер
jinniMCP:Интегрируется с клиентами MCP, такими как Cursor, Cline, Roo, Claude Desktop и т. д.
Предоставляет инструмент
read_context, который возвращает объединенную строку соответствующего содержимого файла из указанного каталога проекта.
jinniCLI:Инструмент командной строки для ручного создания дампа контекста проекта.
Полезно для передачи контекста 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 withlist_only`.Обработка кодировок: пытается использовать несколько распространенных кодировок текста (UTF-8, Latin-1 и т. д.).
Режим «Только список»: возможность перечислить только относительные пути файлов, которые будут включены, без их содержимого.
Использование
MCP-сервер (инструмент read_context )
Настройка: Настройте клиент MCP (например,
claude_desktop_config.jsonClaude Desktop) для запуска сервераjinniчерезuvx.Вызов: при взаимодействии с вашим 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(логическое значение, необязательно): включить ведение журнала отладки на сервере.
Вывод: Инструмент возвращает одну строку, содержащую объединенный контент (с заголовками) или список файлов. Пути в заголовках/списках указаны относительно предоставленного
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 внутри этой среды.
ОС времени выполнения | Что вы передаете | Что возвращает |
Окна |
|
|
Окна |
|
|
Linux/WSL |
|
|
Linux/WSL |
|
|
Примеры
Вывести контекст
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.
Логика применения правила:
Определение цели: Jinni определяет целевой каталог (либо явно указанный, либо корневой каталог проекта).
Проверка переопределения: Если указаны
--overrides(CLI) илиrules(MCP), то используются исключительно эти правила. Все.contextfilesи встроенные значения по умолчанию игнорируются. Сопоставление путей выполняется относительно целевого каталога.Правила динамического контекста (без переопределений): При обработке файла или подкаталога в целевом каталоге:
Jinni находит все
.gitignoreи.contextfiles, начиная с целевого каталога и заканчивая каталогом текущего элемента.Сначала применяются правила из
.gitignore, затем встроенные значения по умолчанию и, наконец, любые.contextfiles(которые имеют приоритет).Он компилирует эти объединенные правила в спецификацию (
PathSpec).Он сопоставляет текущий путь к файлу/подкаталогу, рассчитанный относительно целевого каталога , с этой спецификацией.
Сопоставление: последний шаблон в объединенном наборе правил, который соответствует относительному пути элемента, определяет его судьбу.
!отменяет соответствие. Если ни один определенный пользователем шаблон не соответствует, элемент включается, если только он не соответствует встроенному исключению по умолчанию (например!.*).Обработка целей: явно целевые файлы обходят проверки правил. Явно целевые каталоги становятся корнем для обнаружения правил и сопоставления их содержимого. Выходные пути всегда остаются относительно исходного
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 самых больших файлов, которые он пытался включить. Это поможет вам определить потенциальных кандидатов на исключение.
Чтобы решить эту проблему:
Просмотрите самые большие файлы: проверьте список, предоставленный в сообщении об ошибке. Есть ли большие файлы (например, файлы данных, журналы, артефакты сборки, медиа), которые не должны быть частью контекста LLM?
Настройте исключения: используйте
.contextfilesили параметры--overrides/rules, чтобы исключить ненужные файлы или каталоги.Пример (
.contextfiles): Чтобы исключить все файлы.logи определенный большой каталог данных:# Exclude all log files !*.log # Exclude a large data directory !large_data_files/Подробную информацию о синтаксисе и использовании см. в разделе «Конфигурация» выше.
Увеличьте лимит (используйте с осторожностью): Если все включенные файлы действительно необходимы, вы можете увеличить лимит размера с помощью
--size-limit-mb(CLI) илиsize_limit_mb(MCP). Помните об ограничениях окна контекста LLM и затратах на обработку.Используйте
jinni usage/usage: если вам необходимо вернуться к этим инструкциям или сведениям о конфигурации при устранении неполадок, используйте командуjinni usageили инструмент MCPusage.
Available Tools
2 toolsread_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
ruleslist ([]), 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 thetargetslist. This is efficient and precise, quicker than reading one by one.
| Name | Required | Description | Default |
|---|---|---|---|
| debug_explain | No | ||
| exclusions | No | Optional exclusion configuration. Object with 'global' (list of keywords), 'scoped' (object mapping paths to keyword lists), and 'patterns' (list of file patterns) fields. | |
| list_only | No | ||
| project_root | Yes | **MUST BE ABSOLUTE PATH**. The absolute path to the project root directory. | |
| rules | Yes | **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_mb | No | ||
| targets | Yes | **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
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v1.0.0- First observed
read_context - First observed
usage
TDQS
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.
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.
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.
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
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
Project memory, semantic code search, and grounded agent context.
Shared memory for coding agents. Stop re-explaining your codebase every session.
Securely search and manage workspace context files for AI agents and teams.
Research-backed linting + generation for agent context files (CLAUDE.md, AGENTS.md, Cursor rules).
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceIntelligently analyzes codebases to enhance LLM prompts with relevant context, featuring adaptive context management and task detection to produce higher quality AI responses.2-
- AlicenseBqualityAmaintenanceLocal code context engine for Codex App/CLI that indexes code with SQLite/sqlite-vec for hybrid search and context packing to provide relevant files, line numbers, snippets, and paths.7142Apache 2.0
- AlicenseAqualityAmaintenanceGenerates 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.3601MIT
- AlicenseNot gradedqualityDmaintenanceCombines codebase files into a single prompt for AI assistants, enabling code review, documentation, and debugging via natural language.192MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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