
Autotask
io.github.wyre-technology由 GitHub 帳號 wyre-technology 發布v2.32.10更新於 Oct 24, 2026
MCP server for Kaseya Autotask PSA — companies, tickets, projects, time entries, and more.
概覽
針對 Kaseya Autotask PSA 的 MCP 伺服器,讓助理搜尋、讀取與建立公司、工單、專案、工時、合約與計費記錄。
- 可以做什麼
- 搜尋並建立公司、聯絡人與資源
- 搜尋、讀取並建立工單,包含完整工單詳情、備註、自訂欄位與附件
- 搜尋並建立專案、任務、工時,以及工單、專案、公司備註
- 搜尋並建立計費項目、費用報告、報價、商機、發票與合約
- 測試 API 連線,並把 ID 解析成可讀名稱
- 適用情境
- 適合需要讓助理直接在 Kaseya Autotask PSA 租戶中作業的情境,例如工單分流、登記工時、撰寫備註,或彙整專案、合約與計費狀況。主要面向日常使用 Autotask 的託管服務供應商團隊。
- 執行需求
- 需要 Autotask API 憑證:AUTOTASK_USERNAME(API 使用者電子郵件)、AUTOTASK_SECRET 與 AUTOTASK_INTEGRATION_CODE。以本機程序執行,可透過 npx、Claude Desktop 的 MCPB 套件或 Docker 映像安裝;後兩者需要 Node.js 18+ 或 Docker。HTTP 模式另需 CONDUIT_S2S_SECRET 並簽署 X-Gateway-S2S;閘道模式從 X-API-Key、X-API-Secret 與 X-Integration-Code 標頭取得憑證。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Autotask,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Autotask MCP Server
[Build Status] [codecov] [License] [Node.js]
Give your AI assistant direct access to Autotask. Search tickets, create time entries, look up companies, manage projects — all through natural language. No more copy-pasting between browser tabs and chat windows.
This is a Model Context Protocol (MCP) server that connects Claude (or any MCP-compatible AI) to your Autotask PSA environment. Your AI assistant gets 101 tools covering the operations MSP teams use daily: ticket triage, time logging, company lookups, project management, billing review, and more.
If you run an MSP on Autotask and you're tired of the context-switching tax, this is for you.
[Autotask MCP server]Part of the MSP Claude Plugins ecosystem — a growing suite of AI integrations for the MSP stack including Datto RMM, IT Glue, HaloPSA, ConnectWise Automate, NinjaOne, Huntress, and more. Built by MSPs, for MSPs.
One-Click Deployment
[Deploy to Cloudflare Workers]
Note — no GitHub Packages token required. Unlike most WYRE MCP servers,
autotask-mcpdoes not depend on a private@wyre-ai/*package on GitHub Packages. Its only WYRE dependency is theautotask-nodeSDK, declared as a git dependency on the publicWYRE-AI/autotask-noderepo, whichnpm installresolves anonymously. The DigitalOcean one-click deploy therefore works without anyNODE_AUTH_TOKEN/GITHUB_TOKENbuild variable.
Quick Start
Claude Desktop — download, open, done:
- Download
autotask-mcp.mcpbfrom the latest release - Open the file (double-click or drag into Claude Desktop)
- Enter your Autotask credentials when prompted (Username, Secret, Integration Code)
No terminal, no JSON editing, no Node.js install required.
Claude Code (CLI):
See Installation for Docker and from-source methods.
Features
- 🔌 MCP Protocol Compliance: Full support for MCP resources and tools
- 🎴 Interactive Ticket Card (MCP Apps):
autotask_get_ticket_detailsrenders as an interactive card in MCP Apps hosts (Claude Desktop/web) with an in-card "Add note" round-trip; neutral theme by default, brandable viaMCP_BRAND_*env vars. In every host, the text the assistant reads carries the full ticket: description, contact, linked configuration item, custom fields (UDFs), recent notes and the complete record as JSON - 🛠️ Comprehensive API Coverage: 101 tools spanning companies, contacts, tickets, projects, billing items, time entries, notes, attachments, and more
- 🔍 Advanced Search: Powerful search capabilities with filters across all entities
- 📝 CRUD Operations: Create, read, update operations for core Autotask entities
- 🔄 ID-to-Name Mapping: Automatic resolution of company and resource IDs to human-readable names
- ⚡ Intelligent Caching: Smart caching system for improved performance and reduced API calls
- 🔒 Secure Authentication: Enterprise-grade API security with Autotask credentials
- 🌐 Dual Transport: Supports both stdio (local) and HTTP Streamable (remote/Docker) transports
- 📦 MCPB Packaging: One-click installation via MCP Bundle for desktop clients
- 🐳 Docker Ready: Containerized deployment with HTTP transport and health checks
- 📊 Structured Logging: Comprehensive logging with configurable levels and formats
- 🧪 Test Coverage: Comprehensive test suite with 80%+ coverage
Table of Contents
- Installation
- Configuration
- Usage
- API Reference
- ID-to-Name Mapping
- HTTP Transport
- Docker Deployment
- Migration Guide
- Development
- Testing
- Troubleshooting
- Contributing
- Contributors
- License
Installation
Option 1: MCPB Bundle (Claude Desktop)
The simplest method — no terminal, no JSON editing, no Node.js install required.
- Download
autotask-mcp.mcpbfrom the latest release - Open the file (double-click or drag into Claude Desktop)
- Enter your Autotask credentials when prompted (Username, Secret, Integration Code)
For Claude Code (CLI), one command:
Option 2: Docker
Local (stdio — for Claude Desktop or Claude Code):
Remote (HTTP Streamable — for server deployments):
The HTTP server refuses to start when CONDUIT_S2S_SECRET is empty or a known placeholder. Clients connect to http://127.0.0.1:8080/mcp using MCP Streamable HTTP transport and must send X-Gateway-S2S. See X-Gateway-S2S signing.
Gateway Mode (for MCP Gateway deployments):
When deploying behind an MCP Gateway that injects credentials via HTTP headers. This container has no static Autotask credentials:
The gateway injects credentials via headers:
X-Gateway-S2S: service-to-service proof (required on/mcp)X-API-Key: Autotask usernameX-API-Secret: Autotask secretX-Integration-Code: Autotask integration codeX-Impersonation-Resource-Id: (optional) Autotask resource ID to act on behalf of
A /mcp request missing any of the three Autotask headers returns 401 and does not fall back to AUTOTASK_* in the environment. See Gateway Mode for details.
Option 3: From Source (Development)
Then point your MCP client at dist/entry.js:
Prerequisites
- Valid Autotask API credentials (API user email, secret, integration code)
- MCP-compatible client (Claude Desktop, Claude Code, etc.)
- Docker (for Option 2) or Node.js 18+ (for Option 3)
Configuration
Environment Variables
Create a .env file with your configuration:
Gateway Mode
When deployed behind an MCP Gateway (e.g., mcp.wyre.ai), the server operates in gateway mode where credentials are injected via HTTP headers on each request.
Enable Gateway Mode:
Every /mcp request must include a valid X-Gateway-S2S header and the three Autotask credential headers. A request missing any credential header returns 401. The server does not fall back to AUTOTASK_USERNAME, AUTOTASK_SECRET, or AUTOTASK_INTEGRATION_CODE in the process environment.
Expected Headers:
X-Gateway-S2S signing
MCP_TRANSPORT=http refuses to start unless CONDUIT_S2S_SECRET is a real secret. Empty values and known placeholders are rejected, including changeme, placeholder, your-s2s-secret, secret, password, test, and any value that is only an unresolved ${...} template. The process logs an error and exits non-zero. It never prints the secret.
MCP_ALLOW_INSECURE_DEV=1 is the local-only escape hatch. The process logs a warning, does not check X-Gateway-S2S, and listens on 127.0.0.1 only. A non-loopback MCP_HTTP_HOST (including 0.0.0.0, localhost, and ::1) is ignored in that mode and the override is logged.
Without a usable secret the bind address defaults to 127.0.0.1. A configured secret honors MCP_HTTP_HOST (default 0.0.0.0 when that variable is unset, which is what the container image sets). Publish the host port on loopback unless a proxy sits in front.
/health stays unauthenticated and does not read credentials. The stdio transport does not use CONDUIT_S2S_SECRET.
With a usable secret, every /mcp request must include:
v1 is HMAC-SHA256, hex-encoded, of the ASCII string t=<unix seconds> (the same t= prefix that starts the header), keyed with CONDUIT_S2S_SECRET. The timestamp must be within 300 seconds of the server clock. A missing or invalid header returns HTTP 401. The secret is never written to logs or the response body.
In AUTH_MODE=env, /mcp still requires a valid X-Gateway-S2S header. Autotask credentials then come from AUTOTASK_*. In AUTH_MODE=gateway, the three X-API-* headers above are required as well and are the only credential source for that request.
Health Check Response (Gateway Mode):
For detailed migration instructions, see the Migration Guide.
💡 Pro Tip: Copy the above content to a .env file in your project root.
Autotask API Setup
- Create API User: In Autotask, create a dedicated API user with appropriate permissions
- Generate Secret: Generate an API secret for the user
- Integration Code: Obtain your integration code from Autotask
- Permissions: Ensure the API user has read/write access to required entities
For detailed setup instructions, see the Autotask API documentation.
Usage
Command Line
MCP Client Configuration
See Installation for all setup methods.
API Reference
Resources
Resources provide read-only access to Autotask data:
autotask://companies- List all companiesautotask://companies/{id}- Get specific companyautotask://contacts- List all contactsautotask://contacts/{id}- Get specific contactautotask://tickets- List all ticketsautotask://tickets/{id}- Get specific ticketautotask://time-entries- List time entries
Tools
The server provides 101 tools for interacting with Autotask:
Company Operations
autotask_search_companies- Search companies with filtersautotask_create_company- Create new companyautotask_update_company- Update existing company
Contact Operations
autotask_search_contacts- Search contacts with filtersautotask_create_contact- Create new contact
Ticket Operations
autotask_search_tickets- Search tickets with filtersautotask_get_ticket_details- Get a ticket by ID: description, status/priority/queue, company, contact, assignee, dates, linked configuration item, resolution, custom fields (UDFs), recent notes and the full record (fullDetails: truefor untruncated text and all UDFs)autotask_create_ticket- Create new ticket
Time Entry Operations
autotask_create_time_entry- Log time entryautotask_search_time_entries- Search time entries with filters (resource, ticket, task, date range); each entry includessummaryNotesandinternalNotes
Billing Items (Approve and Post Workflow)
autotask_search_billing_items- Search approved and posted billing itemsautotask_get_billing_item- Get specific billing item by IDautotask_search_billing_item_approval_levels- Search multi-level approval records for time entries
Project Operations
autotask_search_projects- Search projects with filtersautotask_create_project- Create new project
Resource Operations
autotask_search_resources- Search resources (technicians/users)
Note Operations
autotask_get_ticket_note/autotask_search_ticket_notes/autotask_create_ticket_noteautotask_get_project_note/autotask_search_project_notes/autotask_create_project_noteautotask_get_company_note/autotask_search_company_notes/autotask_create_company_note
Attachment Operations
autotask_get_ticket_attachment- Get ticket attachmentautotask_search_ticket_attachments- Search ticket attachmentsautotask_get_ticket_note_attachment- Get an attachment on a ticket note (e.g. a pasted screenshot)autotask_search_ticket_note_attachments- Search attachments on a ticket note
Financial Operations
autotask_get_expense_report/autotask_search_expense_reports/autotask_create_expense_reportautotask_get_quote/autotask_search_quotes/autotask_create_quoteautotask_get_opportunity/autotask_search_opportunities/autotask_create_opportunityautotask_update_opportunity- Update an opportunity (stage, status, revenue/cost lines, UDFs)autotask_search_invoices- Search invoices
Contract Operations
autotask_search_contracts- Search contracts (name, company, status, type, end-date range)autotask_get_contract- Get a single contract by IDautotask_list_expiring_contracts- Expiring/expired contracts report (next N days, per company or org-wide)autotask_create_contract/autotask_create_contracts_bulk- Create contract shells, one or manyautotask_update_contract- Update a contract (e.g. extend/renew end date)autotask_create_contract_service/autotask_update_contract_service- Manage contract service lines
Configuration Items
autotask_search_configuration_items- Search configuration items (assets)
Task Operations
autotask_search_tasks- Search project tasksautotask_create_task- Create project task
Utility Operations
autotask_test_connection- Test API connectivity
Example Tool Usage
ID-to-Name Mapping
The Autotask MCP server includes intelligent ID-to-name mapping that automatically resolves company and resource IDs to human-readable names, making API responses much more useful for AI assistants and human users.
Automatic Enhancement
All search and detail tools automatically include an _enhanced field with resolved names:
How It Works
ID-to-name mapping is applied automatically to all search and detail tool results. No additional tools are needed — the _enhanced field is added transparently to every response that contains company or resource IDs.
Performance Features
- Smart Caching: Names are cached for 30 minutes to reduce API calls
- Bulk Operations: Efficient batch lookups for multiple IDs
- Graceful Fallback: Returns "Unknown Company (123)" if lookup fails
- Parallel Processing: Multiple mappings resolved simultaneously
Testing Mapping
Test the mapping functionality:
For detailed mapping documentation, see docs/mapping.md.
HTTP Transport
The server supports the MCP Streamable HTTP transport for remote deployments (e.g., Docker, cloud hosting). Set MCP_TRANSPORT=http to enable it.
The HTTP transport exposes:
POST /mcp— MCP Streamable HTTP endpoint. RequiresX-Gateway-S2SwhenCONDUIT_S2S_SECRETis set. See X-Gateway-S2S signing.GET /health— Unauthenticated health check (returns{"status":"ok"}). Does not read credentials.
Clients must send requests to /mcp with Accept: application/json, text/event-stream headers per the MCP Streamable HTTP specification.
Docker Deployment
The Docker image uses HTTP transport by default (port 8080) with a built-in health check.
Using Pre-built Image from GitHub Container Registry
The Docker image defaults to HTTP transport on port 8080 — suitable for remote/server deployments where clients connect over the network.
Compose will not start when CONDUIT_S2S_SECRET is unset. The checked-in gateway service sets AUTH_MODE=gateway, publishes 127.0.0.1:8080:8080, and does not inject AUTOTASK_*:
For stdio usage with Claude Desktop, see Installation Option 2.
Quick Start (From Source)
Production Deployment
Development Mode
Development
Setup
Available Scripts
Project Structure
Testing
Running Tests
Test Categories
- Unit Tests: Service layer and utility functions
- Integration Tests: MCP protocol compliance
- API Tests: Autotask API integration (requires credentials)
Coverage Requirements
- Minimum 80% coverage for all metrics
- 100% coverage for critical paths (authentication, data handling)
Configuration Reference
Environment Variables
Logging Levels
error: Only error messageswarn: Warnings and errorsinfo: General information, warnings, and errorsdebug: Detailed debugging information
Log Formats
simple: Human-readable console outputjson: Structured JSON output (recommended for production)
Rate Limits
Autotask enforces per-integration-code API thresholds on a rolling 1-hour window:
- ~10,000 req/hr (soft) — warning email, sporadic
HTTP 429responses - ~20,000 req/hr (hard) — sustained
HTTP 429until the window rolls
LLM-driven workflows fan out easily — "status report on all open projects with notes" can issue hundreds of requests across a few minutes. The server tries to make this safer:
- 429 responses are surfaced as structured errors. Tool results carry
error_type: "rate_limited"and aretry_after_secondsfield parsed from Autotask'sRetry-Afterheader. The error message explicitly tells the LLM not to retry and to ask the user to scope the query — this prevents repeated retries from extending the cooldown. - Concurrent-thread 429s are queued, not cooled down for a minute. Autotask also returns HTTP 429 when an integration exceeds its thread threshold (the body mentions "thread threshold"). That is a burst problem, separate from the hourly quota. The HTTP client allows
AUTOTASK_MAX_INFLIGHTcalls in flight per tenant (default 3) and queues the rest. A thread-threshold 429 on an idempotent call (GET,DELETE, orPOST /{Entity}/query) is retried with a short backoff and does not arm the 60s cooldown. Hourly-threshold 429s still arm it. Create/update calls are not retried automatically. - Fan-out tool descriptions include rate-limit tips. Tools that are commonly looped over (
autotask_search_ticket_notes,autotask_search_project_notes,autotask_search_company_notes,autotask_search_time_entries,autotask_search_ticket_attachments,autotask_search_ticket_note_attachments) include a hint reminding the LLM to scope the parent record list before iterating.
Raising the limit
Per-integration thresholds can be increased in Autotask:
- Autotask Admin → Resources/Users (HR) → Resources
- Edit the dedicated API user → Workflow Rules → API Tracking Identifier
- Adjust the threshold for the integration code your MCP server uses
This is the right answer when a single integration code is shared between Claude/Copilot/etc. and other tooling. For LLM-heavy workloads, dedicate a separate API user (and integration code) so a fan-out from one client doesn't starve others.
Patterns that help
- Always scope by date range when searching notes, time entries, attachments. Even a 30-day window can drop call count by an order of magnitude.
- Cache parent lookups. If you're iterating over 100 tickets, fetch the ticket list once and reuse it across follow-up queries; don't re-search per child.
- Use
autotask_get_field_infoto discover picklist values once per session rather than refetching them per call.
If you're seeing threshold warnings from Autotask but the server seems fine, the LLM driver is probably issuing fan-out patterns. Tighten the prompt to scope before iterating.
Troubleshooting
Common Issues
Authentication Errors
Solution: Ensure all required environment variables are set correctly.
Connection Timeouts
Solutions:
- Check network connectivity
- Verify API endpoint URL
- Confirm API user has proper permissions
Permission Denied
Solution: Review Autotask API user permissions and security level settings.
Debug Mode
Enable debug logging for detailed troubleshooting:
Health Checks
Test server connectivity:
Autotask API Rate Limits
Problem: 429 Too Many Requests or "thread limit exceeded" errors when Claude queries aggressively
Autotask enforces 3 concurrent threads per endpoint per API tracking identifier. When an LLM issues multiple tool calls simultaneously (e.g., searching tickets, companies, and contacts at once), requests can pile up and hit this limit.
Built-in mitigation: The HTTP client caps in-flight requests per tenant (AUTOTASK_MAX_INFLIGHT, default 3) and queues the rest, so a parallel burst waits for a free slot instead of tripping the thread threshold. You may notice slower responses under heavy load. A thread-threshold 429 on an idempotent call is retried briefly; the hourly request threshold still surfaces as a structured rate-limit error and a short tenant cooldown.
Critical for team/multi-user deployments: If multiple users or the MCP Gateway share the same API credentials, they compete for the same 3-thread budget. This can cause noticeable slowdowns and, in severe cases, queued requests that time out.
Solution — one API key per team: Create a dedicated Autotask API user per team or integration. Each user has an independent integrationCode with its own thread budget:
- Admin > Resources (Users) > Resources/Users → Add Resource
- Set Security Level to API User
- Note the username, secret, and integration code
- Set
AUTOTASK_USERNAME,AUTOTASK_SECRET, andAUTOTASK_INTEGRATION_CODEper team
Additionally, Autotask limits 10,000 total requests per hour across all integrations hitting your tenant. If you hit this limit, all integrations will start receiving 429s — another reason to use targeted queries with appropriate filters.
MCP Client Issues
Problem: MCP server not appearing in Claude Desktop Solutions:
- Check configuration file syntax (valid JSON)
- Verify file path in the configuration
- Ensure environment variables are set correctly
- Restart Claude Desktop completely
Problem: "Invalid JSON-RPC message: [dotenv@...] injecting env" / Server disconnected
Cause: The autotask-node library calls dotenv.config() at module load time. dotenv v17+ writes status messages via console.log to stdout, which corrupts the MCP stdio JSON-RPC channel.
Solution: Ensure you're using dist/entry.js (not dist/index.js) as the entry point. The entry wrapper redirects console.log to stderr before any libraries load.
Problem: Slow responses Solutions:
- Check network connectivity to Autotask API
- Enable debug logging (
LOG_LEVEL=debug) to identify bottlenecks - The server caches company/resource names for 30 minutes automatically
Security Best Practices
- Store credentials in environment variables, not directly in config files
- Limit Autotask API user permissions to the minimum required
- Rotate API credentials regularly
- For Docker deployments, use secrets management rather than plain environment variables
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Development Guidelines
- Follow TypeScript best practices
- Maintain test coverage above 80%
- Use conventional commit messages
- Update documentation for API changes
- Add tests for new features
License
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
Contributor License Agreement
By submitting a pull request, you agree to the terms of our Contributor License Agreement. This ensures that contributions can be properly licensed and that you have the right to submit the code.
Contributors
Support
Acknowledgments
- Model Context Protocol by Anthropic
- Autotask REST API by Kaseya
- autotask-node library
Built by WYRE Technology — part of the MSP Claude Plugins ecosystem
來源:README.md,提交 2e35d8d
工具
0版本歷史
1- v2.32.10最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分