mcp-server-dalux
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., "@mcp-server-dalux list all my Dalux projects with their status"
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.
mcp-server-dalux
MCP server for the Dalux Build API — the official API covering Dalux Field (tasks, safety issues, forms/checklists, inspection & test plans) and Dalux Box (document file areas, folders, files, version sets).
What it can do
Read (always on): projects, project users, tasks/approvals/safety issues + incremental change feed + attachments, forms + attachments, inspection/test plans (items, zones, registrations), work packages, file areas/folders/files, version sets, file download (size-capped), companies (project + account catalog), and dalux_search_capabilities for tool discovery.
Write (opt-in via DALUX_ENABLE_WRITES=true): file upload (3-step chunked flow), create/update companies, create/update projects.
Not possible through the Dalux API at all (as of Build API 4.15): creating or updating tasks and forms (Field data is read-only), user management, webhooks (poll the incremental change feeds instead), and BIM/model/geometry queries.
Related MCP server: Procore MCP Server
Auth
One X-API-KEY header. Keys are issued per API identity under Company profile → Settings → API identities, expire after a chosen validity period, and are scoped by the user groups the identity is assigned per project. API access itself is activated by Dalux support / your Customer Success Manager (requires a company license).
Configuration
See .env.example. Required: DALUX_API_KEY. Optional: DALUX_BASE_URL (defaults to https://field.dalux.com/service/api), DALUX_TIMEOUT_MS, DALUX_ENABLE_WRITES, DALUX_AUDIT_LOG (JSONL audit trail; identifiers are hashed).
Run
npm install
npm run dev # stdio transport
npm run dev:http # streamable HTTP on :3000/mcp (stateless)
npm testDocker images are published to ghcr.io/borgels/mcp-server-dalux on every push to main.
Pagination
Dalux lists use opaque links only. Tools return { items, pagesFetched, nextPage, endOfIncrementalStream }; pass nextPage back as pageLink to continue. For incremental lists (tasks changes, forms, files), endOfIncrementalStream=true means you have caught up — keep the link and poll it later for deltas. Links are validated to stay on the API origin, under the configured DALUX_BASE_URL path and on the same resource the tool lists (only the API version prefix may differ); links with dot segments or encoded separators are refused. Caller-supplied ids are rejected if they are empty, ./.., or contain /, \, ?, # or encoded dots/slashes. MCP_HTTP_TOKEN (HTTP transport) is compared in constant time.
Available Tools
22 toolsdalux_change_companyCreate/Update Company (Dalux)B
Add a company to a project or the account-wide company catalog, or update one. Requires write access on this instance.
Inputs: body (required), scope (required), action (required), companyId, +1 more.
dalux_change_projectCreate/Update Project (Dalux)A
Create a new Dalux project (applies the company default Field/Box configuration; adminEmail required) or update an existing one. Project creation may consume a license — confirm with the user first. Requires write access on this instance.
Inputs: action (required), body, patch, projectId, +1 more.
dalux_download_fileDownload File (Dalux Box)ARead-onlyIdempotent
Download the content of a specific file revision. Text-like content is returned as UTF-8, everything else base64. Capped at 2 MB by default (maxBytes up to 20 MB) — check file size via dalux_list_files first for large drawings/models.
Inputs: fileId (required), projectId (required), fileAreaId (required), fileRevisionId (required), +1 more.
dalux_get_formGet Form (Dalux Field)ARead-onlyIdempotent
Fetch one form with all its answered fields.
Inputs: formId (required), projectId (required).
dalux_get_projectGet Project (Dalux)ARead-onlyIdempotent
Fetch one Dalux project, optionally with its metadata fields.
Inputs: projectId (required), includeMetadata.
dalux_get_taskGet Task (Dalux Field)BRead-onlyIdempotent
Fetch one Dalux Field task/safety issue with full details.
Inputs: taskId (required), projectId (required).
dalux_get_task_changesGet Task Changes (Dalux Field)ARead-onlyIdempotent
Incremental change feed for all tasks/approvals/safety items on a project. Dalux has no webhooks — polling this feed is the supported sync pattern. Keep the returned nextPage and pass it as pageLink later to fetch only new changes (stream end is signalled by endOfIncrementalStream=true).
Inputs: projectId (required), maxPages, pageLink.
dalux_list_companiesList Companies (Dalux)ARead-onlyIdempotent
List companies on a project (scope=project, requires projectId) or the account-wide company catalog (scope=catalog). Optionally fetch one company with companyId.
Inputs: scope, maxPages, pageLink, companyId, +1 more.
dalux_list_file_areasList File Areas (Dalux Box)ARead-onlyIdempotent
List document file areas on a project (or fetch one with fileAreaId). Entry point for all Box document access.
Inputs: projectId (required), maxPages, pageLink, fileAreaId.
dalux_list_filesList Files (Dalux Box)ARead-onlyIdempotent
List files within a file area (or fetch one file’s metadata with fileId): name, revision ids, properties, folder, deleted status. Metadata only — use dalux_download_file for content. Incremental list.
Inputs: projectId (required), fileAreaId (required), fileId, maxPages, +1 more.
dalux_list_foldersList Folders (Dalux Box)ARead-onlyIdempotent
List folders within a file area (or fetch one with folderId).
Inputs: projectId (required), fileAreaId (required), folderId, maxPages, +1 more.
dalux_list_form_attachmentsList Form Attachments (Dalux Field)CRead-onlyIdempotent
List attachments across all forms on a project.
Inputs: projectId (required), maxPages, pageLink.
dalux_list_formsList Forms (Dalux Field)ARead-onlyIdempotent
List registered forms/checklists (APV, kvalitetssikring, tilsyn) on a project. Incremental list. Read-only — forms cannot be created or filled through the API.
Inputs: projectId (required), maxPages, pageLink.
dalux_list_projectsList Projects (Dalux)ARead-onlyIdempotent
List all Dalux projects the API identity can see: name, type (building/infrastructure), address, number, and enabled modules. Also lists project templates with includeTemplates=true.
Inputs: maxPages, pageLink, includeTemplates.
dalux_list_project_usersList Project Users (Dalux)ARead-onlyIdempotent
List users on a Dalux project (name, email, company, user groups), or fetch a single user with userId. The Dalux API cannot create or modify users.
Inputs: projectId (required), userId, maxPages, pageLink.
dalux_list_quality_plansList Inspection/Test Plans (Dalux Field)ARead-onlyIdempotent
List quality assurance data: inspection plans (kontrolplaner) or test plans, and their items, item zones, or registrations.
Inputs: kind (required), projectId (required), part, maxPages, +1 more.
dalux_list_task_attachmentsList Task Attachments (Dalux Field)ARead-onlyIdempotent
List attachments (photos, documents) across all tasks on a project, with media links.
Inputs: projectId (required), maxPages, pageLink.
dalux_list_tasksList Tasks (Dalux Field)ARead-onlyIdempotent
List tasks, approvals, safety issues, safety observations, and good practices on a Dalux Field project, with subject, type, workflow state, location (building/level/room/drawing), and user-defined fields. Optional typeId filter (the only server-side filter Dalux supports). NOTE: the Dalux API is read-only for tasks.
Inputs: projectId (required), typeId, maxPages, pageLink.
dalux_list_version_setsList Version Sets (Dalux Box)ARead-onlyIdempotent
List version sets on a project or file area, fetch one with versionSetId, or list its files with includeFiles=true.
Inputs: projectId (required), maxPages, pageLink, fileAreaId, +2 more.
dalux_list_work_packagesList Work Packages (Dalux)BRead-onlyIdempotent
List work packages (arbejdspakker) on a project.
Inputs: projectId (required), maxPages, pageLink.
dalux_search_capabilitiesSearch Dalux CapabilitiesARead-onlyIdempotent
Search the Dalux MCP server capabilities and examples. Use this first when deciding which Dalux tool to call.
Inputs: limit, query.
dalux_upload_fileUpload File (Dalux Box)A
Upload a document to a Dalux Box file area: a new file into a folder (folderId) or a new revision of an existing file (fileId). Handles the 3-step chunked upload flow. File areas of type "published"/"shared" cannot be uploaded to. Requires write access on this instance — confirm the target folder with the user before uploading.
Inputs: fileName (required), projectId (required), fileAreaId (required), contentBase64 (required), +4 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 22 tools
Each tool targets a distinct resource or action (e.g., projects, companies, tasks, files, forms, etc.) with no overlapping purposes. The descriptions clearly differentiate them, making it easy for an agent to select the correct tool.
All tools follow a consistent 'dalux_verb_noun' pattern in snake_case (e.g., list_projects, download_file, upload_file). The verbs are appropriately chosen and uniform across the set.
22 tools cover a broad domain (project management, document handling, task tracking, quality plans, etc.) without being excessive. Each tool earns its place for the Dalux ecosystem's complexity.
The tool surface is comprehensive for reading and updating resources, but notable gaps exist: tasks and forms are read-only (no create/update/delete) due to API limitations. CRUD for projects and companies is present, and file upload/download is covered. A delete tool would improve completeness.
Maintenance
Related MCP Connectors
The official MCP Server for the Mux API
MCP server for Codat — companies, connections, invoices, bills and financial statements.
An MCP server that provides access to Agility CMS. See https://mcp.agilitycms.com for more details.
MCP server for Appcircle mobile CI/CD platform.
Related MCP Servers
- MIT
- AlicenseAqualityCmaintenanceMCP Server to communite with the Procore API718MIT
- AlicenseAqualityDmaintenanceMCP server for interacting with Realm MinistryPlatform data, enabling queries, record creation, and updates from any MCP client.1MIT
- AlicenseAqualityCmaintenanceMCP server for the bexio API, enabling interaction with contacts, sales, accounting, projects, and more through 35 tools. Supports both PAT and OAuth authentication with read-only mode and tool group filtering.3523 npm4MIT