Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions plugins/claude/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "desktop-commander",
"displayName": "Desktop Commander",
"version": "0.1.0",
"description": "MCP server for terminal commands, process management, and file operations across text, code, PDF, DOCX, Excel, images, and structured data",
"author": {
"name": "Desktop Commander",
Expand Down
11 changes: 8 additions & 3 deletions plugins/claude/README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
# Desktop Commander Claude Code Plugin

Desktop Commander gives Claude Code access to a local MCP server for terminal sessions, filesystem work, structured documents, search, process management, and SSH workflows.
Desktop Commander gives Claude Code access to a local MCP server for terminal sessions, filesystem work, structured documents, search, process management, and SSH workflows — plus a set of skills that steer the agent toward those capabilities for common tasks.

## Components

- Skill: `desktop-commander-overview`, available as `/desktop-commander:desktop-commander-overview`, explains when to use Desktop Commander MCP tools and how common workflows compose.
- MCP server: `desktop-commander`, installed with `npx -y @wonderwhy-er/desktop-commander@latest`.
- Skill: `desktop-commander-overview` — explains when to use Desktop Commander MCP tools and how common workflows compose.
- Skill: `terminal` — persistent shells/REPLs, SSH, Windows PowerShell, process/port inspection, and saving recurring workflows as scripts.
- Skill: `computer-health-check` — read-only system health check (CPU, memory, disk, battery, startup) with safe, opt-in cleanups.
- Skill: `ai-tools-setup` — install, configure, and repair Claude Desktop, MCP servers, and local AI tooling (mcp.json / claude_desktop_config.json).
- Skill: `knowledge-base` — build and maintain a Markdown knowledge base any AI agent can navigate without a vector database.
- Skill: `obsidian-vault` — organize Obsidian vaults: MOCs, wikilinks, properties, Dataview/Bases dashboards, and orphan/link cleanup.

## Usage

Install the plugin in Claude Code, then ask Claude to use Desktop Commander when it needs persistent shells, long-running processes, local file reads, Excel/DOCX/PDF handling, large CSV analysis, or remote SSH sessions.
Install the plugin in Claude Code, then ask Claude to use Desktop Commander when it needs persistent shells, long-running processes, local file reads, Excel/DOCX/PDF handling, large CSV analysis, remote SSH sessions, a system health check, AI-tooling setup, or knowledge-base/Obsidian organization.

For full project documentation, see the repository README.
107 changes: 107 additions & 0 deletions plugins/claude/skills/ai-tools-setup/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
---
name: ai-tools-setup
version: 0.1.0
audience: agent
description: >-
Set up, connect, validate, and repair Claude Desktop and MCP servers using
Desktop Commander — inspecting and fixing mcp.json / claude_desktop_config.json,
getting MCP servers to connect, and diagnosing local AI tooling. Use when a
user wants to install, configure, connect, validate, or fix Claude Desktop, an
MCP server, an MCP config file, or a local AI agent/gateway. Trigger on the
symptoms that actually bring people in: "Claude can't see my tools", "my MCP
server isn't showing up", "tools aren't loading in Claude", "add an MCP
server", "my MCP isn't connecting", "fix my Claude Desktop config", "the agent
won't respond", "wire up Ollama / LM Studio", "restart Claude Desktop". Also
covers local agent gateways like OpenClaw and Hermes.
---

# AI Tools Setup Assistant

Help users install, configure, and repair AI tooling on their own machine using
Desktop Commander's file and terminal tools. The work is usually
**configure-and-troubleshoot**, not clean installs — assume something already
exists and may be half-broken.

## Golden rules (read before doing anything)

1. **Detect the OS and shell first.** Read `get_config` and use its `systemInfo`
and `allowedDirectories` — file paths, commands, and config locations differ
across macOS, Windows, and Linux, so confirm the platform before assuming
anything.
2. **Verify the model/API key works before you build.** The most common reason
these sessions dead-end is a provider auth or billing error discovered
*after* a lot of setup work. Make one tiny test call with `start_process` (a quick
curl to the provider) early, and tell the user plainly if the key is invalid
or out of credit.
3. **Translate errors, don't dump them.** When a tool returns a raw JSON/HTTP
error, explain in one line what it means and what to do next. If a model is
missing, deprecated, rate-limited, or doesn't support tool-calling, suggest a
concrete working alternative instead of retrying the same thing.
4. **Never echo secrets.** API keys, tokens, and passwords go *into the right
config or `.env` file* — never repeated back in chat. If a user pastes a live
secret, warn them, use it, and suggest they rotate it if it was shared
insecurely. Redact secrets in any output, logs, or summaries you produce.
5. **Back up before you edit.** Copy the config to a `.bak` first with
`start_process` (`cp file.json file.json.bak`, or `copy` on Windows), then make
the change with `edit_block` so existing entries survive — reach for
`write_file` only on a from-scratch config. Validate the JSON after every edit
by parsing it with `start_process`.
6. **Verify, then stop.** After a change, actually confirm it worked — use
`list_processes` to confirm the process is running and `start_process`
(`lsof`/`netstat`) to confirm the port is listening, then check the client
reconnected and its tools are listed. Don't declare success on a guess.
7. **Make it repeatable.** Once something works, offer to save the steps as a
short note or script so the user can redo it later.

## What this skill covers

This skill routes to one of three reference files depending on the task. Read
the relevant file before acting — they contain the exact paths, commands, and
known failure modes.

- **Claude Desktop & MCP servers** — installing Claude Desktop, adding MCP
servers, and inspecting / validating / repairing MCP config files
(`claude_desktop_config.json`, `.claude/mcp.json`, `~/.lmstudio/mcp.json`,
and similar). Also connection health checks.
→ Read `references/claude-desktop-mcp.md`

- **OpenClaw** — a self-hosted multi-channel gateway for AI agents. Install,
onboard, wire a model/provider, connect channels (Telegram, Slack, iMessage,
etc.), diagnose the gateway, and uninstall.
→ Read `references/openclaw.md`

- **Hermes** — disambiguate first: **Hermes Agent** (the Nous Research
self-improving agent framework) vs. **Hermes 3** (just a local LLM you run via
Ollama). Install, run `hermes setup --portal`, configure providers, personality
(`SOUL.md`), memory/skills, MCP, and messaging.
→ Read `references/hermes.md`

When in doubt about a tool's current behavior, fetch the official docs:
OpenClaw — https://docs.openclaw.ai/ ·
Hermes — https://hermes-agent.nousresearch.com/docs/

## General workflow

1. **Clarify the goal and platform.** Install vs. configure vs. fix? Which OS?
Which tool/client?
2. **Inspect current state.** `read_file` the relevant config files and use
`list_processes` to check whether the relevant process/port/service is already
running before changing anything.
3. **Read the matching reference file** for exact paths and commands.
4. **Make the smallest change that moves forward**, backing up configs first.
5. **Verify** the result concretely.
6. **Summarize** what changed, where, and how to undo it — with secrets redacted.

## A generic "my agent isn't responding" diagnostic

Use this order for OpenClaw, Hermes, or any local agent/gateway:

1. **Provider/auth** — is a valid API key configured for the active provider,
and does it have credit? (Most failures stop here.)
2. **Model** — does the chosen model exist, and does it support tool-calling?
Local models especially often don't.
3. **Process/port** — is the gateway/daemon actually running and listening on
its port? Is another process holding that port?
4. **Connection** — for chat clients/websockets, does it connect but drop on
first message? That usually points back to provider/model, not networking.
5. **Logs** — read the tool's logs for the first real error, not the last one.
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# Claude Desktop & MCP Servers

How to install Claude Desktop, add MCP servers, and inspect / validate / repair
MCP configuration files. This is the most common and most mechanical task — high
success rate when done carefully.

## Config file locations

MCP-capable clients each keep their own config. Find the right one first.

| Client | macOS | Windows |
|---|---|---|
| Claude Desktop | `~/Library/Application Support/Claude/claude_desktop_config.json` | `%APPDATA%\Claude\claude_desktop_config.json` |
| Claude Code (per project) | `<project>/.claude/mcp.json` or `.mcp.json` | same |
| LM Studio | `~/.lmstudio/mcp.json` | `%USERPROFILE%\.lmstudio\mcp.json` |
| Cursor | `~/.cursor/mcp.json` | `%USERPROFILE%\.cursor\mcp.json` |

If the file doesn't exist yet, create it with a minimal valid skeleton:

```json
{ "mcpServers": {} }
```

## Anatomy of an MCP server entry

A stdio server entry has a launch `command`, `args`, and optional `env`:

```json
{
"mcpServers": {
"example": {
"command": "npx",
"args": ["-y", "@scope/some-mcp-server"],
"env": { "SOME_API_KEY": "..." }
}
}
}
```

Notes:
- On Windows, `npx` sometimes must be invoked as `cmd /c npx ...` — if a server
fails to launch on Windows but works on macOS, try wrapping the command.
- Use absolute paths for local scripts; `~` is not expanded inside JSON.
- Secrets belong in `env` here (or the server's own config), never pasted into
chat.

## Add a server end-to-end

1. **Confirm prerequisites.** Most MCP servers need Node (check `node -v`; many
need 18+). Some need Python or Docker. Install the runtime if missing.
2. **Back up the config** (`claude_desktop_config.json` →
`claude_desktop_config.json.bak`).
3. **Add the server block** under `mcpServers`. Preserve existing entries.
4. **Validate the JSON** (parse it; check for trailing commas, unescaped
backslashes in Windows paths, missing quotes).
5. **Fully restart the client.** Claude Desktop must be quit and reopened — a
window reload is not enough.
6. **Verify.** Confirm the server appears and its tools are listed. If the
client shows a "failed" server, read its MCP log.

## Inspect, validate, repair (the core job)

When a user says MCP "isn't working," diagnose in this order:

1. **Read the config file** and pretty-print it. Most breakages are here.
2. **Validate JSON.** The frequent culprits:
- trailing comma after the last entry
- single backslashes in Windows paths (need `\\` or forward slashes)
- smart quotes from copy-paste instead of straight quotes
- a server block pasted at the wrong nesting level
3. **Check the launch command resolves** — does `command` exist on PATH? Run it
manually in a terminal to see the real error.
4. **Check credentials** — is the required `env` key present and valid?
5. **Repair, back up first, restart the client, then re-verify.**

## Connection health check

Separate the three failure classes so you fix the right thing:

- **Config typo** → client shows the server as failed immediately on start; the
JSON or command is wrong. Fix the file.
- **Server down / crashes** → server starts then exits; running the command
manually reproduces the crash. Fix deps/runtime.
- **Auth failure** → server starts and lists tools, but calls fail with 401/403.
Fix the API key/token.

## Claude Desktop install

If Claude Desktop itself isn't installed, point the user to the official
download and confirm the app launches before touching MCP config. Don't
side-load from unofficial mirrors.

## Safety

- Only add MCP servers from sources the user trusts; an MCP server runs with the
user's privileges.
- Back up before editing; redact secrets in summaries; restart the client to
apply changes.
90 changes: 90 additions & 0 deletions plugins/claude/skills/ai-tools-setup/references/hermes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Hermes

**Disambiguate first — "Hermes" means two different things:**

1. **Hermes Agent** — the self-improving AI agent framework built by Nous
Research (a learning loop that creates/improves skills, persistent memory,
runs across many platforms). This is almost always what users mean when they
say "set up Hermes." Docs: https://hermes-agent.nousresearch.com/docs/
2. **Hermes 3 (and other Hermes models)** — Nous Research's open-weight LLMs.
"Set up Hermes 3" usually just means running a local model: `ollama pull
hermes3` then `ollama run hermes3`. If that's the goal, treat it as ordinary
local-model setup and stop here.

The rest of this file covers **Hermes Agent**. MIT licensed. For current
commands, fetch the docs (there's also `/docs/llms.txt` for a compact index).

## Install

**Desktop app (Windows/macOS):** download the Hermes Desktop installer from
https://hermes-agent.nousresearch.com/ and run it (installs CLI + desktop app).

**CLI only:**

```bash
# Linux / macOS / WSL2 / Android (Termux)
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
```

```powershell
# Windows (native), in PowerShell
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
```

See the full Installation Guide for what the installer does, per-user vs. root
layout, and Windows notes.

## Fastest path to a working agent

```bash
hermes setup --portal
```

One OAuth via **Nous Portal** covers a model plus the four Tool Gateway tools
(web search, image generation, TTS, browser). This is the smoothest first run —
recommend it unless the user specifically wants their own provider keys.

## Providers & config

Hermes works with **Nous Portal, OpenRouter, OpenAI, or any compatible
endpoint**. Configuration lives in Hermes' config file (see the Configuration
docs). Common requests:

- Wire OpenRouter / OpenAI / a custom endpoint with the user's own key — verify
the key works before going further.
- "Use my workspace Gemini / no API cost" and similar — set the matching
provider/model in config; confirm the model ID is current and supported.
- If a Portal login code is rejected, re-run `hermes setup --portal` and check
the user is pasting the current code.

## Key features to configure

- **Personality (`SOUL.md`)** — defines the agent's default voice/tone. Users
often ask to generate or update it. Keep it a plain Markdown persona file.
- **Memory** — persistent, grows across sessions; mostly automatic.
- **Skills** — procedural memory the agent creates and reuses; compatible with
the open agentskills.io standard, so skills are portable.
- **MCP integration** — Hermes can connect to MCP servers and filter their
tools. For config-file mechanics, see `claude-desktop-mcp.md`; for Hermes-side
specifics see the docs' MCP page.
- **Messaging gateway** — Telegram, Discord, Slack, WhatsApp, Signal, Teams, and
20+ platforms from one gateway. Telegram is the quickest to validate.
- **Backends** — Hermes can run on 6 terminal backends: local, Docker, SSH,
Daytona, Singularity, Modal. Daytona/Modal give serverless persistence (idle
≈ free). Pick local for a first run; Docker if the user wants isolation.

## Troubleshooting checklist

1. **Install/update stuck** → check the installer/log output; confirm the
runtime and PATH; on Windows watch for permission/antivirus interference.
Re-run the installer if needed.
2. **"Agent won't respond / got stuck"** → run the generic diagnostic: provider
key valid + has credit → model exists and supports tools → process running →
read logs for the first real error.
3. **Portal/auth errors** → re-run `hermes setup --portal`; verify the account
and code.
4. **Provider model errors (404/402/403)** → switch to a current, available
model.

See the FAQ & Troubleshooting page in the docs for tool- and platform-specific
fixes.
Loading
Loading