{"_id":"@adamhancock/connectwisepsa-mcp","_rev":"2-d121b7a684538ab22d3816e986748f19","name":"@adamhancock/connectwisepsa-mcp","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@adamhancock/connectwisepsa-mcp","version":"0.1.0","keywords":["mcp","connectwise","psa","api"],"author":"","license":"ISC","_id":"@adamhancock/connectwisepsa-mcp@0.1.0","maintainers":[{"name":"adam1571","email":"adammhancock@gmail.com"}],"bin":{"connectwisepsa-mcp":"dist/index.js"},"dist":{"shasum":"998025c25d843b5ea6a317b815a6ba88aad0c05a","tarball":"https://registry.npmjs.org/@adamhancock/connectwisepsa-mcp/-/connectwisepsa-mcp-0.1.0.tgz","fileCount":9,"integrity":"sha512-csWBrSdutZwlUXQhAvurM/DQjO+2RRiNKca5dYS3Kd6XMr4wM8/bol10XnxbMPzCCNAHmBQzFrP5+GE4grWPKA==","signatures":[{"sig":"MEQCIBYXy+QguyiK3XmUnqAw0Zqt2UGaUaquKECA6apyEVy2AiBCadIp7D2f2l/fbtSiPCVk85YHXX4rQuQdFrfO3xLE0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7619530},"main":"dist/index.js","type":"module","_from":"file:adamhancock-connectwisepsa-mcp-0.1.0.tgz","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","build":"tsc","start":"node dist/index.js","inspect":"node --inspect dist/index.js","inspector":"npx mcp-inspector tsx --env-file=.env src/index.ts","prepublish":"pnpm run build"},"_npmUser":{"name":"adam1571","email":"adammhancock@gmail.com"},"_resolved":"/tmp/2f6e42586482b620ce490db808e541b9/adamhancock-connectwisepsa-mcp-0.1.0.tgz","_integrity":"sha512-csWBrSdutZwlUXQhAvurM/DQjO+2RRiNKca5dYS3Kd6XMr4wM8/bol10XnxbMPzCCNAHmBQzFrP5+GE4grWPKA==","_npmVersion":"10.9.3","description":"MCP server for ConnectWise PSA API","directories":{},"_nodeVersion":"22.18.0","dependencies":{"@modelcontextprotocol/sdk":"^1.17.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/connectwisepsa-mcp_0.1.0_1756642872434_0.8530517939523161","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@adamhancock/connectwisepsa-mcp","version":"0.1.1","description":"MCP server for ConnectWise PSA API","main":"dist/index.js","type":"module","bin":{"connectwisepsa-mcp":"dist/index.js"},"keywords":["mcp","connectwise","psa","api"],"author":"","license":"ISC","dependencies":{"@modelcontextprotocol/sdk":"^1.17.4"},"devDependencies":{"@types/node":"^22.10.2","tsx":"^4.19.2","typescript":"^5.7.2"},"scripts":{"build":"tsc","prepublish":"pnpm run build","dev":"tsx watch --env-file=.env src/index.ts","start":"node dist/index.js","inspect":"node --inspect dist/index.js","inspector":"npx mcp-inspector tsx --env-file=.env src/index.ts"},"_id":"@adamhancock/connectwisepsa-mcp@0.1.1","_integrity":"sha512-8LqGiyKVEyFg6iwTuLqtFSN9QnqakuoHWwWFkVig6W65pllUcrvuJQm6UYmP4Ks7SsrbvBkWCHesJjf+2dUH7g==","_resolved":"/tmp/8ab973fcee65a0be63a6798f63ec7f5e/adamhancock-connectwisepsa-mcp-0.1.1.tgz","_from":"file:adamhancock-connectwisepsa-mcp-0.1.1.tgz","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-8LqGiyKVEyFg6iwTuLqtFSN9QnqakuoHWwWFkVig6W65pllUcrvuJQm6UYmP4Ks7SsrbvBkWCHesJjf+2dUH7g==","shasum":"cfa81c5a3960146f91b1ed45bcb2da6b38a43afd","tarball":"https://registry.npmjs.org/@adamhancock/connectwisepsa-mcp/-/connectwisepsa-mcp-0.1.1.tgz","fileCount":9,"unpackedSize":7619756,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE+MrJWpiO+VGjgQOCABRVObPG3F+kWWnHGj5ZdaFZ+rAiBEx2a8Gk7MXCTnOjmuNrZ6jWSX2Tm1xRQHmNwOUvVAFQ=="}]},"_npmUser":{"name":"adam1571","email":"adammhancock@gmail.com"},"directories":{},"maintainers":[{"name":"adam1571","email":"adammhancock@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/connectwisepsa-mcp_0.1.1_1756643689421_0.4238092804000728"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-31T12:21:12.284Z","modified":"2025-08-31T12:34:49.915Z","0.1.0":"2025-08-31T12:21:12.667Z","0.1.1":"2025-08-31T12:34:49.695Z"},"license":"ISC","keywords":["mcp","connectwise","psa","api"],"description":"MCP server for ConnectWise PSA API","maintainers":[{"name":"adam1571","email":"adammhancock@gmail.com"}],"readme":"# ConnectWise PSA MCP Server\n\nA Model Context Protocol (MCP) server that provides seamless integration with ConnectWise PSA (Professional Services Automation) API. This server enables AI assistants to interact with ConnectWise PSA data including service tickets, companies, projects, and more.\n\n## Features\n\n- 🔍 **API Schema Discovery** - Browse and search ConnectWise PSA API endpoints\n- 🎫 **Service Management** - Access and manage service tickets, boards, and statuses\n- 🏢 **Company Management** - Query and manage companies and contacts\n- 📊 **Project Management** - Access project information and tasks\n- 💰 **Finance Integration** - Query invoices, agreements, and billing data\n- 🔧 **Flexible API Access** - Direct API call capability for any ConnectWise PSA endpoint\n\n## Installation\n\n### Using npx\n\nYou can run the ConnectWise PSA MCP server directly using npx:\n\n```bash\nnpx @adamhancock/connectwisepsa-mcp\n```\n\n### Using Docker\n\nPull and run the server using Docker:\n\n```bash\ndocker run -it \\\n  -e CONNECTWISE_PSA_PUBLIC_KEY=\"your_public_key\" \\\n  -e CONNECTWISE_PSA_PRIVATE_KEY=\"your_private_key\" \\\n  -e CONNECTWISE_PSA_CLIENT_ID=\"your_client_id\" \\\n  -e CONNECTWISE_PSA_COMPANY_URL=\"https://your-company.connectwisedev.com\" \\\n  ghcr.io/adamhancock/connectwisepsa-mcp:latest\n```\n\n### Installing in MCP Client\n\nTo use this server with an MCP client like Claude Desktop, add it to your configuration:\n\n#### Claude Desktop Configuration\n\nEdit your Claude Desktop configuration file:\n\n**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n**Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\nAdd the ConnectWise PSA server configuration:\n\n##### Using npx:\n\n```json\n{\n  \"mcpServers\": {\n    \"connectwisepsa\": {\n      \"command\": \"npx\",\n      \"args\": [\"@adamhancock/connectwisepsa-mcp\"],\n      \"env\": {\n        \"CONNECTWISE_PSA_PUBLIC_KEY\": \"your_public_key\",\n        \"CONNECTWISE_PSA_PRIVATE_KEY\": \"your_private_key\",\n        \"CONNECTWISE_PSA_CLIENT_ID\": \"your_client_id\",\n        \"CONNECTWISE_PSA_COMPANY_URL\": \"https://your-company.connectwisedev.com\"\n      }\n    }\n  }\n}\n```\n\n##### Using Docker:\n\n```json\n{\n  \"mcpServers\": {\n    \"connectwisepsa\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\",\n        \"-i\",\n        \"--rm\",\n        \"-e\",\n        \"CONNECTWISE_PSA_PUBLIC_KEY=your_public_key\",\n        \"-e\",\n        \"CONNECTWISE_PSA_PRIVATE_KEY=your_private_key\",\n        \"-e\",\n        \"CONNECTWISE_PSA_CLIENT_ID=your_client_id\",\n        \"-e\",\n        \"CONNECTWISE_PSA_COMPANY_URL=https://your-company.connectwisedev.com\",\n        \"ghcr.io/adamhancock/connectwisepsa-mcp:latest\"\n      ]\n    }\n  }\n}\n```\n\n## Configuration\n\n### Required Environment Variables\n\n- `CONNECTWISE_PSA_PUBLIC_KEY`: Your ConnectWise PSA API public key\n- `CONNECTWISE_PSA_PRIVATE_KEY`: Your ConnectWise PSA API private key\n- `CONNECTWISE_PSA_CLIENT_ID`: Your ConnectWise PSA client ID\n- `CONNECTWISE_PSA_COMPANY_URL`: Your ConnectWise PSA instance URL (e.g., https://your-company.connectwisedev.com)\n\n### Getting API Credentials\n\n1. Log in to your ConnectWise PSA instance\n2. Navigate to System > Members\n3. Select your API member or create a new one\n4. Go to the API Keys tab\n5. Generate new API keys if needed\n6. Copy the Public Key and Private Key\n7. Get your Client ID from the ConnectWise Developer Portal at https://developer.connectwise.com/ClientID\n   - The Client ID is a unique GUID assigned to your integration\n   - Never share your Client ID - it should be treated like a password\n   - Each company/integration needs its own unique Client ID\n\n## Available Tools\n\n### Schema Discovery\n\n- `connectwisepsa_get_schema_overview` - Get an overview of available API endpoints\n- `connectwisepsa_list_api_endpoints` - List all API endpoints with pagination\n- `connectwisepsa_get_api_endpoint_details` - Get detailed information about specific endpoints\n- `connectwisepsa_search_api_endpoints` - Search for endpoints by keywords\n- `connectwisepsa_get_api_schemas` - Get API schema definitions\n\n### Direct API Access\n\n- `connectwisepsa_api_call` - Make authenticated API calls to any ConnectWise PSA endpoint\n\n## Usage Examples\n\n### Discovering Available APIs\n\n```typescript\n// Get API overview\nawait connectwisepsa_get_schema_overview();\n\n// Search for ticket-related endpoints\nawait connectwisepsa_search_api_endpoints({ \n  query: \"ticket\" \n});\n\n// Get details about service ticket endpoints\nawait connectwisepsa_get_api_endpoint_details({ \n  pathPattern: \"service/tickets\" \n});\n```\n\n### Working with Service Tickets\n\n```typescript\n// Get list of service tickets\nawait connectwisepsa_api_call({\n  method: \"GET\",\n  path: \"/service/tickets\",\n  queryParams: {\n    conditions: \"status/name='Open'\",\n    pageSize: \"25\"\n  }\n});\n\n// Create a new ticket\nawait connectwisepsa_api_call({\n  method: \"POST\",\n  path: \"/service/tickets\",\n  body: {\n    summary: \"New support request\",\n    board: { id: 1 },\n    status: { id: 1 },\n    company: { id: 123 }\n  }\n});\n```\n\n### Query Parameters Guide\n\nConnectWise PSA API supports powerful filtering and querying:\n\n- **conditions**: Filter results using field comparisons\n  - Format: `\"field operator value\"`\n  - Operators: `=`, `!=`, `<`, `<=`, `>`, `>=`, `contains`, `like`, `in`, `not`\n  - Examples: \n    - `'status/name=\"Open\"'`\n    - `'lastUpdated>[2024-01-01T00:00:00Z]'`\n    - `'priority/id in (1,2,3)'`\n\n- **orderBy**: Sort results\n  - Example: `'lastUpdated desc'`\n\n- **fields**: Limit response fields\n  - Example: `'id,summary,status'`\n\n- **page** & **pageSize**: Pagination\n  - Default pageSize: 25, Max: 1000\n\n## Development\n\n### Building from Source\n\n```bash\n# Clone the repository\ngit clone https://github.com/adamhancock/mcp.git\ncd mcp/packages/connectwisepsa-mcp\n\n# Install dependencies\nnpm install\n\n# Build the package\nnpm run build\n\n# Run locally\nnpm start\n```\n\n### Testing\n\n```bash\nnpm test\n```\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Authentication Errors**\n   - Verify your API credentials are correct\n   - Ensure your API member has appropriate permissions\n   - Check that your company URL is correct\n\n2. **Connection Issues**\n   - Verify network connectivity to ConnectWise PSA\n   - Check firewall rules for API access\n   - Ensure your ConnectWise PSA instance is accessible\n\n3. **Rate Limiting**\n   - ConnectWise PSA has rate limits (~1000 requests/minute)\n   - Implement appropriate delays between bulk operations\n   - Watch for HTTP 429 responses with Retry-After headers\n\n## Support\n\nFor issues, questions, or contributions, please visit:\n- GitHub Issues: [https://github.com/adamhancock/mcp/issues](https://github.com/adamhancock/mcp/issues)\n\n## License\n\nMIT\n\n## Author\n\nAdam Hancock\n\n## Acknowledgments\n\nBuilt on the Model Context Protocol (MCP) by Anthropic.","readmeFilename":"README.md"}