@assetlab/mcp-server
v1.11.0
Published
MCP server for AssetLab — connect Claude, ChatGPT, or Microsoft Copilot to your asset management data
Maintainers
Readme
@assetlab/mcp-server
Connect your AI assistant to your AssetLab account via the Model Context Protocol. Ask questions about your assets, work orders, PM schedules, and more — in plain language. Create and update records hands-free.
Works with Claude, ChatGPT, Microsoft Copilot, and any MCP-compatible client.
Prerequisites
- An AssetLab account with an API key (create one in Settings → API Keys)
Setup
Claude.ai
- Create an API key in AssetLab → Settings → API Keys
- In Claude.ai, go to Settings → Integrations → Add integration
- Paste the connector URL:
https://mcp.assetlab.ca - When prompted for auth, paste your API key (
al_live_...)
ChatGPT
- Create an API key in AssetLab → Settings → API Keys
- In ChatGPT, go to Settings → Apps & Connectors → Add new connector
- Enter a name (e.g.
AssetLab) and the server URL:https://mcp.assetlab.ca - Set authentication to OAuth
- Click Create — ChatGPT will auto-discover the OAuth endpoints
- When redirected to the AssetLab authorization page, paste your API key (
al_live_...) - After authorization, AssetLab tools will appear in your ChatGPT conversations
Microsoft Copilot Studio
Option A — API Key (simplest)
- Create an API key in AssetLab → Settings → API Keys
- In Copilot Studio, open your agent and go to Tools → Add Tool → New Tool → MCP
- Enter the server URL:
https://mcp.assetlab.ca - Set authentication to API Key
- Configure the key as a Header with name
Authorizationand valueBearer al_live_...(your API key)
Option B — OAuth
- Create an API key in AssetLab → Settings → API Keys
- In Copilot Studio, open your agent and go to Tools → Add Tool → New Tool → MCP
- Enter the server URL:
https://mcp.assetlab.ca - Set authentication to OAuth 2.0 and select Dynamic discovery
- Copilot Studio will auto-discover the authorization and token endpoints
- When prompted, paste your API key (
al_live_...) on the AssetLab authorization page
Example prompts
- "Show me all overdue work orders"
- "List critical assets at Site A"
- "What PM schedules are due this month?"
- "Create a work order for the broken pump in Building 3"
- "Add a new vendor for electrical services"
- "Update the priority on WO-1234 to urgent"
- "Which projects are at risk or delayed?"
- "What's the total cost history for Asset X?"
- "Create a part for 10-inch butterfly valves"
- "List all replacement plans due in 2027"
Available tools
Read tools
| Resource | List | Get |
|----------|------|-----|
| Assets | list_assets | get_asset |
| Work Orders | list_work_orders | get_work_order |
| Work Requests | list_work_requests | get_work_request |
| Sites | list_sites | get_site |
| Buildings | list_buildings | — |
| Locations | list_locations | — |
| Systems | list_systems | — |
| System Groups | list_system_groups | — |
| System Classes | list_system_classes | — |
| PM Schedules | list_pm_schedules | get_pm_schedule |
| PM Templates | list_pm_templates | — |
| Projects | list_projects | get_project |
| Contracts | list_contracts | — |
| Compliance Items | list_compliance_items | get_compliance_item |
| Compliance Records | list_compliance_records | get_compliance_record |
| Dashboard | — | get_dashboard_summary |
| Dashboard Snapshots | list_dashboard_snapshots | get_dashboard_snapshot |
| Vendors | list_vendors | get_vendor |
| Invoices | list_invoices | get_invoice |
| Purchase Orders | list_purchase_orders | get_purchase_order |
| Expenses | list_expenses | get_expense |
| Budgets | list_budgets | get_budget |
| Parts | list_parts | get_part |
| Part Categories | list_part_categories | get_part_category |
| Asset Comments | list_asset_comments | get_asset_comment |
| Asset Costs | list_asset_costs | get_asset_cost |
| Replacement Plans | list_asset_replacement_plans | get_asset_replacement_plan |
| Risk History | list_asset_risk_history | get_asset_risk_history_entry |
| WO Comments | list_work_order_comments | get_work_order_comment |
| Project Tasks | list_project_tasks | get_project_task |
| Project Milestones | list_project_milestones | get_project_milestone |
| Project Phases | list_project_phases | get_project_phase |
| Project Budget Items | list_project_budget_items | get_project_budget_item |
| Project Time Entries | list_project_time_entries | get_project_time_entry |
| Project Comments | list_project_comments | get_project_comment |
| Site FCI History | list_site_fci_history | get_site_fci_history_entry |
| Vendor Site Assignments | list_vendor_site_assignments | get_vendor_site_assignment |
| Contract Sites | list_contract_sites | — |
| Custom Field Definitions | list_custom_field_definitions | get_custom_field_definition |
| Custom Field Values | list_custom_field_values | get_custom_field_value |
| Asset Types | list_asset_types | — |
| Work Categories | list_work_categories | — |
| Manufacturers | list_manufacturers | get_manufacturer |
| Building Types | list_building_types | — |
| Location Types | list_location_types | — |
| Project Phase Categories | list_project_phase_categories | — |
| Cost Categories | list_cost_categories | — |
Write tools
| Resource | Create | Update | Delete |
|----------|--------|--------|--------|
| Assets | create_asset | update_asset | delete_asset |
| Work Orders | create_work_order | update_work_order | delete_work_order |
| Work Requests | create_work_request | update_work_request | delete_work_request |
| Sites | create_site | update_site | delete_site |
| Buildings | create_building | update_building | delete_building |
| Locations | create_location | update_location | delete_location |
| Systems | create_system | update_system | delete_system |
| PM Schedules | create_pm_schedule | update_pm_schedule | delete_pm_schedule |
| Projects | create_project | update_project | delete_project |
| Contracts | create_contract | update_contract | delete_contract |
| Vendors | create_vendor | update_vendor | delete_vendor |
| Invoices | create_invoice | update_invoice | delete_invoice |
| Purchase Orders | create_purchase_order | update_purchase_order | delete_purchase_order |
| Expenses | create_expense | update_expense | delete_expense |
| Budgets | create_budget | update_budget | delete_budget |
| Parts | create_part | update_part | delete_part |
| Part Categories | create_part_category | update_part_category | delete_part_category |
| Asset Comments | create_asset_comment | update_asset_comment | delete_asset_comment |
| Asset Costs | create_asset_cost | update_asset_cost | delete_asset_cost |
| Replacement Plans | create_asset_replacement_plan | update_asset_replacement_plan | delete_asset_replacement_plan |
| WO Comments | create_work_order_comment | update_work_order_comment | delete_work_order_comment |
| Project Tasks | create_project_task | update_project_task | delete_project_task |
| Project Milestones | create_project_milestone | update_project_milestone | delete_project_milestone |
| Project Phases | create_project_phase | update_project_phase | delete_project_phase |
| Project Budget Items | create_project_budget_item | update_project_budget_item | delete_project_budget_item |
| Project Time Entries | create_project_time_entry | update_project_time_entry | delete_project_time_entry |
| Project Comments | create_project_comment | update_project_comment | delete_project_comment |
| Vendor Site Assignments | create_vendor_site_assignment | — | delete_vendor_site_assignment |
| Contract Sites | create_contract_site | — | delete_contract_site |
| Custom Field Definitions | create_custom_field_definition | update_custom_field_definition | delete_custom_field_definition |
| Custom Field Values | create_custom_field_value | update_custom_field_value | delete_custom_field_value |
| Asset Types | create_asset_type | update_asset_type | delete_asset_type |
| Work Categories | create_work_category | update_work_category | delete_work_category |
| Manufacturers | create_manufacturer | update_manufacturer | delete_manufacturer |
| Building Types | create_building_type | update_building_type | delete_building_type |
| Location Types | create_location_type | update_location_type | delete_location_type |
| Project Phase Categories | create_project_phase_category | update_project_phase_category | delete_project_phase_category |
| Cost Categories | create_cost_category | update_cost_category | delete_cost_category |
Scopes
API keys use scopes to control what Claude can access. Configure per-resource read and write access in Settings → API Keys.
| Scope pattern | Access |
|---------------|--------|
| resource:read | List and get records (e.g. assets:read, work_orders:read) |
| resource:write | Create, update, and delete records (e.g. assets:write, parts:write) |
| *:* | Full access to all resources |
Write scopes require the corresponding read scope to be useful. When creating an API key, scopes are organized by category (Operations, Facilities, Projects, Finance, etc.) with bulk-toggle controls.
Security
- Connects via OAuth 2.0 + PKCE through
mcp.assetlab.ca. Your API key is encrypted in transit and never stored by the MCP server. - Your API key is scoped to your organization only.
- All data access is logged in AssetLab's audit log.
- API keys can be revoked at any time in Settings → API Keys.
- Write operations require explicit write scopes — read-only by default.
Support
Questions or issues? Email [email protected].
