Skip to content

Add psd-infrastructure plugin: Aruba, FortiAnalyzer, Freshservice, DocBot - #80

Closed
reeseherber wants to merge 1 commit into
psd401:mainfrom
reeseherber:add-psd-infrastructure
Closed

Add psd-infrastructure plugin: Aruba, FortiAnalyzer, Freshservice, DocBot#80
reeseherber wants to merge 1 commit into
psd401:mainfrom
reeseherber:add-psd-infrastructure

Conversation

@reeseherber

Copy link
Copy Markdown

What

New psd-infrastructure plugin — the infrastructure counterpart to psd-productivity, per Kris's suggestion to package the homebuilt MCP servers for team distribution.

System MCP server Companion skill Tools
Aruba wireless aruba aruba-wireless 6 (read-only)
FortiAnalyzer fortianalyzer fortianalyzer-logs 25
Freshservice freshservice freshservice-tickets 15
DocBot docbot docbot-docs 30

How it stays current

  • Server code: scripts/run-server.sh clones each server from its internal psd401 repo on first use and git pull --ff-onlys on every launch. Pushing to a server repo ships to everyone's next session — no plugin release needed. Verified live: pushed a freshservice fix mid-build and the launcher picked it up on the next start.
  • Skills/config: the plugin intentionally has no version field, so every commit to this repo counts as a new plugin version for auto-update (a set-but-unbumped version silently freezes updates per the plugin docs).

Tested

All four servers probed end-to-end through the launcher (fresh clone → install → tools/list): fortianalyzer 25 tools, freshservice 15, docbot 30, aruba 5. Skills were reviewed for leaks (public repo — placeholders only, verified clean) and tool-name accuracy (100% match against source).

Notes

  • Aruba currently serves 5 tools from the pushed commit; aruba_get_node_config exists only in Reese's uncommitted working copy and will appear when committed (the skill already documents it, including the output-size warning).
  • zabbix and onesync servers are excluded until their connection issues are fixed; mac-mini and pinchtab are personal tooling and stay out.
  • New internal repos created for previously-local servers: aruba-mcp, fortianalyzer-mcp, freshservice-mcp.
  • Coworker onboarding is three one-time steps (install, enable marketplace auto-update, credentials) — see the plugin README. Managed settings with "autoUpdate": true on the marketplace entry would remove the toggle step org-wide.

…ce, DocBot)

Four MCP servers bundled via a clone-and-pull launcher plus companion
skills. Server code auto-updates from internal psd401 repos on every
launch; the plugin omits its version field so every marketplace commit
ships to users with auto-update enabled. Marketplace 2.22.1 -> 2.23.0.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds the psd-infrastructure plugin, which bundles four MCP servers (Aruba, FortiAnalyzer, Freshservice, and DocBot) and their companion skills. The review feedback identifies several key improvements: removing the allowed-tools restriction in the skill frontmatter files to allow the custom MCP tools to run, adding a fallback to standard git clone in the launcher script if gh is unauthenticated, and optimizing bun install execution to reduce startup latency.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment on lines +14 to +15
allowed-tools: Read, Bash
version: 0.1.0

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Specifying allowed-tools: Read, Bash in the skill frontmatter restricts Claude to only using those two tools when this skill is active. This will completely block Claude from calling any of the custom aruba_* MCP tools defined by the plugin. Removing this restriction allows Claude to use all registered tools, including the MCP tools.

Suggested change
allowed-tools: Read, Bash
version: 0.1.0
version: 0.1.0

Comment on lines +15 to +16
allowed-tools: Read, Bash
version: 0.1.0

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Specifying allowed-tools: Read, Bash in the skill frontmatter restricts Claude to only using those two tools when this skill is active. This will completely block Claude from calling any of the custom docbot_* MCP tools defined by the plugin. Removing this restriction allows Claude to use all registered tools, including the MCP tools.

Suggested change
allowed-tools: Read, Bash
version: 0.1.0
version: 0.1.0

Comment on lines +15 to +16
allowed-tools: Read, Bash
version: 0.1.0

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Specifying allowed-tools: Read, Bash in the skill frontmatter restricts Claude to only using those two tools when this skill is active. This will completely block Claude from calling any of the custom faz_* or search_logs MCP tools defined by the plugin. Removing this restriction allows Claude to use all registered tools, including the MCP tools.

Suggested change
allowed-tools: Read, Bash
version: 0.1.0
version: 0.1.0

Comment on lines +15 to +16
allowed-tools: Read, Bash
version: 0.1.0

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Specifying allowed-tools: Read, Bash in the skill frontmatter restricts Claude to only using those two tools when this skill is active. This will completely block Claude from calling any of the custom freshservice_* MCP tools defined by the plugin. Removing this restriction allows Claude to use all registered tools, including the MCP tools.

Suggested change
allowed-tools: Read, Bash
version: 0.1.0
version: 0.1.0

Comment on lines +31 to +38
clone_repo() {
mkdir -p "$CACHE_ROOT"
if command -v gh >/dev/null 2>&1; then
gh repo clone "$REPO" "$DIR" -- --quiet >&2
else
git clone --quiet "https://github.com/$REPO.git" "$DIR" >&2
fi
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

If gh is installed but not authenticated (or authenticated to a different account/org), gh repo clone will fail and immediately exit the script due to set -e. Adding a fallback to standard git clone on failure, and cleaning up any partial directory, makes the cloning process much more robust.

Suggested change
clone_repo() {
mkdir -p "$CACHE_ROOT"
if command -v gh >/dev/null 2>&1; then
gh repo clone "$REPO" "$DIR" -- --quiet >&2
else
git clone --quiet "https://github.com/$REPO.git" "$DIR" >&2
fi
}
clone_repo() {
mkdir -p "$CACHE_ROOT"
if command -v gh >/dev/null 2>&1; then
gh repo clone "$REPO" "$DIR" -- --quiet >&2 || {
log "gh repo clone failed, falling back to git clone"
rm -rf "$DIR"
git clone --quiet "https://github.com/$REPO.git" "$DIR" >&2
}
else
git clone --quiet "https://github.com/$REPO.git" "$DIR" >&2
fi
}

;;
fortianalyzer)
command -v bun >/dev/null 2>&1 || { log "bun is required (brew install oven-sh/bun/bun)"; exit 1; }
bun install --silent >&2 || true

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Running bun install on every single launch of the MCP server adds unnecessary startup latency and network overhead. We can optimize this by only running bun install if node_modules does not exist or if package.json is newer than node_modules (indicating an update occurred). We only touch node_modules on success to ensure retries on failure.

Suggested change
bun install --silent >&2 || true
if [ ! -d "node_modules" ] || [ "package.json" -nt "node_modules" ]; then
if bun install --silent >&2; then
touch "node_modules"
fi
fi

;;
freshservice)
command -v bun >/dev/null 2>&1 || { log "bun is required (brew install oven-sh/bun/bun)"; exit 1; }
bun install --silent >&2 || true

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Running bun install on every single launch of the MCP server adds unnecessary startup latency and network overhead. We can optimize this by only running bun install if node_modules does not exist or if package.json is newer than node_modules (indicating an update occurred). We only touch node_modules on success to ensure retries on failure.

Suggested change
bun install --silent >&2 || true
if [ ! -d "node_modules" ] || [ "package.json" -nt "node_modules" ]; then
if bun install --silent >&2; then
touch "node_modules"
fi
fi

;;
docbot)
command -v bun >/dev/null 2>&1 || { log "bun is required (brew install oven-sh/bun/bun)"; exit 1; }
bun install --silent >&2 || true

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Running bun install on every single launch of the MCP server adds unnecessary startup latency and network overhead. We can optimize this by only running bun install if node_modules does not exist or if package.json is newer than node_modules (indicating an update occurred). We only touch node_modules on success to ensure retries on failure.

Suggested change
bun install --silent >&2 || true
if [ ! -d "node_modules" ] || [ "package.json" -nt "node_modules" ]; then
if bun install --silent >&2; then
touch "node_modules"
fi
fi

@reeseherber

Copy link
Copy Markdown
Author

Closing: we want infrastructure details out of the public marketplace. The plugin is moving to an internal-visibility marketplace repo (psd401/psd-claude-plugins-internal) instead — same content, org-members-only.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant