A Model Context Protocol (MCP) server for interacting with the IssueBadge API. This server enables AI assistants like Claude and ChatGPT to manage digital badges and certificates using natural language.
- π€ AI-Powered Badge Management: Use natural language to create, issue, and manage badges
- π Dual Authentication: Support for both Laravel Sanctum and OAuth2
- π Complete Badge Lifecycle: Create templates, issue to recipients, and verify authenticity
- π Multi-tenant Support: Secure tenant isolation for enterprise use
- π‘οΈ Idempotency Protection: Prevent duplicate operations with built-in safeguards
- π§ Automated Notifications: Automatic email delivery with verification URLs
- π¨ Custom Fields: Flexible metadata and custom field support
- Node.js 18+
- npm 8+
- IssueBadge API account with API key
-
Clone the repository
git clone https://github.com/issuebadge/mcp-server.git cd mcp-server
-
Install dependencies
npm install
-
Configure environment
cp .env.example .env # Edit .env with your IssueBadge API credentials
-
Build the project
npm run build
-
Test the server
npm test
Create a .env
file based on .env.example
:
# API Configuration
ISSUEBADGE_BASE_URL=https://app.issuebadge.com/api/v1
ISSUEBADGE_API_KEY=
# OAuth2 Configuration (Alternative)
ISSUEBADGE_OAUTH_URL=https://app.issuebadge.com/api/v1/oauth
ISSUEBADGE_OAUTH_TOKEN=your_oauth_token_here
# Authentication Method (sanctum or oauth2)
AUTH_METHOD=sanctum
# Server Configuration
MCP_SERVER_NAME=IssueBadge MCP Server
MCP_SERVER_VERSION=1.0.0
# Optional Settings
REQUEST_TIMEOUT=30000
DEBUG=false
MAX_RETRIES=3
RETRY_DELAY=1000
Add this server to your Claude Desktop configuration:
{
"mcpServers": {
"issuebadge": {
"command": "node",
"args": ["/absolute/path/to/mcp-server/dist/index.js"],
"env": {
"ISSUEBADGE_BASE_URL": "https://app.issuebadge.com
/api/v1",
"ISSUEBADGE_API_KEY": "",
"AUTH_METHOD": "sanctum"
}
}
}
}
- Create a new Custom GPT in ChatGPT
- Import the OpenAPI specification from your IssueBadge instance
- Configure Bearer token authentication with your API key
- Start managing badges through conversation!
Validates IssueBadge API keys for authentication.
Parameters:
api_key
(string, required): The API key to validate
Example:
"Validate my API key: 1|abcdef123456789..."
Retrieves all available badges for the authenticated organization.
Parameters:
limit
(number, optional): Maximum badges to return (default: 100)
Example:
"Show me all available badges"
"List the first 50 badges"
Creates a new badge template with optional custom fields.
Parameters:
name
(string, required): Badge namedescription
(string, required): Badge descriptionissuing_organization_name
(string, required): Organization nameidempotency_key
(string, required): Unique identifiercustom_fields
(array, optional): Custom field definitions- And more optional parameters...
Example:
"Create a badge called 'Web Development Certificate' for completing our full-stack course"
"Create a Python certification badge with custom fields for completion date and final score"
Issues a badge to a recipient with optional metadata.
Parameters:
badge_id
(string, required): Badge ID from creationname
(string, required): Recipient's full nameidempotency_key
(string, required): Unique identifieremail
(string, optional): Recipient's emailmetadata
(object, optional): Custom field values
Example:
"Issue the Web Development badge to John Doe with email john@example.com"
"Issue Python certification to Alice with completion date today and score 95%"
Human: "Create a badge for JavaScript mastery with fields for completion date and project count"
AI: I'll create a JavaScript mastery badge with the custom fields you specified.
β¨ Badge Created Successfully!
π·οΈ Badge Name: JavaScript Mastery Certificate
π Badge ID: js_mastery_2024_001
π Custom fields: completion_date (date), project_count (number)
Human: "Issue the JavaScript badge to Sarah Chen with completion date December 1st and 5 projects completed"
AI: I'll issue the JavaScript mastery badge to Sarah Chen with the specified details.
π Badge Issued Successfully!
π§ Recipient: Sarah Chen
π Verification URL: https://yourdomain.com/verify/xyz123
π
Completion Date: 2024-12-01
π Projects: 5
Human: "Create completion badges for all students in my Python course who scored above 85%"
AI: I'll help you create and issue completion badges for high-performing students. First, let me create a Python Course Completion badge, then we can issue it to qualified students.
[Creates badge and processes student list]
# Clone the repository
git clone https://github.com/issuebadge/mcp-server.git
cd mcp-server
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run in development mode
npm run dev
# Lint code
npm run lint
# Format code
npm run format
mcp-server/
βββ src/
β βββ index.ts # Main MCP server implementation
βββ dist/ # Compiled JavaScript (generated)
βββ .env.example # Environment configuration template
βββ package.json # Node.js dependencies and scripts
βββ tsconfig.json # TypeScript configuration
βββ README.md # This file
- All API communications use HTTPS
- API keys are validated before each request
- Idempotency keys prevent duplicate operations
- Multi-tenant data isolation
- Request timeout protection
- Comprehensive error handling
The MCP server provides detailed error messages for common issues:
- Authentication Errors: Invalid API keys or expired tokens
- Validation Errors: Missing required parameters or invalid formats
- Network Errors: Connection timeouts or service unavailability
- Business Logic Errors: Duplicate operations or insufficient permissions
- Course Completion: Automatically issue badges when students complete courses
- Skill Validation: Create skill-based badges with assessment scores
- Graduation Certificates: Bulk issue graduation badges with academic details
- Certification Programs: Manage professional certifications with expiration dates
- Compliance Training: Track and verify mandatory training completion
- Skill Development: Issue badges for internal skill development programs
- Conference Attendance: Issue attendance badges for events and workshops
- Achievement Tracking: Create progressive badge systems for ongoing programs
- Speaker Recognition: Manage speaker and participant recognition badges
We welcome contributions! Please see our contributing guidelines:
- 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
- Follow TypeScript best practices
- Add comprehensive error handling
- Include JSDoc comments for functions
- Update tests for new features
- Follow semantic versioning
This project is licensed under the MIT License - see the LICENSE file for details.
- π Documentation: Check this README and inline code comments
- π Bug Reports: Open an issue
- π¬ Discussions: GitHub Discussions
- π§ Email: support@issuebadge.com
1. API Key Validation Failed
# Check API key format (should start with number|)
# Verify the key hasn't expired
# Ensure correct base URL
2. Connection Timeout
# Check network connectivity
# Verify IssueBadge service status
# Increase REQUEST_TIMEOUT in .env
3. Badge Creation Errors
# Verify required fields are provided
# Check idempotency key uniqueness
# Validate organization permissions
- IssueBadge API: Core badge management platform
- Model Context Protocol: MCP specification and tools
- Claude Desktop: AI assistant with MCP support
- Batch badge operations
- Advanced filtering and search
- Webhook integration
- Badge template management
- Analytics and reporting tools
- Custom badge validation rules
- Integration with learning management systems
- Advanced workflow automation
- Blockchain verification support
- Multi-language badge content
- Advanced branding customization
- Enterprise SSO integration
Ready to revolutionize your badge management? Get started with IssueBadge MCP Server and experience the power of conversational badge administration!
Built with β€οΈ by the IssueBadge team