Jinni: Bring Your Project Into Context
Jinni server enables efficient project context delivery to LLMs by reading and filtering files from projects.
Read Project Context (
read_context): Fetch relevant files from directories, returning either concatenated content with metadata headers or just a list of file paths.Custom Filtering: Define inclusion/exclusion rules using
.gitignore-like syntax in.contextfilesor inline rules.Target Specific Paths: Process specific files or directories within a project for precise context delivery.
Handle Large Contexts: Manage context size with configurable limits and detailed error reporting for oversized requests.
Debugging Support: Enable
debug_explainfor detailed insights on rule application.Access Documentation (
usage): Retrieve README.md content to understand server functionality.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Jinni: Bring Your Project Into Contextread context for the src directory"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Jinni: Bring Your Project Into Context
Jinni is a tool to efficiently provide Large Language Models the context of your projects. It gives a consolidated view of relevant project files, overcoming the limitations and inefficiencies of reading files one by one. Each file's content is preceded by a simple header indicating its path:
```path=src/app.py
print("hello")The philosophy behind this tool is that LLM context windows are large, models are smart, and directly seeing your project best equips the model to help with anything you throw at it.
There is an MCP (Model Context Protocol) server for integration with AI tools and a command-line utility (CLI) for manual use that copies project context to the clipboard ready to paste wherever you need it.
These tools are opinionated about what counts as relevant project context to best work out of the box in most use cases, automatically excluding:
* Binary files
* Dotfiles and hidden directories
* Common naming conventions for logs, build directories, tempfiles, etcInclusions/exclusions are customizable with complete granularity if required using .contextfiles – this works like .gitignore except defining inclusions. .gitignore files themselves are also respected automatically, but any rules in .contextfiles take priority.
The MCP server can provide as much or as little of the project as desired. By default the scope is the whole project, but the model can ask for specific modules / matching patterns / etc.
MCP Quickstart
MCP server config file for Cursor / Roo / Claude Desktop / client of choice:
{
"mcpServers": {
"jinni": {
"command": "uvx",
"args": ["jinni-server"]
}
}
}You can optionally constrain the server to only read within a tree for security in case your LLM goes rogue: add "--root", "/absolute/path/" to the args list.
Install uv if it is not on your system: https://docs.astral.sh/uv/getting-started/installation/
Reload your IDE and you can now ask the agent to read in context.
If you want to restrict this to particular modules / paths just ask - e.g. "Read context for tests".
In action with Cursor:
Note For Cursor Users
Cursor can silently drop context that is larger than the allowed maximum, so if you have a sizable project and the agent acts like the tool call never happened, try reducing what you are bringing in ("read context for xyz")
Components
jinniMCP Server:Integrates with MCP clients like Cursor, Cline, Roo, Claude Desktop, etc.
Exposes a
read_contexttool that returns a concatenated string of relevant file contents from a specified project directory.
jinniCLI:A command-line tool for manually generating the project context dump.
Useful for feeding context to LLMs via copy-paste or file input. Or pipe the output wherever you need it.
Related MCP server: scythe-context-mcp
Features
Efficient Context Gathering: Reads and concatenates relevant project files in one operation.
Intelligent Filtering (Gitignore-Style Inclusion):
Uses a system based on
.gitignoresyntax (pathspeclibrary'sgitwildmatch).Automatically loads
.gitignorefiles from the project root downward. These exclusions can be overridden by rules in.contextfiles.Supports hierarchical configuration using
.contextfilesplaced within your project directories. Rules are applied dynamically based on the file/directory being processed.Matching Behavior: Patterns match against the path relative to the target directory being processed. Output paths remain relative to the original project root.
Rule Root Behavior: Each target has its own rule root:
Targets within the project root (or CWD) use the project root/CWD as their rule root
External targets use themselves as their rule root, ensuring self-contained rule sets
Overrides: Supports
--overrides(CLI) orrules(MCP) to use a specific set of rules exclusively. When overrides are active, both built-in default rules and any.contextfilesare ignored. Path matching for overrides is still relative to the target directory.Explicit Target Inclusion: Files explicitly provided as targets are always included (bypassing rule checks, but not binary/size checks).
Customizable Configuration (
.contextfiles/ Overrides):Define precisely which files/directories to include or exclude using
.gitignore-style patterns applied to the relative path.Patterns starting with
!negate the match (an exclusion pattern). (See Configuration section below).
Large Context Handling: Aborts with a
DetailedContextSizeErrorif the total size of included files exceeds a configurable limit (default: 100MB). The error message includes a list of the 10 largest files contributing to the size, helping you identify candidates for exclusion. See the Troubleshooting section for guidance on managing context size.Metadata Headers: Output includes a path header for each included file (e.g., ````path=src/app.py
). This can be disabled withlist_only`.Encoding Handling: Attempts multiple common text encodings (UTF-8, Latin-1, etc.).
List Only Mode: Option to only list the relative paths of files that would be included, without their content.
Usage
MCP Server (read_context tool)
Setup: Configure your MCP client (e.g., Claude Desktop's
claude_desktop_config.json) to run thejinniserver viauvx.Invocation: When interacting with your LLM via the MCP client, the model can invoke the
read_contexttool.project_root(string, required): The absolute path to the project root directory. Rule discovery and output paths are relative to this root.targets(JSON array of strings, required): Specifies a mandatory list of file(s)/directory/ies withinproject_rootto process. Must be a JSON array of string paths (e.g.,["path/to/file1", "path/to/dir2"]). Paths can be absolute or relative to CWD. All target paths must resolve to locations insideproject_root. If an empty list[]is provided, the entireproject_rootis processed.rules(JSON array of strings, required): A mandatory list of inline filtering rules (using.gitignore-style syntax, e.g.,["src/**/*.py", "!*.tmp"]). Provide an empty list[]if no specific rules are needed (this will use built-in defaults). If non-empty, these rules are used exclusively, ignoring built-in defaults and.contextfiles.list_only(boolean, optional): If true, returns only the list of relative file paths instead of content.size_limit_mb(integer, optional): Override the context size limit in MB.debug_explain(boolean, optional): Enable debug logging on the server.exclusions(object, optional): Exclusion configuration with three optional fields:global(array of strings): Keywords to exclude globally (e.g.,["tests", "deprecated"])scoped(object): Map of paths to keyword arrays for scoped exclusions (e.g.,{"src/legacy": ["old", "deprecated"]})patterns(array of strings): File patterns to exclude (e.g.,["*.test.js", "*_old.*"])
Output: The tool returns a single string containing the concatenated content (with headers) or the file list. Paths in headers/lists are relative to the provided
project_root. In case of a context size error, it returns aDetailedContextSizeErrorwith details about the largest files.
MCP Server (usage tool)
Invocation: The model can invoke the
usagetool (no arguments needed).Output: Returns the content of the
README.mdfile as a string.
(Detailed server setup instructions will vary depending on your MCP client. Generally, you need to configure the client to execute the Jinni server.)
Running the Server:
Recommended Method: Use
uvxto run the server entry point directly (requires thejinnipackage to be published on PyPI or findable byuvx):uvx jinni-server [OPTIONS]Example MCP client configuration (e.g.,
claude_desktop_config.json):{ "mcpServers": { "jinni": { "command": "uvx", "args": ["jinni-server"] } } }
You can optionally constrain the server to only read within a tree for security in case your LLM goes rogue: add "--root", "/absolute/path/" to the args list.
See your specific MCP client's documentation for precise setup steps. Ensure uv is installed
Command-Line Utility (jinni CLI)
jinni [OPTIONS] [<PATH...>]<PATH...>(optional): One or more paths to the project directories or files to analyze. Defaults to the current directory (.) if none are provided.-r <DIR>/--root <DIR>(optional): Specify the project root directory. If provided, rule discovery starts here, and output paths are relative to this directory. If omitted, the root is inferred from the common ancestor of the<PATH...>arguments (or CWD if only '.' is processed).--output <FILE>/-o <FILE>(optional): Write the output to<FILE>instead of printing to standard output.--list-only/-l(optional): Only list the relative paths of files that would be included.--overrides <FILE>(optional): Add rules from<FILE>as high-priority rules in addition to.contextfilesand.gitignore.--size-limit-mb <MB>/-s <MB>(optional): Override the maximum context size in MB.--debug-explain(optional): Print detailed inclusion/exclusion reasons to stderr andjinni_debug.log.--root <DIR>/-r <DIR>(optional): See above.--no-copy(optional): Prevent automatically copying the output content to the system clipboard when printing to standard output (the default is to copy).--not <keyword>(optional, repeatable): Exclude modules/directories matching keyword (e.g.,--not tests --not vendor). Can be used multiple times.--not-in <path:keywords>(optional, repeatable): Exclude specific keywords within a path (e.g.,--not-in src/legacy:old,deprecated). Can be used multiple times.--not-files <pattern>(optional, repeatable): Exclude files matching pattern (e.g.,--not-files '*.test.js' --not-files '*_old.*'). Can be used multiple times.--keep-only <modules>(optional): Keep only specified modules/directories, exclude everything else (comma-separated, e.g.,--keep-only src,lib,docs).
Exclusion Examples
CLI Examples:
# Exclude all test directories
jinni --not tests
# Exclude multiple keywords
jinni --not tests --not vendor --not deprecated
# Exclude old code only in specific paths
jinni --not-in src/legacy:old,deprecated --not-in lib/v1:legacy
# Exclude specific file patterns
jinni --not-files "*.test.js" --not-files "*_old.*"
# Keep only src and docs, exclude everything else
jinni --keep-only src,docs
# Combine different exclusion types
jinni --not tests --not-in src/experimental:wip --not-files "*.bak"Note: Exclusion commands (--not* flags) work in addition to existing .gitignore and .contextfiles rules. They further filter down what would otherwise be included.
MCP Examples:
{
"project_root": "/path/to/project",
"targets": [],
"rules": [],
"exclusions": {
"global": ["tests", "vendor"],
"scoped": {
"src/legacy": ["old", "deprecated"],
"lib/experimental": ["wip", "unstable"]
},
"patterns": ["*.test.js", "*_backup.*"]
}
}Installation
You can install Jinni using pip or uv:
Using pip:
pip install jinniUsing uv:
uv pip install jinniThis will make the jinni CLI command available in your environment. See the "Running the Server" section above for how to start the MCP server depending on your installation method.
Platform-specific notes
Windows + WSL
Jinni v0.1.7+ auto-converts WSL paths.
Provide either of these as project_root (CLI --root or MCP argument):
/home/user/project
vscode-remote://wsl+Ubuntu-22.04/home/user/projectNo wrappers, mounts, or extra flags required—Jinni resolves the UNC path (\\wsl$\...) on Windows automatically.
UNC Path Format: Jinni always uses \\wsl$\<distro>\... for maximum compatibility with all Windows versions supporting WSL.
Distro Name Handling: Spaces and most special characters are allowed in the distro name. Only truly illegal UNC characters are replaced with _.
Caching: WSL path lookups and conversions are cached for performance. If you install WSL while Jinni is running, restart Jinni to pick up the new wslpath.
Opt-out: Set the environment variable JINNI_NO_WSL_TRANSLATE=1 to disable all WSL path translation logic.
Only wsl+<distro> URIs and absolute POSIX paths (starting with /) are translated; for SSH or container remotes, run Jinni inside that environment.
Runtime OS | What you pass in | What |
Windows |
|
|
Windows |
|
|
Linux/WSL |
|
|
Linux/WSL |
|
|
Examples
Dump context of
my_project/to the console:jinni ./my_project/ # Process a single directory jinni ./src ./docs/README.md # Process multiple targets jinni # Process current directory (.)List files that would be included in
my_project/without content:jinni -l ./my_project/ jinni --list-only ./src ./docs/README.mdDump context of
my_project/to a file namedcontext_dump.txt:jinni -o context_dump.txt ./my_project/Use override rules from
custom.rulesinstead of.contextfiles:jinni --overrides custom.rules ./my_project/Show debug information:
jinni --debug-explain ./srcDump context (output is automatically copied to clipboard by default):
jinni ./my_project/Dump context but do not copy to clipboard:
jinni --no-copy ./my_project/
Configuration (.contextfiles & Overrides)
Jinni uses .contextfiles (or an override file) to determine which files and directories to include or exclude, based on .gitignore-style patterns.
Core Principle: Rules are applied dynamically during traversal, relative to the current target directory being processed.
Location (
.contextfiles): Place.contextfilesin any directory. Rule discovery starts from the rule root (project root for internal targets, target itself for external targets) and proceeds downward to the current directory being processed.Format: Plain text, UTF-8 encoded, one pattern per line.
Syntax: Uses standard
.gitignorepattern syntax (specificallypathspec'sgitwildmatchimplementation).Comments: Lines starting with
#are ignored.Inclusion Patterns: Specify files/directories to include (e.g.,
src/**/*.py,*.md,/config.yaml).Exclusion Patterns: Lines starting with
!indicate that a matching file should be excluded (negates the pattern).Anchoring: A leading
/anchors the pattern to the directory containing the.contextfiles.Directory Matching: A trailing
/matches directories only.Wildcards:
*,**,?work as in.gitignore.
Rule Application Logic:
Determine Target: Jinni identifies the target directory (either explicitly provided or the project root).
Override Check: If
--overrides(CLI) orrules(MCP) are provided, these rules are used exclusively. All.contextfilesand built-in defaults are ignored. Path matching is relative to the target directory.Dynamic Context Rules (No Overrides): When processing a file or subdirectory:
Jinni finds all
.gitignoreand.contextfilesstarting from the rule root down to the current item's directory.Rules are combined in order: built-in defaults,
.gitignorerules,.contextfilesrules (which take precedence).It compiles these combined rules into a specification (
PathSpec).It matches the current file/subdirectory path, calculated relative to the target directory, against this specification.
Matching: The last pattern in the combined rule set that matches the item's relative path determines its fate.
!negates the match. If no user-defined pattern matches, the item is included unless it matches a built-in default exclusion (like!.*).Target Handling: Explicitly targeted files bypass rule checks. Output paths always remain relative to the original
project_root.
Examples (.contextfiles)
Example 1: Include Python Source and Root Config
Located at 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/Example 2: Overriding in a Subdirectory
Located at 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.pyDevelopment
Design Details: DESIGN.md
Running Server Locally: During development (after installing with
uv pip install -e .or similar), you can run the server module directly:python -m jinni.server [OPTIONS]Example MCP client configuration for local development:
{ "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" } } }
Troubleshooting
Context Size Errors (DetailedContextSizeError)
If you encounter an error indicating the context size limit was exceeded, Jinni will provide a list of the 10 largest files it attempted to include. This helps you identify potential candidates for exclusion.
To resolve this:
Review the Largest Files: Check the list provided in the error message. Are there large files (e.g., data files, logs, build artifacts, media) that shouldn't be part of the LLM's context?
Configure Exclusions: Use
.contextfilesor the--overrides/rulesoptions to exclude unnecessary files or directories.Example (
.contextfiles): To exclude all.logfiles and a specific large data directory:# Exclude all log files !*.log # Exclude a large data directory !large_data_files/Refer to the Configuration section above for detailed syntax and usage.
Increase the Limit (Use with Caution): If all included files are genuinely necessary, you can increase the size limit using
--size-limit-mb(CLI) orsize_limit_mb(MCP). Be mindful of LLM context window limits and processing costs.Use
jinni usage/usage: If you need to refer back to these instructions or the configuration details while troubleshooting, use thejinni usagecommand or theusageMCP tool.
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.
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