SDL-MCP
Local code index that serves symbol cards, graph slices and bounded source windows to coding agents
Local MCP gateway that hides upstream tool schemas behind one capability search
By Ratel TypeScript Local · stdio Developer tools
30 popularity score ★ 16 ↓ 83/wk
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
claude mcp add ratel-local -- npx -y @ratel-ai/ratel-local serve --auto-config --project-root '<ABSOLUTE_PATH_TO_PROJECT>'{
"mcpServers": {
"ratel-local": {
"command": "npx",
"args": [
"-y",
"@ratel-ai/ratel-local",
"serve",
"--auto-config",
"--project-root",
"<ABSOLUTE_PATH_TO_PROJECT>"
]
}
}
}{
"mcpServers": {
"ratel-local": {
"command": "npx",
"args": [
"-y",
"@ratel-ai/ratel-local",
"serve",
"--auto-config",
"--project-root",
"<ABSOLUTE_PATH_TO_PROJECT>"
]
}
}
}{
"servers": {
"ratel-local": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@ratel-ai/ratel-local",
"serve",
"--auto-config",
"--project-root",
"<ABSOLUTE_PATH_TO_PROJECT>"
]
}
}
}[mcp_servers.ratel-local]
command = "npx"
args = ["-y", "@ratel-ai/ratel-local", "serve", "--auto-config", "--project-root", "<ABSOLUTE_PATH_TO_PROJECT>"]gemini mcp add --scope user ratel-local npx -- -y @ratel-ai/ratel-local serve --auto-config --project-root '<ABSOLUTE_PATH_TO_PROJECT>'RATEL_PROJECT_ROOT |
Optional: Project folder whose project and local configuration is loaded when --project-root is not given. |
|---|---|
RATEL_TELEMETRY |
Optional: Set to off to stop writing local per-session telemetry files. |
RATEL_API_KEY |
Optional: Ratel Cloud key for the experimental trace export. |
RATEL_FEATURE_ADAPTIVE_RANKING |
Optional: Set to 1 to enable experimental ranking that learns from past searches. |
RATEL_FEATURE_CLOUD_CATALOG |
Optional: Set to 1 to add skills from Ratel Cloud to the catalog. |
RATEL_FEATURE_CONNECTOR_RECOVERY |
Optional: Set to 1 to let the connector reattach after the daemon is interrupted. |
Ratel Local sits between a coding agent and the MCP servers it already uses. Instead of loading every upstream server's tool definitions into the prompt, the agent sees a few gateway tools: it searches a combined catalog of upstream tools and skills, then calls the chosen tool through the gateway. Upstream schemas and skill text only reach the context when a search returns them.
Upstreams are added with the `ratel-local mcp add` command at user, project or local scope, and can be stdio servers or remote HTTP/SSE servers, including ones that sign in with OAuth (tokens are kept under ~/.ratel/oauth/). Search uses BM25 by default; semantic and hybrid retrieval can be switched on per scope with a local, Hugging Face, Ollama or OpenAI-compatible embedding source. For Claude Code and Codex a `setup` wizard installs a background daemon and links the agent; Cursor and other clients run `ratel-local serve --auto-config` directly, which needs no daemon.
In `serve --auto-config` mode the project root is taken from `--project-root`, then the RATEL_PROJECT_ROOT variable, then CLAUDE_PROJECT_DIR, then a search up from the working directory; if none is found only the user configuration is loaded. The same handler writes a JSONL telemetry file per session to a local telemetry folder unless `--telemetry off` or RATEL_TELEMETRY=off is set (serve.ts at v0.9.0).
| Runtime | Node.js 20+ |
|---|
Node.js 20.6 or newer (npx). The upstream MCP servers you want behind it, added with `ratel-local mcp add`. The setup wizard and `link` only adapt Claude Code and Codex; Cursor is configured by hand in mcp.json. A Ratel Cloud key is needed only for the optional Cloud skill catalog or telemetry.
It adds no capabilities of its own: what it can do is what the upstream servers you configure can do. `import` and `link` do not support Cursor, and Cursor's existing MCP entries are not migrated automatically. `serve` exits unless given `--auto-config` or a config file path. Adaptive ranking, Cloud telemetry and the Cloud skill catalog are experimental and off by default, each enabled only by setting its RATEL_FEATURE_ flag to exactly 1. `get_skill_content` appears only when at least one skill is loaded. After changing retrieval settings the agent must reconnect.
Developers who run many MCP servers in Claude Code, Codex or Cursor and want to keep tool schemas out of the prompt, accepting one extra search step before each tool call. With only one or two upstream servers, connecting them directly is simpler. Because every upstream's credentials and tool calls pass through it, pick it only if you are comfortable running a local gateway process (and, for Claude Code and Codex, a per-user daemon) on your machine. Teams wanting the catalog inside their own agent code are pointed by its docs to the Ratel SDKs instead.
search_capabilitiesinvoke_toolget_skill_contentauth