Skip to main content
Glama
impossiblecode

overseer-nvim-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NVIMYesThe Neovim RPC socket path. This is typically set automatically when the MCP client runs inside a Neovim terminal buffer. Some clients require this to be explicitly passed in the env configuration.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}
completions
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
overseer_list_tasksA

List running and completed overseer.nvim tasks (id, name, status), newest first. origin is 'agent' for tasks this server started and 'user' for the ones they started themselves; only clean up your own.

overseer_list_templatesA

List task templates overseer discovers in a directory (npm scripts, go-task, make, just, VS Code tasks, etc). An empty list is normal (many repos declare nothing runnable); use overseer_run with a raw cmd instead. Each entry has provider (which task runner it came from) and desc, which is null when that provider supplies no descriptions (npm and make never do, go-task and just usually do), so a null desc means there is nothing to read, not that something was withheld. Entries that have a description are listed first. params lists arguments a template takes, with required marking those that overseer_run will reject the call without. running_task_id is present when a task of that name is already running, which is your signal not to start a second one. Pass filter to match a substring against name and desc; worth doing in a large monorepo, where this can return well over eighty entries.

overseer_tailA

Return a task's live output, preceded by a status line. task is a numeric id or a case-insensitive name substring; omit it for the most recent task. The status line reports status, exit_code once the task has exited, and total (lines available so far), so you never need a separate overseer_list_tasks to find out whether what you are tailing is still alive. Pass the previous total back as since to get only what is new instead of re-reading the same lines; from tells you where the returned block actually starts, and a from greater than since + 1 means output scrolled past between calls. Set wait_for to a regular expression to block until a matching line appears; use it instead of polling repeatedly. It returns as soon as it matches, or when the task exits, or at timeout_ms (default 15000, max 120000), and reports which of the three happened as waited, so a timeout is never mistaken for success.

overseer_runA

Start a long-running command as an overseer task, so it appears in the user's task list, can be stopped from it, and inherits proper process-group teardown. Use for commands that DO NOT exit on their own: dev servers, file watchers, --watch test runs, log tails. For short commands that terminate by themselves, use Bash instead: you need their output in-band, and round-tripping a fast build through start-then-poll is worse. Pass exactly one of template or cmd. Prefer template (a name from overseer_list_templates) when one matches what you want; it runs the repo's own definition under the name the user already sees in their task list. Most repos declare no templates, in which case pass cmd as an argv array, which works anywhere. Note a cmd is a one-off, though: gone when the session ends, and the user cannot run it again without you. If they want it to persist, it belongs in a directory-local template instead of being re-passed as cmd every time; the server instructions describe how. cmd does not go through a shell, so for pipes, globs, && or env prefixes pass an explicit wrapper: ["sh", "-c", "..."]. Returns once the task has produced output or exited, up to settle_ms (default 1500, 0 to return immediately), so a command that dies on startup reports its failure here rather than looking identical to a healthy one until some later tail. Templates that declare params need them supplied here; pass params as an object of name to value. A missing required param comes back as an error naming what it wanted rather than a prompt opening in the editor.

overseer_restartA

Restart a task by id or name substring (stops it first if running). A name matching more than one task is an error listing the candidates; pass a numeric id instead. Running tasks the user started are refused unless force is set.

overseer_stopA

Stop a running task by id or name substring. Overseer stops the underlying nvim job, so the task's process tree is torn down rather than left orphaned. A name matching more than one task is an error listing the candidates. Running tasks the user started are refused unless force is set, since a substring like 'dev' can match theirs.

overseer_disposeA

Stop (if running) and remove a task from the list by id or name substring. Disposing a finished task is unguarded; a running one the user started is refused unless force is set. A name matching more than one task is an error.

Prompts

Interactive templates invoked by user choice

NameDescription
directory_local_taskDefine a persistent task for this project without any task runner: no npm script, Makefile or Taskfile. Uses overseer's own register_template via a .nvim.lua that stays out of version control if you want it to.
diagnoseWork out why overseer is not showing the tasks you expect, or why a task's output looks empty. Reports what each provider actually tried and why it found nothing.

Resources

Contextual data attached and managed by the client

NameDescription
tasksEvery overseer task with its status, exit code, command and origin. Attach it to give the conversation the current state of the task list without a tool call.

Latest Blog Posts

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/impossiblecode/overseer-nvim-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server