iit-mcp-hudu
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HUDU_API_KEY | Yes | Your Hudu API key. Required under the stdio transport and optional under http, where a request's X-Hudu-Api-Key header wins and this default fills in whatever it omits. | |
| HUDU_BASE_URL | Yes | The Hudu origin to dial, e.g. https://your.hudu.host. Required under the stdio transport and optional under http, where a request's X-Hudu-Base-Url header wins and this default fills in whatever it omits. | |
| HUDU_COOLDOWN | No | The 429 cooldown gate: on (default) arms a local deadline whose refusals answer with notSent: true; off retries a 429 per the agent profile instead. | on |
| MCP_TRANSPORT | No | Selects the transport: stdio (default) for Claude Code, Claude Desktop and VS Code, or http for remote MCP clients. | stdio |
| HUDU_READ_ONLY | No | When "true" (default) both mutation tools are omitted entirely. Set to "false" to enable mutations (requires also configuring HUDU_WRITE_POLICY). | true |
| HUDU_TIMEOUT_MS | No | The whole-call deadline in positive integer milliseconds. Always sent to the SDK explicitly so it stays above the agent profile's 20 s. | 30000 |
| HUDU_WRITE_ALLOW | No | Comma-separated canonical operation keys permitted when HUDU_WRITE_POLICY=allow_list. An empty or invalid allow-list fails startup. | |
| HUDU_CACHE_PRESET | No | Toggles the read-through cache: on (default) selects the SDK's recommended per-entity TTL preset; off disables it so repeated reads re-dial Hudu. | on |
| HUDU_SECRET_READS | No | Governs reads that return a plaintext credential (asset_passwords and password_folders resources). deny (default) refuses every such operation before any request; allow permits the credential-resource operations but never enables plaintext results. | deny |
| HUDU_WRITE_POLICY | No | Deployment-wide mutation policy: deny (default) rejects all mutations, allow_list permits only the canonical keys in HUDU_WRITE_ALLOW, and all permits the SDK's mutation surface. | deny |
| HUDU_SEARCH_RESOURCES | No | Narrows which resources the cross-resource reads (hudu_search and hudu_resolve_any, plus the same operations reached through hudu_read) may offer and query. Unset means the full set of the SDK's eight searchable resources. | |
| HUDU_ALLOWED_BASE_HOSTS | No | http only. Comma-separated list of exact hostnames or *.example.com subdomain suffixes (no scheme, port or path; internationalised names in punycode) that a caller may name in X-Hudu-Base-Url. Required unless HUDU_ALLOW_ANY_BASE_HOST=true; when unset and HUDU_BASE_URL is set, only that default origin is accepted. | |
| HUDU_ALLOW_ANY_BASE_HOST | No | http only. Set to "true" to allow any caller-named origin when HUDU_ALLOWED_BASE_HOSTS is unset; without this opt-in the server refuses to boot when both HUDU_ALLOWED_BASE_HOSTS and HUDU_BASE_URL are unset. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| hudu_list_operationsA | List SDK operations with the tool exposing each, its effect, dry-run/confirm need and required arguments. This server is a curated SUBSET: hudu_describe_operation gives one operation's contract, hudu_read/hudu_write/hudu_delete run it. Bounded 1-100 rows (default 40), offset pages; the catalog is large, so filter or page. |
| hudu_describe_operationA | Full input contract, effect, dry-run support, errors and usage for ONE operation, by exact catalog key (never a tool name); an unknown key is CONFIG_ERROR naming the nearest. |
| hudu_readA | Execute READ operations only, by registry key (hudu_list_operations, hudu_describe_operation). input is closed: unknown fields are CONFIG_ERROR naming valid ones. Results mask credentials, custom fields. Article bodies: single-article reads are Markdown, list rows HTML; lossy reads set markdown_lossy. Text-channel tolerance: an integer, number or boolean field also accepts the exact string literal of its value ("61" for an id, "true" for a flag); any other string is refused. |
| hudu_searchA | Search Hudu; help mode="search": ranked fuzzy search over article TITLE and BODY, asset names, fields, identifiers. defaults to tier "index": body-complete. Empty: read meta.degraded; unhonoured field is CONFIG_ERROR |
| hudu_resolve_anyA | Resolve an identifier across resources when the type is unknown; else use hudu_get_. Unreadable resources are listed in |
| hudu_get_api_infoA | Return the API information document. Prefer api_info.get. Omit |
| hudu_get_company_contextA | Fetch a company with its bounded context (CompanyContext). Required: numeric |
| hudu_get_article_contextA | Fetch an article with its company and folder context (ArticleContext). Pass the numeric |
| hudu_get_asset_contextB | Fetch an asset with its context (AssetContext). Pass |
| hudu_get_asset_layoutA | Resolve an asset layout from an id, name or slug; asset_layouts.get is cheaper for a known id. expand:true returns the full AssetLayout, not the summary. |
| hudu_find_asset_passwords_by_slugA | Find one password record by its URL slug, instead of a full scan. At most one exact match; to enumerate use hudu_search. Credential-shaped fields are masked by default; expand:true returns the full record. |
| hudu_find_websites_by_slugA | Find one website by its URL slug, not a full scan. At most one exact match; to enumerate use hudu_search or hudu_get_website. expand:true returns the full record. |
| hudu_get_folderB | Resolve a folder from an id or name, optionally company-scoped; folders.get is cheaper for a known id. expand:true returns the full Folder. |
| hudu_get_password_folderA | Resolve a password folder from an id or name, optionally company-scoped; password_folders.get is cheaper for a known id. Credential-shaped fields are masked by default. |
| hudu_get_groupA | Resolve a user group from an id, name or slug; groups.get is cheaper for a known id. expand:true returns the full Group, members included. |
| hudu_listA | List ONE bounded page of companies, articles, assets (all companies) or asset_layouts. It takes no operation argument: it cannot become a write and never pages the tenant. Each collection accepts only its own filters; another is refused naming them. asset_layouts takes no page_size (the vendor ignores it): has_more is conservative (true for any non-empty page) — stop when a page comes back empty. Article bodies: compact rows carry none; expand:true returns stored HTML. |
| hudu_fetch_manyA | Fetch up to 20 single records across MIXED resources in ONE call: each item is EXACTLY { resource, id, fields? }. All items are validated first (a CONFIG_ERROR names every problem, zero wire); one failed item never aborts the rest. Article bodies: rows here are stored HTML. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
The generic hudu_read, hudu_list, hudu_search, hudu_resolve_any, and hudu_fetch_many all retrieve overlapping data, and the specialized get_* tools are essentially shortcuts over hudu_read. The descriptions explain when to prefer each shortcut, but the boundaries still require careful reading.
All tools use a consistent hudu_ prefix and snake_case, with predictable verb_noun shapes such as hudu_list_operations, hudu_get_company_context, and hudu_find_websites_by_slug. The verbs vary across list/get/find/resolve/fetch, but that variation is readable and mostly semantic.
17 tools is slightly above the typical 3-15 range, but Hudu is a broad IT-documentation domain and the set is still curated rather than exhaustive. Several specialized getters could be folded into the generic read path, but the count is reasonable for the scope.
The tool descriptions reference hudu_write and hudu_delete as operation runners, but no write, update, or delete tools are actually exposed. The surface is read-heavy and covers many resources through hudu_read, but lifecycle operations and several resource-specific actions are missing.