Install
$ agentstack add mcp-wyre-technology-syncro-mcp ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Syncro MCP Server
A Model Context Protocol (MCP) server for Syncro MSP, implementing a decision tree architecture for efficient tool navigation.
One-Click Deployment
[](https://cloud.digitalocean.com/apps/new?repo=https://github.com/wyre-technology/syncro-mcp/tree/main)
[](https://deploy.workers.cloudflare.com/?url=https://github.com/wyre-technology/syncro-mcp)
> Operator note — GitHub Packages authentication (required for one-click deploys). > This server depends on the private @wyre-technology/node-syncro SDK, which is > hosted on GitHub Packages. GitHub Packages requires an authentication token > on every install (no anonymous reads, even for public packages), so the cloud > builders fail during npm install with 401 Unauthorized unless you supply a > token. Create a GitHub Personal Access Token with the read:packages scope > and provide it to the builder: > > - Cloudflare Workers — set a build/environment variable named NODE_AUTH_TOKEN to your PAT. > - DigitalOcean App Platform — set a build-time secret named GITHUB_TOKEN to your PAT. > > For local npm install, run export NODE_AUTH_TOKEN=$(gh auth token) first.
Features
- Decision Tree Architecture: Tools are organized by domain and loaded lazily
- Domain Navigation: Navigate between customers, tickets, assets, contacts, and invoices
- Lazy Loading: Domain handlers and the Syncro client are loaded on-demand
- Full Syncro API Coverage: Access to key Syncro MSP functionality
Installation
> WYRE MCP servers are distributed via OCI/GHCR images and (where available) MCPB bundles. The npm package @wyre-technology/syncro-mcp is also published to GitHub Packages (npm.pkg.github.com); installing it requires an authenticated .npmrc with read:packages scope (run export NODE_AUTH_TOKEN=$(gh auth token) locally).
Option 1: WYRE MCP Gateway (Recommended)
Use the hosted gateway at mcp.wyre.ai — paste your Syncro API key into the gateway UI and you're done.
{
"mcpServers": {
"syncro": {
"type": "http",
"url": "https://mcp.wyre.ai/v1/syncro/mcp",
"headers": {
"X-Syncro-Api-Key": "${SYNCRO_API_KEY}"
}
}
}
}
Option 2: Claude Code CLI (run from GitHub)
claude mcp add syncro \
-e SYNCRO_API_KEY=your-api-key \
-e SYNCRO_SUBDOMAIN=your-subdomain \
-- npx -y github:wyre-technology/syncro-mcp
Option 3: Docker (GHCR)
docker run --rm \
-e SYNCRO_API_KEY=your-api-key \
-e SYNCRO_SUBDOMAIN=your-subdomain \
ghcr.io/wyre-technology/syncro-mcp:latest
Option 4: From Source
git clone https://github.com/wyre-technology/syncro-mcp.git
cd syncro-mcp
npm ci
npm run build
node dist/index.js
Configuration
Set the following environment variables:
| Variable | Required | Description | |----------|----------|-------------| | SYNCRO_API_KEY | Yes | Your Syncro API key | | SYNCRO_SUBDOMAIN | No | Your Syncro subdomain (if applicable) |
Getting Your API Key
- Log in to your Syncro MSP account
- Navigate to Settings > API Tokens
- Generate a new API token with appropriate permissions
Architecture
Decision Tree Navigation
The server uses a hierarchical approach to tool discovery:
- Initial State: Only navigation and status tools are exposed
- After Navigation: Domain-specific tools become available
- Back Navigation: Return to the main menu to switch domains
This reduces cognitive load and improves LLM tool selection accuracy.
Available Domains
| Domain | Description | Tools | |--------|-------------|-------| | customers | Manage customer accounts | list, get, create, search | | tickets | Manage support tickets | list, get, create, update, add_comment | | assets | Manage configuration items | list, get, search | | contacts | Manage customer contacts | list, get, create | | invoices | View and manage billing | list, get, create, email |
Tools Reference
Navigation Tools
syncro_navigate
Navigate to a domain to access its tools.
{
"domain": "customers" | "tickets" | "assets" | "contacts" | "invoices"
}
syncro_back
Return to the main menu from any domain.
syncro_status
Show current navigation state and credential status.
Customers Domain
syncrocustomerslist
List customers with optional filters.
{
"query": "search term",
"business_name": "Company Inc",
"email": "contact@example.com",
"include_disabled": false,
"page": 1,
"per_page": 25
}
syncrocustomersget
Get a specific customer by ID.
{
"customer_id": 123
}
syncrocustomerscreate
Create a new customer.
{
"business_name": "Acme Corp",
"firstname": "John",
"lastname": "Doe",
"email": "john@acme.com"
}
syncrocustomerssearch
Search customers by query string.
{
"query": "acme",
"limit": 25
}
Tickets Domain
syncroticketslist
List tickets with optional filters.
{
"customer_id": 123,
"status": "Open",
"user_id": 456,
"resolved": false
}
syncroticketsget
Get a specific ticket by ID.
{
"ticket_id": 789
}
syncroticketscreate
Create a new ticket.
{
"customer_id": 123,
"subject": "Network Issue",
"problem_type": "Network",
"comment_body": "Initial description"
}
syncroticketsupdate
Update an existing ticket.
{
"ticket_id": 789,
"status": "Resolved",
"user_id": 456
}
syncroticketsadd_comment
Add a comment to a ticket.
{
"ticket_id": 789,
"body": "Comment text",
"hidden": false
}
Assets Domain
syncroassetslist
List assets with optional filters.
{
"customer_id": 123,
"asset_type": "Desktop"
}
syncroassetsget
Get a specific asset by ID.
{
"asset_id": 456
}
syncroassetssearch
Search assets by query or serial number.
{
"query": "workstation",
"asset_serial": "SN12345"
}
Contacts Domain
syncrocontactslist
List contacts with optional filters.
{
"customer_id": 123,
"query": "john"
}
syncrocontactsget
Get a specific contact by ID.
{
"contact_id": 789
}
syncrocontactscreate
Create a new contact.
{
"customer_id": 123,
"name": "Jane Smith",
"email": "jane@example.com"
}
Invoices Domain
syncroinvoiceslist
List invoices with optional filters.
{
"customer_id": 123,
"status": "sent",
"since_date": "2024-01-01"
}
syncroinvoicesget
Get a specific invoice by ID.
{
"invoice_id": 456
}
syncroinvoicescreate
Create a new invoice.
{
"customer_id": 123,
"due_date": "2024-02-01"
}
syncroinvoicesemail
Email an invoice to the customer.
{
"invoice_id": 456,
"subject": "Your Invoice"
}
Rate Limiting
Syncro API has a rate limit of 180 requests per minute. The underlying @wyre-technology/node-syncro library handles rate limiting automatically.
Development
# Install dependencies. The @wyre-technology/node-syncro SDK lives on GitHub
# Packages, so authenticate first:
export NODE_AUTH_TOKEN=$(gh auth token)
npm install
# Build
npm run build
# Run in development
npm run dev
# Type check
npm run typecheck
# Lint
npm run lint
License
Apache-2.0
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: wyre-technology
- Source: wyre-technology/syncro-mcp
- License: Apache-2.0
- Homepage: https://mcp.wyretechnology.com/mcp-servers/syncro/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.