Thunder Client License Manager MCP Server
An MCP (Model Context Protocol) server that provides tools for managing Thunder Client licenses through their API.
Features
- Add licenses: Add Thunder Client licenses for specified email addresses
- Get licenses: Retrieve license information with automatic pagination
- Remove licenses: Remove Thunder Client licenses for specified email addresses
Requirements
- Node.js 20+ (LTS)
- TypeScript
- Thunder Client API access
Installation
- Clone this repository
- Install dependencies:
npm install - Build the project:
npm run build
Environment Variables
Before using the MCP server, you need to set the following environment variables:
TC_API_KEY: Your Thunder Client API key (sent as 'api-key' header)TC_ACCOUNT_NUMBER: Your Thunder Client account numberTC_BASE_URL: (Optional) Base URL for Thunder Client API (defaults to 'https://www.thunderclient.com')
Example Environment Setup
export TC_API_KEY="your-api-key-here"
export TC_ACCOUNT_NUMBER="your-account-number"
export TC_BASE_URL="https://www.thunderclient.com" # optional
MCP Configuration
Add the server to your MCP settings configuration:
For Cline/Claude Desktop
Add to your cline_mcp_settings.json or Claude Desktop configuration:
{
"mcpServers": {
"thunderclient-license-manager": {
"command": "npx",
"args": ["-y", "/path/to/thunderclient-license-manager-mcp"],
"env": {
"TC_API_KEY": "your-api-key-here",
"TC_ACCOUNT_NUMBER": "your-account-number-here"
}
}
}
}
For other MCP clients
Use the stdio transport with npx:
npx -y .
Available Tools
1. thunderclient_add_license
Add Thunder Client licenses for specified email addresses.
Parameters:
emails(required): Array of email addresses to add licenses for
Example:
{
"emails": ["user1@example.com", "user2@example.com"]
}
2. thunderclient_get_licenses
Get Thunder Client licenses with smart pagination.
Parameters:
pageNumber(optional): Specific page to fetch. If omitted, fetches ALL pages automatically
Example - Get all licenses:
{}
Example - Get specific page:
{
"pageNumber": 2
}
3. thunderclient_remove_license
Remove Thunder Client licenses for specified email addresses.
Parameters:
emails(required): Array of email addresses to remove licenses for
Example:
{
"emails": ["user1@example.com", "user2@example.com"]
}
API Response Format
All tools return responses in the following format:
{
"success": true/false,
"data": { /* API response data */ },
"message": "Success/error message",
"error": "Error details (if success is false)"
}
Special Response for thunderclient_get_licenses without pageNumber
When fetching all pages, the response includes:
{
"success": true,
"data": {
"licenses": [ /* Combined licenses from all pages */ ],
"totalPages": 5,
"totalCount": 150,
"pagesFetched": 5
},
"message": "Retrieved 150 licenses across 5 page(s)"
}
Development
Scripts
npm run build: Compile TypeScript to JavaScriptnpm run dev: Watch mode for developmentnpm start: Run the compiled server
Project Structure
src/
├── index.ts # Main MCP server implementation
├── api-client.ts # Thunder Client API wrapper
└── types.ts # TypeScript type definitions
Error Handling
The server includes comprehensive error handling:
- Environment variable validation
- API request/response error handling
- Input validation for required parameters
- Proper MCP error codes and messages
License
MIT
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
Support
For issues related to the Thunder Client API, refer to their documentation. For MCP server issues, please create an issue in this repository.
