CCM
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
wyre-technology avatar

Hudu

wyre-technology/hudu-mcp
3authSTDIOregistry active
Summary

Connects Claude directly to your Hudu IT documentation platform with 39 tools covering the full API surface. You get complete CRUD operations for companies, assets, articles, passwords, websites, and asset layouts, plus read access to folders, procedures, activity logs, and relations. Six MCP resources give you direct URI access to companies, assets, and articles. Runs via stdio for Claude Desktop or as an HTTP server for other clients. Useful when you need Claude to query your IT documentation, update asset records, retrieve passwords, or manage knowledge base articles without leaving the conversation. Ships with lazy initialization so the SDK client only connects on first use.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Lid closed, agents working
Lid closed, agents working
Keeps your Mac awake while Claude Code, Codex or Cursor works. Lets it sleep when they are done.
Try free for 7 days →
Block distraction from your iPhone for freeBlock distraction from your iPhone for free
Block distraction from your iPhone for free
Block distracting apps from your iPhone permanently without a 3rd party app. Free and open source.
Block now (100% free) →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
Open Steps
Open Steps
Free an open-source skills that make AI coding agents easier to understand, verify, and control.
Download for free →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Lid closed, agents working
Lid closed, agents working
Keeps your Mac awake while Claude Code, Codex or Cursor works. Lets it sleep when they are done.
Try free for 7 days →
Block distraction from your iPhone for freeBlock distraction from your iPhone for free
Block distraction from your iPhone for free
Block distracting apps from your iPhone permanently without a 3rd party app. Free and open source.
Block now (100% free) →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
Open Steps
Open Steps
Free an open-source skills that make AI coding agents easier to understand, verify, and control.
Download for free →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →

hudu-mcp

CI License: Apache-2.0 Node.js

MCP (Model Context Protocol) server for Hudu IT documentation platform. Provides 39 tools and 6 resources for managing companies, assets, articles, passwords, websites, and more through any MCP-compatible client.

Features

  • 39 MCP tools covering all major Hudu resources
  • 6 MCP resources for direct data access
  • Dual auth mode: classic HUDU_API_KEY REST access, or oauth — a thin, authenticated proxy to a newer Hudu instance's own native MCP server
  • Dual transport support: stdio (default) and HTTP Streamable
  • Lazy initialization - SDK client created on first tool call
  • Connection testing built-in
  • All logging to stderr to avoid polluting MCP stdio transport

One-Click Deployment

[!IMPORTANT] Before you click: this server depends on @wyre-technology/node-hudu, which is hosted on the GitHub Packages npm registry. GitHub Packages has no anonymous access — even though the package is public, every npm install needs a token. The cloud builder runs npm install for you, so you must give it one, or the build fails with npm error 401 Unauthorized ... npm.pkg.github.com.

  1. Create a GitHub Personal Access Token with the read:packages scope (classic token). Any GitHub account works — you do not need to be a member of the wyre-technology org to read its public packages.
  2. Add it as a build variable when prompted by the deploy flow:
    • DigitalOcean App Platform → set an encrypted env var named NODE_AUTH_TOKEN with scope Build Time to your PAT (the Dockerfile reads it via ARG NODE_AUTH_TOKEN to authenticate npm ci).
    • Cloudflare Workers → set a build variable named NODE_AUTH_TOKEN to your PAT (Workers → Settings → Build → Variables and Secrets).

Deploy to DO

Deploy to Cloudflare Workers

[!NOTE] The DigitalOcean target builds the full Docker image and runs the complete MCP server over HTTP — this is the recommended path for operators. This repo does not ship a wrangler.json/Workers entrypoint, so for a self-hosted server prefer DigitalOcean or the prebuilt container image (ghcr.io/wyre-ai/hudu-mcp).

Installation

This project depends on @wyre-technology/node-hudu, published to the GitHub Packages npm registry, which requires a token even for public packages. Authenticate npm once before installing:

git clone https://github.com/WYRE-AI/hudu-mcp.git
cd hudu-mcp

# Authenticate npm to GitHub Packages (token needs the read:packages scope)
export NODE_AUTH_TOKEN=$(gh auth token)   # or a PAT with read:packages

npm install
npm run build

The repo's .npmrc already points the @wyre-technology scope at GitHub Packages and reads the token from NODE_AUTH_TOKEN, so no further config is needed.

Configuration

VariableRequiredDefaultDescription
HUDU_BASE_URLYes-Your Hudu instance URL (e.g., https://docs.example.com)
HUDU_API_KEYNo-Your Hudu API key. Setting this selects api_key auth mode (see below); omitting it defaults to oauth mode.
HUDU_AUTH_MODENoauto-detectedExplicitly force api_key or oauth. Overrides the auto-detection below.
MCP_TRANSPORTNostdioTransport type: stdio or http
AUTH_MODENoenvenv reads HUDU_* from the environment. gateway requires X-Hudu-Base-URL and X-Hudu-API-Key on each /mcp request and does not fall back to those variables.
CONDUIT_S2S_SECRETYes for HTTP-Service-to-service secret. HTTP logs an error and exits non-zero when this is empty or a known placeholder (changeme, secret, replace-me, your-s2s-secret, and the other example values). Generate one with openssl rand -hex 32. Never commit a real value. The value is never logged.
MCP_ALLOW_INSECURE_DEVNo-Set to exactly 1 only for local development to start HTTP without CONDUIT_S2S_SECRET. The process logs a warning, does not enforce X-Gateway-S2S, and binds 127.0.0.1 only. A non-loopback MCP_HTTP_HOST is ignored and the override is logged. A known placeholder secret still refuses to start.
MCP_HTTP_PORTNo8080HTTP server port (when using http transport)
MCP_HTTP_HOSTNo127.0.0.1Bind address when a real CONDUIT_S2S_SECRET is set. The container image sets 0.0.0.0. Without a real secret the listener is forced to 127.0.0.1.
MCP_SERVER_NAMENohudu-mcpServer name reported to MCP clients
MCP_SERVER_VERSIONNo1.0.0Server version reported to MCP clients
LOG_LEVELNoinfoLog level: error, warn, info, debug
LOG_FORMATNosimpleLog format: json or simple

Authentication modes

This server talks to Hudu in one of two ways. HUDU_AUTH_MODE picks between them; if it's unset, the mode is auto-detected from whether HUDU_API_KEY is set:

  • api_key (auto-selected when HUDU_API_KEY is set) — the classic mode. This server calls Hudu's REST API directly via @wyre-technology/node-hudu and implements all 39 tools itself, exactly as before. This is the mode every existing deployment already uses, and it is 100% unchanged and unaffected by everything below.

  • oauth (auto-selected when HUDU_API_KEY is not set) — for newer Hudu instances that expose their own native MCP server (Hudu Admin -> External Apps -> MCP), protected by interactive OAuth rather than a static API key. In this mode hudu-mcp does not reimplement any tools; it acts as a thin, authenticated proxy that forwards MCP requests straight through to {HUDU_BASE_URL}/mcp and relays the responses back, so you automatically get whatever tool surface that Hudu instance exposes.

    The OAuth flow (RFC 9728/8414 discovery, RFC 7591 Dynamic Client Registration, PKCE authorization_code, no client secret — this is a public client) runs the first time a request needs a token:

    1. hudu-mcp discovers the instance's OAuth metadata from {HUDU_BASE_URL}/.well-known/oauth-protected-resource/mcp and {HUDU_BASE_URL}/.well-known/oauth-authorization-server.
    2. It registers itself as a public OAuth client via Dynamic Client Registration (once per Hudu instance — the issued client_id is cached).
    3. It prints an authorization URL to stderr. Open it in a browser and approve access.
    4. A short-lived local server on http://127.0.0.1:<ephemeral-port>/callback catches the redirect and exchanges the code for tokens.
    5. Tokens are cached at ~/.hudu-mcp/credentials-<hash-of-base-url>.json (file mode 0600), and transparently refreshed on later runs — you should only see the browser prompt again if the refresh token itself expires or is revoked.

    Because this flow needs a browser that can reach a callback server bound to 127.0.0.1 on the machine running hudu-mcp, it works for stdio (always local to the calling MCP client) and for a self-hosted http transport running on the same machine you're browsing from — e.g. local testing on localhost:8080. It does not work for an http transport deployed to a remote host you don't have browser-level access to (a cloud VM, a container, etc.): your browser can't reach that machine's own loopback interface to complete the redirect, so the first-run authorization would hang. This is unrelated to gateway mode (AUTH_MODE=gateway), which is a stateless multi-tenant proxy with credentials injected per request via headers and has no single user to run a browser flow for at all — setting HUDU_AUTH_MODE=oauth together with AUTH_MODE=gateway is a startup error.

    HTTP transport (both api_key and oauth) also requires CONDUIT_S2S_SECRET or MCP_ALLOW_INSECURE_DEV=1. The dev flag binds 127.0.0.1 only. See HTTP authentication. The stdio transport does not use CONDUIT_S2S_SECRET.

Usage

Claude Desktop (stdio)

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "hudu": {
      "command": "node",
      "args": ["/path/to/hudu-mcp/dist/entry.js"],
      "env": {
        "HUDU_BASE_URL": "https://docs.example.com",
        "HUDU_API_KEY": "your-api-key"
      }
    }
  }
}

For a newer Hudu instance with its own native MCP server (see Authentication modes), omit HUDU_API_KEY and only set HUDU_BASE_URL — hudu-mcp will print an authorization URL to the terminal the first time it's launched:

{
  "mcpServers": {
    "hudu": {
      "command": "node",
      "args": ["/path/to/hudu-mcp/dist/entry.js"],
      "env": {
        "HUDU_BASE_URL": "https://docs.example.com"
      }
    }
  }
}

HTTP Transport

/health stays unauthenticated and does not read credentials.

CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
HUDU_BASE_URL=https://docs.example.com \
HUDU_API_KEY=your-api-key \
MCP_TRANSPORT=http \
MCP_HTTP_PORT=8080 \
npm start

Local HTTP without a service-to-service secret is development-only. It binds 127.0.0.1 and logs a warning:

MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start
HTTP authentication

With MCP_TRANSPORT=http and a real CONDUIT_S2S_SECRET, every /mcp request must include X-Gateway-S2S. The check is verifyS2sHeader in src/mcp/s2s-verify.ts: the header value is t=<unix seconds>,v1=<hex>, where the hex is HMAC-SHA256 of the literal string t=<unix seconds> keyed with CONDUIT_S2S_SECRET (64 lowercase hex characters). The timestamp must be within 300 seconds of the server clock. A missing or invalid header is HTTP 401, before Hudu credentials are read.

TS=$(date +%s)
SIG=$(printf 't=%s' "$TS" | openssl dgst -sha256 -hmac "$CONDUIT_S2S_SECRET" -hex | awk '{print $NF}')
curl -sS http://127.0.0.1:8080/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H "X-Gateway-S2S: t=${TS},v1=${SIG}" \
  -H "X-Hudu-Base-URL: $HUDU_BASE_URL" \
  -H "X-Hudu-API-Key: $HUDU_API_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

In AUTH_MODE=gateway, /mcp also requires X-Hudu-Base-URL and X-Hudu-API-Key. Those headers are the only credential source for that request. A missing header is HTTP 401 and does not fall back to HUDU_BASE_URL or HUDU_API_KEY in the environment.

Compose refuses to start when CONDUIT_S2S_SECRET is unset. The gateway service sets AUTH_MODE=gateway, does not inject HUDU_BASE_URL or HUDU_API_KEY, and publishes 127.0.0.1:8080:8080:

CONDUIT_S2S_SECRET=your-s2s-secret docker compose up

The image listens on 0.0.0.0 inside the container and still refuses to start without a real secret. Publish the port on loopback:

docker run \
  -e CONDUIT_S2S_SECRET=your-s2s-secret \
  -e AUTH_MODE=gateway \
  -p 127.0.0.1:8080:8080 \
  ghcr.io/wyre-ai/hudu-mcp

Tools (39)

Companies (8 tools)

ToolDescription
hudu_list_companiesList companies with optional filters
hudu_get_companyGet a company by ID
hudu_create_companyCreate a new company
hudu_update_companyUpdate an existing company
hudu_delete_companyDelete a company
hudu_archive_companyArchive a company
hudu_unarchive_companyUnarchive a company
hudu_test_connectionTest the connection to Hudu API

Assets (6 tools)

ToolDescription
hudu_list_assetsList assets with optional filters
hudu_get_assetGet an asset by ID
hudu_create_assetCreate a new asset
hudu_update_assetUpdate an existing asset
hudu_delete_assetDelete an asset
hudu_archive_assetArchive an asset

Asset Layouts (4 tools)

ToolDescription
hudu_list_asset_layoutsList asset layouts
hudu_get_asset_layoutGet an asset layout by ID
hudu_create_asset_layoutCreate a new asset layout
hudu_update_asset_layoutUpdate an existing asset layout

Asset Passwords (5 tools)

ToolDescription
hudu_list_asset_passwordsList asset passwords
hudu_get_asset_passwordGet an asset password by ID
hudu_create_asset_passwordCreate a new asset password
hudu_update_asset_passwordUpdate an existing asset password
hudu_delete_asset_passwordDelete an asset password

Articles (6 tools)

ToolDescription
hudu_list_articlesList knowledge base articles
hudu_get_articleGet an article by ID
hudu_create_articleCreate a new article
hudu_update_articleUpdate an existing article
hudu_delete_articleDelete an article
hudu_archive_articleArchive an article

Websites (5 tools)

ToolDescription
hudu_list_websitesList monitored websites
hudu_get_websiteGet a website by ID
hudu_create_websiteCreate a new website
hudu_update_websiteUpdate an existing website
hudu_delete_websiteDelete a website

Other Resources (5 tools)

ToolDescription
hudu_list_foldersList folders
hudu_list_proceduresList procedures
hudu_list_activity_logsList activity logs
hudu_list_relationsList relations
hudu_list_magic_dashList Magic Dash items

Resources

URIDescription
hudu://companiesList of all companies
hudu://companies/{id}Company details by ID
hudu://assetsList of all assets
hudu://assets/{id}Asset details by ID
hudu://articlesList of all articles
hudu://articles/{id}Article details by ID

Development

# Install dependencies
npm install

# Build
npm run build

# Run in development mode
npm run dev

# Clean build output
npm run clean

License

Apache-2.0

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Lid closed, agents working
Lid closed, agents working
Keeps your Mac awake while Claude Code, Codex or Cursor works. Lets it sleep when they are done.
Try free for 7 days →
Block distraction from your iPhone for freeBlock distraction from your iPhone for free
Block distraction from your iPhone for free
Block distracting apps from your iPhone permanently without a 3rd party app. Free and open source.
Block now (100% free) →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
Open Steps
Open Steps
Free an open-source skills that make AI coding agents easier to understand, verify, and control.
Download for free →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →

Configuration

HUDU_API_KEY*secret

Hudu API key from your Hudu instance admin settings

HUDU_BASE_URL*

Hudu instance base URL (e.g. https://yourcompany.huducloud.com)

MCP_TRANSPORTdefault: stdio

Transport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.

AUTH_MODEdefault: env

Credential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.

LOG_LEVELdefault: info

Log verbosity: debug, info, warn, error

Registryactive
Packageghcr.io/wyre-technology/hudu-mcp:v1.3.1
TransportSTDIO
AuthRequired
UpdatedJun 3, 2026
View on GitHub

More from wyre-technology

  • Syncro3
  • Action12
  • QuickBooks Online2
  • Avanan1
  • ConnectWise Automate1
  • HaloPSA1
  • SuperOps1
  • Xero1
  • Huntress1
  • ThreatLocker1
  • Abnormal Security
  • Alternative Payments
  • Auvik
  • Avanan MSP (Legacy SmartAPI)
  • Blumira
  • Crewhu
  • Datto BCDR
  • Domotz
  • IQMS / DELMIA Apriso
  • Ironscales
  • Kaseya BMS
  • Kaseya Quote Manager
  • Kaseya VSA
  • KnowBe4