Hudu MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Hudu MCP Server Search Hudu for VPN articles"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Hudu MCP Server
Connect Claude AI to your Hudu IT documentation platform. Once installed, Claude can search, read, create, and update your Hudu knowledge base, assets, passwords, companies, and more — directly from any Claude interface.
What This Does
This server implements the Model Context Protocol (MCP), giving Claude secure, structured access to the Hudu REST API. It runs as a local stdio process that Claude Desktop or Claude Code launches on demand.
Available Tools
Category | Tools |
Articles | list, get, create, update, delete, archive, unarchive |
Assets | list (global + per-company), get, create, update, delete, archive, unarchive, move layout |
Asset Layouts | list, get, create, update |
Asset Passwords | list, get, create, update, delete, archive, unarchive |
Companies | list, get, create, update, delete, archive, unarchive |
Expirations | list, update, delete |
Exports | list, get, create |
S3 Exports | create |
Flag Types | list, get, create, update, delete |
Flags | list, get, create, update, delete |
Folders | list, get, create, update, delete |
Groups | list, get |
IP Addresses | list, get, create, update, delete |
Lists | list, get, create, update, delete |
Magic Dash | list, upsert, delete (by title or ID), update positions |
Matchers | list, update, delete |
Networks | list, get, create, update, delete |
Password Folders | list, get, create, update, delete |
Photos | list, get, create, update, delete |
Public Photos | list, get, create, update |
Procedures | list, get, create, update, delete, kickoff, duplicate, create from template |
Procedure Tasks | list, get, create, update, delete |
Rack Storages | list, get, create, update, delete |
Rack Storage Items | list, get, create, update, delete |
Relations | list, create, delete |
Uploads | list, get, delete |
Users | list, get |
VLANs | list, get, create, update, delete |
VLAN Zones | list, get, create, update, delete |
Websites | list, get, create, update, delete |
Activity Logs | list, delete |
Navigation | jump to card, jump to company |
API Info | get version |
Related MCP server: HaloPSA API Gateway MCP Server
Prerequisites
Node.js 18 or newer — nodejs.org
Claude Desktop or Claude Code
A Hudu API key — generate one at Hudu Admin → Basic Information → API Keys
Installation
1. Clone and build
Clone the repo into the standard install location and build:
git clone https://github.com/Allied-Business-Solutions/hudu-mcp.git "$env:LOCALAPPDATA\Programs\HuduMCP"
cd "$env:LOCALAPPDATA\Programs\HuduMCP"
npm install
npm run buildThis compiles the TypeScript source into dist/.
2. Configure Claude Desktop
Open (or create) your Claude Desktop config file:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Add the hudu entry under mcpServers:
{
"mcpServers": {
"hudu": {
"command": "node",
"args": ["C:/Users/YOUR_USERNAME/AppData/Local/Programs/HuduMCP/dist/index.js"],
"env": {
"HUDU_API_KEY": "your_api_key_here",
"HUDU_BASE_URL": "https://your-instance.huducloud.com/api/v1"
}
}
}
}Replace YOUR_USERNAME with your Windows username, then fill in your API key and Hudu URL. Restart Claude Desktop.
3. Configure Claude Code
Add to ~/.claude/settings.json (or .claude/settings.json in your project):
{
"mcpServers": {
"hudu": {
"command": "node",
"args": ["C:/Users/YOUR_USERNAME/AppData/Local/Programs/HuduMCP/dist/index.js"],
"env": {
"HUDU_API_KEY": "your_api_key_here",
"HUDU_BASE_URL": "https://your-instance.huducloud.com/api/v1"
}
}
}
}Replace YOUR_USERNAME with your Windows username, then fill in your API key and Hudu URL.
Environment Variables
Variable | Description |
| Your Hudu API key (from Hudu Admin → Basic Information → API Keys) |
| Your Hudu instance API base URL, e.g. |
See .env.example for a template.
Example Prompts
Once connected, you can ask Claude things like:
"Search Hudu for any articles about VPN setup and summarize what we have"
"Find all assets for Acme Corp and list their serial numbers"
"Create a new article called 'Windows 11 Deployment Guide' under the Acme Corp company with these steps: [paste steps]"
"Look up the password entry for the Acme firewall admin account"
"What procedures do we have documented for onboarding new employees?"
"Show me all SSL certificate expirations coming up in the next 30 days"
Troubleshooting
Tools don't appear in Claude
Verify the config file is valid JSON and the path to dist/index.js is correct (e.g. C:/Users/YOUR_USERNAME/AppData/Local/Programs/HuduMCP/dist/index.js). Restart Claude Desktop after any config change.
HUDU_API_KEY is required error
The env block in your Claude config is missing or the key name is wrong. Check that it's exactly HUDU_API_KEY.
HUDU_BASE_URL is required error
Same — check that HUDU_BASE_URL is set and ends with /api/v1.
401 Unauthorized from Hudu Your API key is invalid or expired. Generate a new one from Hudu Admin → Basic Information → API Keys.
Node.js not found Install Node.js 18+ from nodejs.org and restart your terminal/Claude Desktop.
Development
npm run build # compile TypeScript → dist/
npm run dev # watch mode (recompiles on save)
npm start # run the compiled serverFile Structure
hudu-mcp/
├── src/
│ ├── api.ts ← HTTP client helpers
│ ├── tools.ts ← MCP tool definitions
│ └── index.ts ← Server entry point + tool dispatch
├── dist/ ← Compiled output (git-ignored)
├── reference/
│ └── HuduRESTAPI.json ← Hudu OpenAPI spec
├── package.json
├── tsconfig.json
├── .env.example
├── .gitignore
└── README.mdContributing
To add a new tool:
Add a
Toolentry to theTOOLSarray insrc/tools.tsAdd the corresponding
caseto thecallToolswitch insrc/index.tsRun
npm run buildto verify it compiles
The Hudu API docs describe all available endpoints.
License
MIT
Available Tools
147 toolsarchive_articleB
Archive a Knowledge Base Article by ID.
Inputs: id (required).
archive_assetC
Archive an Asset.
Inputs: id (required), company_id (required).
archive_asset_passwordB
Archive a Password by ID.
Inputs: id (required).
archive_companyB
Archive a company by ID.
Inputs: id (required).
create_articleC
Create a Knowledge Base Article.
Inputs: name (required), content, folder_id, company_id, +1 more.
create_assetB
Create an Asset under a specific company. Use custom_fields array for custom field values.
Inputs: name (required), company_id (required), asset_layout_id (required), primary_mail, +4 more.
create_asset_layoutC
Create a new Asset Layout.
Inputs: icon (required), name (required), color (required), icon_color (required), +6 more.
create_asset_passwordC
Create a new Password entry.
Inputs: name (required), company_id (required), url, password, +8 more.
create_companyD
Create a new company.
Inputs: name (required), zip, city, notes, +11 more.
create_exportC
Initiate a PDF or CSV export of a company.
Inputs: format (required), company_id (required), include_websites (required), include_passwords (required), +6 more.
create_flagC
Create a Flag on a record.
Inputs: flagable_id (required), flag_type_id (required), flagable_type (required), description.
create_flag_typeC
Create a new Flag Type.
Inputs: name (required), color (required).
create_folderC
Create a KB article folder.
Inputs: name (required), icon, company_id, description, +1 more.
create_ip_addressC
Create a new IP address record.
Inputs: address (required), company_id (required), fqdn, notes, +5 more.
create_listC
Create a new selectable List.
Inputs: name (required), list_items_attributes.
create_networkC
Create a new network.
Inputs: name (required), address (required), company_id (required), vlan_id, +4 more.
create_password_folderC
Create a new password folder.
Inputs: name (required), security (required), company_id, description, +1 more.
create_photoC
Upload a new Photo. Provide the local file path to the image file.
Inputs: caption (required), file_path (required), pinned, folder_id, +3 more.
create_procedureC
Create a new Procedure (Process).
Inputs: name (required), company_id, description, company_template.
create_procedure_from_templateC
Create a new Procedure instance from an existing template.
Inputs: id (required), name, company_id, description.
create_procedure_taskC
Create a new Procedure Task.
Inputs: name (required), procedure_id (required), user_id, due_date, +4 more.
create_public_photoA
Upload a new public photo and attach it to a record. Provide the local file path to the image.
Inputs: file_path (required), record_id (required), record_type (required).
create_rack_storageC
Create a new Rack Storage.
Inputs: name (required), company_id (required), width, height, +4 more.
create_rack_storage_itemC
Create a new Rack Storage Item.
Inputs: rack_storage_role_id (required), side, status, asset_id, +5 more.
create_relationC
Create a relation between two entities.
Inputs: toable_id (required), fromable_id (required), toable_type (required), fromable_type (required), +2 more.
create_s3_exportB
Initiate an S3 export of your Hudu data.
Inputs: no named parameters.
create_vlanC
Create a new VLAN.
Inputs: name (required), vlan_id (required), company_id (required), notes, +5 more.
create_vlan_zoneC
Create a new VLAN Zone.
Inputs: name (required), company_id (required), vlan_id_ranges (required), archived, +1 more.
create_websiteC
Add a website to monitor.
Inputs: name (required), company_id (required), notes, paused, +3 more.
delete_activity_logsB
Delete activity logs from a specific datetime. Set delete_unassigned_logs=true to only delete logs with no user.
Inputs: datetime (required), delete_unassigned_logs.
delete_articleB
Delete a Knowledge Base Article by ID.
Inputs: id (required).
delete_assetC
Delete an Asset.
Inputs: id (required), company_id (required).
delete_asset_passwordC
Delete a Password by ID.
Inputs: id (required).
delete_companyB
Delete a company by ID.
Inputs: id (required).
delete_expirationA
Permanently delete an expiration by ID.
Inputs: id (required).
delete_flagB
Delete a Flag by ID.
Inputs: id (required).
delete_flag_typeB
Delete a Flag Type by ID.
Inputs: id (required).
delete_folderC
Delete a folder by ID.
Inputs: id (required).
delete_ip_addressB
Delete an IP address by ID.
Inputs: id (required).
delete_listC
Delete a List by ID.
Inputs: id (required).
delete_magic_dashB
Delete a Magic Dash Item by title and company_name.
Inputs: title (required), company_name (required).
delete_magic_dash_by_idC
Delete a Magic Dash Item by ID.
Inputs: id (required).
delete_matcherA
Delete an integration matcher by ID.
Inputs: id (required).
delete_networkB
Delete a network by ID.
Inputs: id (required).
delete_password_folderB
Delete a password folder by ID.
Inputs: id (required).
delete_photoB
Delete a Photo by ID.
Inputs: id (required).
delete_procedureB
Delete a Procedure by ID.
Inputs: id (required).
delete_procedure_taskB
Delete a Procedure Task by ID.
Inputs: id (required).
delete_rack_storageB
Delete a Rack Storage by ID.
Inputs: id (required).
delete_rack_storage_itemB
Delete a Rack Storage Item by ID.
Inputs: id (required).
delete_relationA
Delete a Relation by ID.
Inputs: id (required).
delete_uploadB
Delete an upload by ID.
Inputs: id (required).
delete_vlanA
Delete a VLAN by ID.
Inputs: id (required).
delete_vlan_zoneA
Delete a VLAN Zone by ID.
Inputs: id (required).
delete_websiteC
Delete a monitored website by ID.
Inputs: id (required).
duplicate_procedureC
Duplicate an existing Procedure.
Inputs: id (required), company_id (required), name, description.
get_api_infoA
Retrieve Hudu instance version and date.
Inputs: no named parameters.
get_articleA
Get a single Knowledge Base Article by ID.
Inputs: id (required).
get_assetA
Get a single Asset by company_id and asset id.
Inputs: id (required), company_id (required).
get_asset_layoutB
Get a single Asset Layout by ID.
Inputs: id (required).
get_asset_passwordB
Get a single Password by ID.
Inputs: id (required).
get_companyA
Get a specific company by ID.
Inputs: id (required).
get_exportC
Get export metadata by ID.
Inputs: id (required), download.
get_flagB
Get a specific Flag by ID.
Inputs: id (required).
get_flag_typeA
Get a specific Flag Type by ID.
Inputs: id (required).
get_folderB
Get a folder by ID.
Inputs: id (required).
get_groupB
Retrieve a group by ID.
Inputs: id (required).
get_ip_addressB
Get a single IP address by ID.
Inputs: id (required).
get_listB
Get a specific List by ID.
Inputs: id (required).
get_networkA
Get a single network by ID.
Inputs: id (required).
get_password_folderB
Retrieve a password folder by ID.
Inputs: id (required).
get_photoA
Get a specific Photo by ID. Set download=true to get a download URL.
Inputs: id (required), download.
get_procedureB
Get a Procedure by ID.
Inputs: id (required).
get_procedure_taskA
Get a Procedure Task by ID.
Inputs: id (required).
get_public_photoA
Get a public photo by ID. Set download=true to get a download URL.
Inputs: id (required), download.
get_rack_storageB
Get a Rack Storage by ID.
Inputs: id (required).
get_rack_storage_itemA
Get a Rack Storage Item by ID.
Inputs: id (required).
get_uploadB
Get a specific upload by ID.
Inputs: id (required).
get_userB
Get a user by ID.
Inputs: id (required).
get_vlanA
Get a single VLAN by ID.
Inputs: id (required).
get_vlan_zoneB
Get a VLAN Zone by ID.
Inputs: id (required).
get_websiteB
Get a website by ID.
Inputs: id (required).
jump_to_cardB
Get a redirect URL to jump directly to an asset/record matched by integration details.
Inputs: integration_slug (required), integration_type (required), integration_id, integration_identifier.
jump_to_companyB
Get a redirect URL to jump directly to a company matched by integration details.
Inputs: integration_slug (required).
kickoff_procedureC
Start/kickoff a Procedure from a company process.
Inputs: id (required), name, asset_id.
list_activity_logsC
Retrieve a list of activity logs with optional filtering.
Inputs: page, user_id, page_size, start_date, +4 more.
list_articlesC
Get a list of Knowledge Base Articles.
Inputs: name, page, slug, draft, +5 more.
list_asset_layoutsC
Get a list of Asset Layouts.
Inputs: name, page, slug, active, +1 more.
list_asset_passwordsC
Get a list of Passwords.
Inputs: name, page, slug, search, +4 more.
list_assetsA
Retrieve a list of assets across all companies or filtered by company.
Inputs: id, name, page, slug, +7 more.
list_companiesC
Retrieve a list of companies.
Inputs: city, name, page, slug, +8 more.
list_company_assetsB
Get a list of Assets specific to a Company.
Inputs: company_id (required), page, archived, page_size.
list_expirationsA
Retrieve expirations for the account (domains, SSL certs, warranties, asset fields, etc.).
Inputs: page, archived, page_size, company_id, +3 more.
list_exportsA
Get available exports from the last 24 hours.
Inputs: no named parameters.
list_flagsC
Get a list of Flags.
Inputs: page, page_size, description, flagable_id, +2 more.
list_flag_typesC
Get a list of Flag Types.
Inputs: name, page, slug, color, +1 more.
list_foldersC
Retrieve a list of KB article folders.
Inputs: name, page, page_size, company_id, +1 more.
list_groupsC
Retrieve a list of groups (member lists exclude admins/super admins).
Inputs: name, page, search, default, +1 more.
list_ip_addressesC
Get a list of IP addresses.
Inputs: fqdn, status, address, asset_id, +4 more.
list_listsA
Get a list of selectable Lists used in asset fields.
Inputs: name, query.
list_magic_dashC
Retrieve a list of Magic Dash Items.
Inputs: page, title, page_size, company_id.
list_matchersC
List integration matchers (company mappings) for a specific integration.
Inputs: integration_id (required), page, matched, sync_id, +3 more.
list_networksC
Get a list of networks.
Inputs: name, slug, address, archived, +5 more.
list_password_foldersC
Retrieve a list of password folders.
Inputs: name, page, search, page_size, +1 more.
list_photosC
Get a list of Photos with optional filtering.
Inputs: page, archived, folder_id, page_size, +5 more.
list_proceduresC
Get a list of Procedures (Processes).
Inputs: name, page, slug, page_size, +4 more.
list_procedure_tasksD
Get a list of Procedure Tasks.
Inputs: name, company_id, procedure_id.
list_public_photosC
Get a list of public photos.
Inputs: page, page_size.
list_rack_storage_itemsC
Get a list of Rack Storage Items.
Inputs: side, status, asset_id, end_unit, +4 more.
list_rack_storagesC
Get a list of Rack Storages.
Inputs: height, max_width, min_width, company_id, +3 more.
list_relationsC
Get a list of all relations between entities.
Inputs: page, page_size.
list_uploadsA
Get a list of all file uploads.
Inputs: no named parameters.
list_usersC
Retrieve a list of users.
Inputs: page, email, search, archived, +5 more.
list_vlansC
Get a list of VLANs.
Inputs: name, vlan_id, archived, company_id, +3 more.
list_vlan_zonesC
Get a list of VLAN Zones.
Inputs: name, archived, company_id, created_at, +1 more.
list_websitesC
Get a list of monitored websites.
Inputs: name, page, slug, search, +2 more.
lookup_cardsC
Look up Hudu records by external integration details.
Inputs: integration_slug (required), integration_id, integration_identifier.
move_asset_layoutB
Move an Asset to a different Asset Layout, preserving matching field values.
Inputs: id (required), company_id (required), asset_layout_id (required).
unarchive_articleB
Unarchive a Knowledge Base Article by ID.
Inputs: id (required).
unarchive_assetC
Unarchive an Asset.
Inputs: id (required), company_id (required).
unarchive_asset_passwordB
Unarchive a Password by ID.
Inputs: id (required).
unarchive_companyB
Unarchive a company by ID.
Inputs: id (required).
update_articleC
Update a Knowledge Base Article.
Inputs: id (required), name, content, folder_id, +2 more.
update_assetC
Update an existing Asset.
Inputs: id (required), company_id (required), name, primary_mail, +4 more.
update_asset_layoutA
Update an Asset Layout including its fields. Include field id to update existing fields.
Inputs: id (required), icon, name, color, +7 more.
update_asset_passwordC
Update an existing Password entry.
Inputs: id (required), url, name, password, +9 more.
update_companyC
Update a specific company by ID.
Inputs: id (required), zip, city, name, +12 more.
update_expirationA
Update an expiration's archived status.
Inputs: id (required), archived.
update_flagD
Update a Flag.
Inputs: id (required), description, flagable_id, flag_type_id, +1 more.
update_flag_typeC
Update a Flag Type by ID.
Inputs: id (required), name, color.
update_folderC
Update a folder.
Inputs: id (required), icon, name, company_id, +2 more.
update_ip_addressC
Update an existing IP address.
Inputs: id (required), fqdn, notes, status, +6 more.
update_listA
Update a List. Include item id to update existing items; set _destroy: true to remove items.
Inputs: id (required), name, list_items_attributes.
update_magic_dash_positionsA
Reorder multiple Magic Dash Items for a company by updating their positions.
Inputs: positions (required), company_id (required).
update_matcherC
Update an integration matcher.
Inputs: id (required), sync_id, company_id, identifier, +1 more.
update_networkC
Update an existing network.
Inputs: id (required), name, address, vlan_id, +5 more.
update_password_folderC
Update an existing password folder.
Inputs: id (required), name, security, company_id, +2 more.
update_photoC
Update a Photo's metadata by ID.
Inputs: id (required), pinned, caption, folder_id, +3 more.
update_procedureC
Update an existing Procedure.
Inputs: id (required), name, archived, company_id, +2 more.
update_procedure_taskC
Update an existing Procedure Task.
Inputs: id (required), name, user_id, due_date, +6 more.
update_public_photoC
Update a public photo's record association.
Inputs: id (required), record_id (required), record_type (required).
update_rack_storageD
Update a Rack Storage.
Inputs: id (required), name, width, height, +4 more.
update_rack_storage_itemC
Update a Rack Storage Item.
Inputs: id (required), side, status, asset_id, +6 more.
update_vlanD
Update a VLAN.
Inputs: id (required), name, notes, vlan_id, +6 more.
update_vlan_zoneC
Update a VLAN Zone.
Inputs: id (required), name, archived, company_id, +2 more.
update_websiteC
Update a monitored website.
Inputs: id (required), name, notes, paused, +4 more.
upsert_magic_dashB
Create or update a Magic Dash Item (matched by title + company_name).
Inputs: title (required), message (required), company_name (required), icon, +4 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 147 tools
Most tools follow a clear resource+action pattern, making their purposes obvious. A few pairs like list_assets/list_company_assets and delete_magic_dash/delete_magic_dash_by_id could cause minor selection confusion, but the descriptions generally resolve the ambiguity.
The vast majority of tools use a consistent verb_noun pattern such as list_*, get_*, create_*, update_*, delete_*, archive_*, and unarchive_*. Minor deviations like kickoff_procedure, upsert_magic_dash, jump_to_card, and lookup_cards break the pattern slightly, but the overall convention remains predictable.
With 147 tools, this server is dramatically over-scoped for an MCP surface. Even though Hudu has many resource types, exposing every CRUD operation as a separate tool creates an unwieldy interface that could be consolidated or grouped.
The tool set covers CRUD and lifecycle operations for most major Hudu resources, including articles, assets, companies, procedures, networks, VLANs, and photos. Minor gaps exist, such as missing create_matcher, no delete for asset layouts, and limited user/group management, but agents can generally work around these.
Related MCP Connectors
Connect Claude to your Platform7n workspaces: chat, links, work and decks. One-click OAuth.
Connect Claude to your Platform7n workspaces: chat, links, work and decks. One-click OAuth.
Manage Redbooth tasks, task lists, comments, tags and files from Claude and other AI assistants.
Create contacts, move deals, send proposals and invoices, read your inbox, from Claude or ChatGPT.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with HUDU technical documentation and customer management platform through API integration. Supports retrieving company information, searching knowledge base articles, and managing assets and credentials.8MIT
- FlicenseNot gradedqualityDmaintenanceEnables interaction with the HaloPSA API for managing tickets, clients, assets, and more through natural language commands in Claude Desktop.2-
- AlicenseAqualityCmaintenanceProvides Claude with access to IT Glue documentation and asset management, enabling searching and retrieval of organizations, configurations, passwords, documents, and more.24Apache 2.0

hudu-mcpofficial
AlicenseAqualityDmaintenanceEnables AI assistants to interact with Hudu IT documentation, providing tools for companies, assets, knowledge base articles, credentials, IPAM, racks, and more, with security gates for passwords and destructive operations.7018 npmMIT