Skip to main content
MCP server CX Codex

Periscope — Claude Code MCP server: LSP, linters and DAP from Neovim

Gives your agent the same language servers, formatters and linters your editor uses. One config source instead of a second copy.

Open on GitHub

What Periscope does

Periscope ships as a single Rust binary. On the client side it speaks MCP over stdio; on the editor side it talks msgpack-RPC. In the default managed mode it launches its own headless Neovim instance with a temp socket and the workspace as its directory. Your setup loads the way it does when you open the editor yourself, and the interactive session stays untouched. Project-local config is blocked with --cmd "set noexrc". Attach mode takes --attach <socket> and connects to an editor already started with --listen; the broker never signals or closes a process it did not create.

Tools run as small Lua snippets inside Neovim through nvim_exec_lua and lean on native APIs only. Every per-server option in your lsp/*.lua files carries over, including deliberate choices such as disabling rust-analyzer's built-in diagnostics in favour of bacon-ls. The read side covers broker_status, get_hover, get_definition, get_references, get_diagnostics, get_document_symbols, list_servers, list_formatters, list_linters and list_dap. Two tools execute work: run_format and run_lint. Formatting edits the brokered buffer and hands the text back; the file on disk stays as it was and written is always false. Linting reads only.

Four more tools, the attention_* group, back a coordination board between agents using the MATE protocol. An agent advertises an ordered focus, reads a partner's, then asks for an overlap score or a decision.

What it helps with

  • ask the agent for diagnostics from the same linters your editor runs
  • format a file with your Neovim pipeline and get text back, no disk write
  • pull the LSP server list and DAP modules straight from the config tree
  • keep multiple agents aligned on a shared focus
  • attach to a Neovim that is already running instead of starting another

Example prompts for the agent

  • Run get_diagnostics on the current buffer
  • Format this file with run_format and return the text, don't write it
  • Publish my focus, then ask attention_decide about the partner agent

How to install Periscope

Install

The MCP registry has no launch command for it: see the repository README

Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more

Questions about Periscope

How do I install Periscope in Claude Code?

You start the periscope binary and register it wherever you register MCP servers. There is no config file to pass in; you supply the command and its arguments, for instance --workspace /path/to/project.

What does Periscope do?

It relays MCP client calls into a real Neovim carrying your config, returning LSP, diagnostics, symbols, formatter, linter and DAP data. It also runs your pipelines through run_format and run_lint.

Can Periscope modify files in the project?

No. No tool writes, renames or starts a debug session. run_format alters only the brokered buffer and returns the result as text, and the temp socket is removed once the server exits.

Similar MCP servers

All MCP servers for Agent setup: memory, context, orchestration →

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor