Typed LSP operations for MCP clients.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
One-click editor setup isn’t available for this listing yet — we don’t have a confirmed install command, and we’d rather show nothing than point your editor at the wrong package or host. Follow the project’s own setup instructions, linked above.
Deixis is a Model Context Protocol (MCP) server that gives coding agents typed access to Language Server Protocol (LSP) operations. It manages explicitly configured language servers for one project and exposes their semantic capabilities without adding another filesystem, shell, editor, index, or memory layer.
[!WARNING] Deixis is pre-alpha. Its semantic tools and guarded rename workflow work, but no stability guarantees are available yet.
A configured Deixis session exposes fifteen read-only MCP tools by default.
Starting it with --allow-mutation adds apply_rename as a sixteenth tool.
| Tool | Purpose |
|---|---|
deixis_server_status | List attached servers or inspect one server in detail. |
hover | Return hover markup at a zero-based UTF-8 position. |
signature_help | Return call signatures and structured parameter details. |
definition | Find definitions. |
declaration | Find declarations. |
type_definition | Find type definitions. |
implementation | Find implementations. |
references | Find references, with explicit declaration inclusion. |
incoming_calls | Find callers and their call sites. |
outgoing_calls | Find callees and their call sites. |
diagnostics | Request pull diagnostics or return cached push diagnostics. |
document_symbols | Inspect a file outline when its symbol structure is needed. |
workspace_symbols | Search attached servers, or one explicitly named server. |
prepare_rename | Check whether a symbol can be renamed at a position. |
preview_rename | Validate edits and return a diff plus a one-shot preview ID. |
apply_rename | Apply one exact preview (requires --allow-mutation). |
Deixis negotiates UTF-8, UTF-16, and UTF-32 positions, synchronizes documents from disk before file-scoped requests, gates every operation on the language server's advertised capabilities, and preserves source-server provenance in results. Several language servers may serve one immutable project root.
Recoverable LSP cancellations are retried up to three times after a bounded readiness wait. Retries share the original request timeout and stop when the MCP caller cancels. If retries are exhausted, the error reports the attempt count and preserves the language server's error details.
Navigation, hover, signature help, references, symbols, and call-hierarchy
preparation also retry empty results observed during indexing and
ContentModified errors within the same timeout and three-retry limit. After
an empty result, Deixis waits for readiness up to the request deadline instead
of spending retries while indexing continues. A server that remains busy
produces a request_timeout error (30 seconds by default).
ContentModified errors wait up to five seconds for readiness per retry.
File-scoped retries verify that both the synchronized document and its
contents on disk are unchanged before reusing a position. Nonempty results and
empty results from servers with ready or unknown status throughout the request
return immediately.
Use definition, type_definition, implementation, and references
directly for targeted symbol navigation. Use document_symbols only when you
need a file outline, such as a view of its types, functions, and nested members.
It is not a default navigation step or a prerequisite for other queries. This
guidance is also included in the MCP initialization instructions and tool
description.
Calling deixis_server_status without arguments lists attached servers in
lexical order and counts the remaining configured servers:
An empty list is shown as attached: none; the count is included even when zero.
Structured output contains attached (an array of configured names) and
notAttached (a count). A server is attached after Deixis has synchronized at
least one document with its current process. Servers that have not started or
have started without a synchronized document count as not attached. Pass
server for its detailed lifecycle and capability snapshot; start: true also
requires an explicit server name.
references, incoming_calls, outgoing_calls, document_symbols, and
workspace_symbols accept an optional limit (default 100, maximum 500) and
offset (default 0). Each page also caps
the compact JSON result array at 64 KiB. The structured pagination object
reports returned, total, truncated, and, when more results remain,
nextOffset. Continue with that offset and the same query arguments. Each
call reruns the query, so file edits, indexing progress, or changes to attached
servers can shift results between pages. Text responses summarize the page.
Every nested document symbol counts toward the limit. Symbols retain their
hierarchy within a page; index and parentIndex identify relationships across
pages, and childCount reports the full number of direct children. Individual
items too large for a page are omitted, with their indexes listed in
pagination.omitted and truncated: true. Pagination advances past these
items. Counts and byte limits apply to the normalized results returned by
Deixis; language servers still compute their full responses.
See DESIGN.md for the protocol and architecture and TODO.md for planned work.
Language servers are separate programs; install the ones you configure and make them visible in the environment of the MCP host.
The latest GitHub release provides archives for x86-64 and ARM64 Linux, Intel and Apple silicon macOS, and x86-64 Windows. Linux releases include both glibc and static musl builds.
Install the appropriate release automatically on Linux or macOS:
Or from PowerShell on Windows:
The installers place deixis in Cargo's binary directory. Each release also
includes SHA-256 checksums and GitHub build attestations. Verify a downloaded
archive with:
Install the default flake package:
Or run it without installing:
Rust 1.98.0 or newer is required:
The crates.io package belongs to the MCP Registry identity
mcp-name: io.github.jolars/deixis.
To build a checkout instead:
The resulting binary is target/release/deixis (deixis.exe on Windows).
Start with the tested example configuration, or define a single server:
Pass the file explicitly with --config, or install it as the user
configuration:
| Platform | Default path when XDG_CONFIG_HOME is unset |
|---|---|
| Linux and other Unix | ~/.config/deixis/config.toml |
| macOS | ~/Library/Application Support/deixis/config.toml |
| Windows | %APPDATA%\deixis\config.toml |
$XDG_CONFIG_HOME/deixis/config.toml takes precedence on every platform when
that variable is set. An explicit --config takes precedence over the user
configuration. Deixis never discovers configuration in the project tree.
The configuration is strict: unknown fields, empty commands, invalid routes, and zero-valued bounds stop startup with an error. The configuration reference documents every field, default, routing rule, and process limit.
Deixis is a local stdio server. The MCP host must launch the binary directly; do
not wrap it in a shell command. Set the project either with --root or by
starting Deixis in the project directory. The root defaults to the current
working directory and is canonicalized once at startup.
Add Deixis from the command line:
Or add a project-scoped .codex/config.toml:
The 70-second host tool timeout accommodates the default 30-second LSP startup
and request bounds when the first tool call starts a server lazily. Codex's
startup_timeout_sec applies to the Deixis MCP handshake, not to a downstream
language server. See the current Codex MCP documentation for all host-side
options.
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/deixis)<a href="https://allmcps.com/mcp/deixis"><img src="https://allmcps.com/api/badge/deixis?style=directory" alt="Deixis on AllMCPs" /></a>