Thunder Client License Manager MCP Server
Provides tools for managing Thunder Client licenses through their API, enabling users to add, retrieve, and remove licenses with simple commands.
README Documentation
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.