@workshops.de/mcp-server
v2.0.3
Published
MCP server for the workshops.de API
Readme
@workshops.de/mcp-server
MCP (Model Context Protocol) server for the workshops.de API. Allows AI agents in Claude Desktop, Cursor, GitHub Actions, and other MCP-compatible clients to interact with the platform.
Quick Start
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"workshops-de": {
"command": "npx",
"args": ["-y", "@workshops.de/mcp-server"],
"env": {
"WORKSHOPS_API_TOKEN": "your-api-token"
}
}
}
}Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"workshops-de": {
"command": "npx",
"args": ["-y", "@workshops.de/mcp-server"],
"env": {
"WORKSHOPS_API_TOKEN": "your-api-token"
}
}
}
}GitHub Actions
- uses: anthropics/claude-code-action@beta
with:
mcp_config: |
{
"mcpServers": {
"workshops-de": {
"command": "npx",
"args": ["-y", "@workshops.de/mcp-server"],
"env": {
"WORKSHOPS_API_TOKEN": "${{ secrets.WORKSHOPS_API_TOKEN }}"
}
}
}
}Claude.ai (hosted, multi-user)
Connect via the hosted HTTP server with OAuth at:
https://mcp.workshops.de/mcpEnvironment Variables
| Variable | Default | Description |
| ------------------------ | ---------------------- | ------------------------------------------------------------------------------------ |
| WORKSHOPS_API_TOKEN | — | Your workshops.de API token (find it in Account → API Token) |
| WORKSHOPS_API_BASE_URL | https://workshops.de | Base URL — override for local development (http://localhost:4000) |
Available Tools
Public (no auth required)
| Tool | Description |
| ------------------------- | ----------------------------------------------------------------- |
| list_courses | List all visible courses, with optional filters |
| get_course | Get full course details by ID or slug |
| list_events | List future public events, with optional city/language filters |
| get_event | Get full details for a specific event by ID or slug |
| get_course_events | List upcoming events for a specific course (preferred for topics) |
| get_related_events | Get related events for a course |
| prepare_event_booking | Calculate booking price and return a ready-to-use booking URL |
| list_trainers | List all trainers |
| get_trainer | Get trainer details by ID |
| get_course_trainers | List trainers for a course |
| get_portal | Get portal details by slug |
| search | Full-text search across courses, topics, tracks, and posts |
| list_posts | List published blog posts |
| get_post | Get a blog post by slug |
| get_inhouse_inquiry_url | Get a URL to request an inhouse/on-site workshop for a course |
| get_general_inquiry_url | Get a URL for a general inhouse training inquiry |
Authenticated (requires OAuth or WORKSHOPS_API_TOKEN)
| Tool | Description |
| -------------------- | ------------------------------------------------------------------ |
| get_current_user | Get the authenticated user's profile (name, email, roles, avatar) |
| get_my_events | List events where the user is personally registered as an attendee |
| get_my_bookings | List event bookings created by the user (may include others) |
| subscribe_course | Add the user to a course's appointment radar (Terminradar) |
| unsubscribe_course | Remove the user from a course's appointment radar (Terminradar) |
| create_post | Create a blog post (requires author/team_member role) |
| update_post | Update a blog post (requires author/team_member role) |
| delete_post | Delete a blog post (requires author/admin role) |
Admin (requires content.write scope — admin role)
| Tool | Description |
| -------------------------------- | ---------------------------- |
| admin_create_course | Create a new course |
| admin_update_course | Update an existing course |
| admin_add_topic_to_course | Add a topic to a course |
| admin_remove_topic_from_course | Remove a topic from a course |
| admin_list_topics | List all topics |
| admin_get_topic | Get topic details |
| admin_create_topic | Create a new topic |
| admin_update_topic | Update an existing topic |
| admin_add_track_to_topic | Add a track to a topic |
| admin_remove_track_from_topic | Remove a track from a topic |
| admin_list_tracks | List all tracks |
| admin_get_track | Get track details |
| admin_create_track | Create a new track |
| admin_update_track | Update an existing track |
| admin_add_course_to_track | Add a course to a track |
| admin_remove_course_from_track | Remove a course from a track |
Classroom (requires classroom.read or classroom.write scope — trainer or admin role)
| Tool | Description |
| -------------------------- | ------------------------------ |
| list_event_lessons | List lessons for an event |
| get_lesson | Get a specific lesson |
| create_lesson | Create a new lesson |
| update_lesson | Update a lesson |
| add_lesson_to_event | Add a lesson to an event |
| remove_lesson_from_event | Remove a lesson from an event |
| list_course_tasks | List course tasks for a lesson |
| get_course_task | Get a specific course task |
| create_course_task | Create a new course task |
| update_course_task | Update a course task |
Resources
| Resource | URI | Description |
| ------------ | -------------------------- | ------------------------------------------------------- |
| OpenAPI Spec | workshops://openapi-spec | The full OpenAPI specification for the workshops.de API |
Development
npm install
npm run build # Production build
npm run dev # Watch mode
npm start # stdio server
npm run start:http # HTTP server (port 3000)