neetodesk setup writes NeetoDesk instructions into the place your assistant already reads, so
it knows which commands exist and how to call them. Run it once per project or per machine,
depending on the assistant, and again after every upgrade so the instructions match the
commands the new version ships.
This is not the same thing as the MCP server.
setup teaches an assistant
to run the CLI as a shell command using your CLI session. The MCP server exposes NeetoDesk as
tools over HTTP, with its own connection and credentials. Use whichever suits the assistant in
front of you, or both.What each command writes
The project-scoped commands write into the working directory, so run them from the repository
root. Each prints
Wrote <path> the first time and Updated <path> afterwards.
Cursor and Windsurf each get a rule file that holds nothing but the NeetoDesk instructions, so
re-running overwrites it. Keep your own rules in a separate file in the same directory rather
than editing this one.
Copilot, Gemini and Codex share their file with your other instructions, so the CLI adds a
## NeetoDesk CLI section between <!-- neetodesk:start --> and <!-- neetodesk:end -->
marker lines and leaves everything outside the markers alone. Re-running replaces the block
between the markers rather than appending a second copy.
Claude Code
Claude Code installs plugins through interactive slash commands, sosetup claude extracts the
plugin and then tells you the two commands to run:
neetodesk doctor, and a
session-start hook that reports whether the CLI is installed and signed in. The command fails if
~/.claude/ does not exist, which means Claude Code has not been run on this machine yet.
Re-running clears and re-extracts the plugin directory.
Everything else
Discovering commands
The instructions point the assistant atneetodesk commands, which prints the complete command
catalog as JSON, including any flag added after the instructions were written. An assistant can
run it whenever it needs the exact flags for a command:
Output for agents
Assistants read command output as text, and JSON spends a lot of tokens on punctuation.--toon emits the same data in a more compact encoding: