IT-Schulungen.com MCP
A public, read-only Model Context Protocol server that allows AI assistants to search the IT-Schulungen.com seminar catalog. It enables users to find courses, view content and pricing, check schedules and locations, and identify appropriate skill levels for IT training topics across Germany, Austria, and Switzerland.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://webmcp.it-schulungen.com/mcpWhat you can do with it
- Find IT seminars by topic or natural language query
- View course content, prerequisites, and pricing details
- Check training dates and locations in DACH region
- Identify beginner, intermediate, or expert level courses
Source and maintenance
Protocol and capabilities
- Server
- IT-Schulungen.com MCP 0.1.0
- MCP protocol
- 2025-06-18
- Tools
- 7 advertised
- Resources
- 3 advertised
- Resource templates
- 0 advertised
- Prompts
- Not advertised
{
"tools": {},
"resources": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
7 advertised
ping — Ping the server
Checks that this MCP server is reachable and reports its version. Use this only to diagnose connection problems. It returns no course data.
{
"type": "object",
"properties": {}
}{
"type": "object",
"required": [
"status",
"server",
"version",
"time"
],
"properties": {
"time": {
"type": "string",
"format": "date-time",
"description": "Server time, UTC, ISO 8601"
},
"server": {
"type": "string",
"description": "Server name"
},
"status": {
"type": "string",
"const": "ok"
},
"version": {
"type": "string",
"description": "Server version"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}seminars_search — Search seminars
Finds seminars in the IT-Schulungen.com catalogue. Use this first when a topic is known but the seminar identifier is not. The search is semantic and covers the whole seminar text, so describe the goal in the customer's own words -- "wie sichere ich unsere Container-Umgebung ab" finds Docker and Kubernetes security seminars that share no word with the question. A keyword list works worse than a sentence. Results come back by relevance. Two operators exist: a phrase in double quotes, and a term prefixed with a minus sign to exclude it. Either one turns the search back into a keyword match, so use them only to correct a search that went wide. Each record carries `topics`, the subjects the seminar is tagged with -- use them to say why a seminar fits and to tell close candidates apart. Each record also carries `prices`, one per delivery form: the amount and what it is per, nothing more. What is included and what costs extra -- an exam voucher, catering on site -- comes only from `seminar_get`, so call it before stating what a seminar costs in total; until then say "from". All amounts are net, plus VAT. When the delivery form is not known, lead with the open seminar, priced per participant; name the in-house price per day only when a team or company is asking or there is no open seminar, and coaching or a subscription only when asked. A price without an amount is price on request, and so is a seminar without `prices`. Returns a compact record per seminar, each with `url`: the page on IT-Schulungen.com. Enquiries and bookings do not run through this server, so that link is where a customer has to go -- name it whenever a seminar is recommended, exactly as returned: its query string is part of the link. Call `seminar_get` with a `guid` from this list for the agenda and prerequisites, and `seminar_dates` for scheduled dates.
{
"type": "object",
"required": [
"query"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"description": "Page number, starting at 1"
},
"limit": {
"type": "integer",
"default": 20,
"description": "Records per page, 1-50, default 20"
},
"query": {
"type": "string",
"description": "What the seminar should be about, at least 2 characters"
},
"topic": {
"type": [
"null",
"string"
],
"default": null,
"description": "Exact topic name or identifier from `seminar_topics`"
},
"language": {
"type": [
"null",
"string"
],
"default": null,
"description": "Two-letter language code (ISO 639-1), e.g. \"de\" or \"en\""
},
"difficulty": {
"type": [
"null",
"string"
],
"default": null,
"description": "Difficulty identifier from `seminar_difficulties`"
}
}
}{
"type": "object",
"required": [
"items",
"returned",
"page",
"has_more"
],
"properties": {
"note": {
"type": "string"
},
"page": {
"type": "integer"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"guid"
],
"properties": {
"url": {
"type": "string"
},
"guid": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"type": {
"type": [
"string",
"null"
]
},
"prices": {
"type": "array",
"items": {
"type": "object"
}
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
},
"seminar": {
"type": "object",
"properties": {
"duration": {
"type": [
"number",
"null"
]
},
"duration_unit": {
"type": [
"string",
"null"
]
}
}
},
"language": {
"type": [
"string",
"null"
]
},
"product_difficulty_guid": {
"type": [
"string",
"null"
]
}
}
}
},
"total": {
"type": "integer"
},
"has_more": {
"type": "boolean"
},
"returned": {
"type": "integer"
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}seminar_get — Get a seminar
Returns one seminar with its description, agenda and prerequisites. The texts are markdown. Prices come along in full, one per delivery form with what is included and what costs extra -- the only place that says so; `seminars_search` carries the amounts alone. `url` is the seminar's page on IT-Schulungen.com and the place to send a customer: this server answers questions, it does not take enquiries or bookings. Hand it on exactly as returned, query string included. If the field is missing, fall back to the portal's own search rather than guessing an address. A seminar carries one price per delivery form, not one price: an open seminar is priced per participant, an in-house seminar and a coaching per day. All amounts are net, plus VAT. Always name which form a price belongs to, and read `calculation_unit` before stating an amount. `offer_type` says how far the price commits: `not-binding-inquiry` is a starting point for an enquiry, not a quote.
{
"type": "object",
"required": [
"guid"
],
"properties": {
"guid": {
"type": "string",
"description": "Seminar identifier, e.g. \"NE-PRDCT-1f2dbdfa-d740-47ac-9921-9f5ac767cc86\""
}
}
}{
"type": "object",
"required": [
"guid"
],
"properties": {
"url": {
"type": "string"
},
"guid": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"type": {
"type": [
"string",
"null"
]
},
"_note": {
"type": "string"
},
"prices": {
"type": "array",
"items": {
"type": "object"
}
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
},
"seminar": {
"type": "object",
"properties": {
"duration": {
"type": [
"number",
"null"
]
},
"duration_unit": {
"type": [
"string",
"null"
]
}
}
},
"language": {
"type": [
"string",
"null"
]
},
"product_difficulty_guid": {
"type": [
"string",
"null"
]
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}seminar_dates — Get seminar dates
Lists the scheduled dates of a seminar, soonest first. Past dates are never returned. Without `from` the window starts today. `from` and `to` are calendar days in German time, and both are included. An empty result means nothing is currently scheduled -- it does not mean the seminar does not exist. Each date carries the cities it runs in; a city of type `virtual` is an online delivery, `place` is on site. Dates that are cancelled, postponed or already over are never returned. `status` is what to lead with when suggesting a date: guaranteed this seminar runs, whatever else happens -- recommend these first, and say so, because it is the customer's strongest reason to pick one date over another planned scheduled and open for enrolment, not yet confirmed to run `direct_booking` appears only on dates that can be booked straight through the portal, with `direct_booking_until` as the last day for it. **Its absence says nothing about availability.** Every date listed here can be enquired about and enrolled in; direct booking is a shortcut, not a condition. Never tell a customer a date is unavailable because this field is missing. `seminar` names the course the dates belong to -- name, duration and its `url` -- so the list can be presented under that heading. It is left out only when the lookup failed; the dates still stand. `begin` and `finish`, per date and per day in `days`, are UTC. The seminars run in local time (Europe/Berlin; Vienna and Zurich are the same zone): convert before quoting a time, so 07:00Z is 09:00 in summer and 08:00 in winter, never "7 Uhr".
{
"type": "object",
"required": [
"seminar_guid"
],
"properties": {
"to": {
"type": [
"null",
"string"
],
"default": null,
"description": "Latest start date, \"YYYY-MM-DD\", included"
},
"city": {
"type": [
"null",
"string"
],
"default": null,
"description": "Place name such as \"München\", or \"online\" for virtual delivery"
},
"from": {
"type": [
"null",
"string"
],
"default": null,
"description": "Earliest start date, \"YYYY-MM-DD\". Defaults to today"
},
"page": {
"type": "integer",
"default": 1,
"description": "Page number, starting at 1"
},
"limit": {
"type": "integer",
"default": 20,
"description": "Records per page, 1-50, default 20"
},
"seminar_guid": {
"type": "string",
"description": "Seminar identifier from `seminars_search`"
}
}
}{
"type": "object",
"required": [
"items",
"returned",
"page",
"has_more"
],
"properties": {
"note": {
"type": "string"
},
"page": {
"type": "integer"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"guid",
"begin",
"finish",
"status"
],
"properties": {
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"begin": {
"type": "string",
"format": "date-time",
"description": "UTC"
},
"finish": {
"type": "string",
"format": "date-time",
"description": "UTC"
}
}
}
},
"guid": {
"type": "string"
},
"begin": {
"type": "string",
"format": "date-time",
"description": "UTC"
},
"cities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"guid": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"enum": [
"place",
"virtual"
]
}
}
}
},
"finish": {
"type": "string",
"format": "date-time",
"description": "UTC"
},
"status": {
"enum": [
"guaranteed",
"planned"
]
},
"product_guid": {
"type": "string"
},
"direct_booking": {
"type": "boolean"
},
"direct_booking_until": {
"type": "string"
}
}
}
},
"total": {
"type": "integer"
},
"seminar": {
"type": "object",
"required": [
"guid"
],
"properties": {
"url": {
"type": "string"
},
"guid": {
"type": "string"
},
"name": {
"type": "string"
},
"duration": {
"type": "number"
},
"duration_unit": {
"type": "string"
}
}
},
"has_more": {
"type": "boolean"
},
"returned": {
"type": "integer"
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}seminar_topics — Search topics
Searches the topic vocabulary seminars are tagged with. Use this to turn a customer's wording into a filter value for `seminars_search`, and to check whether a product or technology is covered at all. Aliases are searched too, so "K8s" finds "Kubernetes" and "AKS" finds "Azure Kubernetes Services". This is a filter axis, not a catalogue: a hit means the topic exists, not that a seminar on it does. `seminars_search` answers that.
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"default": 1,
"description": "Page number, starting at 1"
},
"type": {
"type": [
"null",
"string"
],
"default": null,
"description": "One of manufacturer, topic, technology, software, software_version, audience"
},
"limit": {
"type": "integer",
"default": 20,
"description": "Records per page, 1-50, default 20"
},
"query": {
"type": [
"null",
"string"
],
"default": null,
"description": "Part of a topic name or alias, e.g. \"Kubernetes\""
}
}
}{
"type": "object",
"required": [
"items",
"returned",
"page",
"has_more"
],
"properties": {
"note": {
"type": "string"
},
"page": {
"type": "integer"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"guid",
"name"
],
"properties": {
"guid": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": [
"string",
"null"
]
},
"alias": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
}
}
}
},
"total": {
"type": "integer"
},
"has_more": {
"type": "boolean"
},
"returned": {
"type": "integer"
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}seminar_locations — List locations
Lists the places seminars are held at. The catalogue runs in a fixed set of cities, plus a virtual classroom for online delivery. Use this to answer "where do you teach this?" and to check a place before passing it to `seminar_dates` -- a city that is not in this list has no dates, however the customer spells it.
{
"type": "object",
"properties": {
"query": {
"type": [
"null",
"string"
],
"default": null,
"description": "Part of a place name, e.g. \"Frank\""
}
}
}{
"type": "object",
"required": [
"items",
"returned",
"page",
"has_more"
],
"properties": {
"note": {
"type": "string"
},
"page": {
"type": "integer"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"guid",
"name"
],
"properties": {
"guid": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": [
"string",
"null"
]
},
"region": {
"type": [
"string",
"null"
]
}
}
}
},
"total": {
"type": "integer"
},
"has_more": {
"type": "boolean"
},
"returned": {
"type": "integer"
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}seminar_difficulties — List difficulty levels
Lists the difficulty levels a seminar can be filtered by. Call this before passing `difficulty` to `seminars_search`; the filter takes an identifier, not a label.
{
"type": "object",
"properties": {}
}{
"type": "object",
"required": [
"items",
"returned",
"page",
"has_more"
],
"properties": {
"note": {
"type": "string"
},
"page": {
"type": "integer"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"guid",
"name"
],
"properties": {
"guid": {
"type": "string"
},
"name": {
"type": "string"
},
"sort_order": {
"type": [
"integer",
"null"
]
}
}
}
},
"total": {
"type": "integer"
},
"has_more": {
"type": "boolean"
},
"returned": {
"type": "integer"
}
}
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
3 advertised
seminar-search-view — Seminar search results
Seminar search results as cards.
ui://seminars/6a09c318/search.htmlseminar-dates-view — Seminar dates
Scheduled seminar dates as a table.
ui://seminars/6a09c318/dates.htmlseminar-detail-view — Seminar details
One seminar: overview, prices with their delivery form and unit, texts.
ui://seminars/6a09c318/seminar.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1314 ms
- 95th percentile latency
- 1314 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1314 ms · metadata changed · 7 tool(s), 3 resource(s), 0 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http it-schulungen-com-mcp https://webmcp.it-schulungen.com/mcpCodex
codex mcp add it-schulungen-com-mcp --url https://webmcp.it-schulungen.com/mcpCursor
{
"mcpServers": {
"it-schulungen-com-mcp": {
"url": "https://webmcp.it-schulungen.com/mcp"
}
}
}Cline
{
"mcpServers": {
"it-schulungen-com-mcp": {
"type": "streamableHttp",
"url": "https://webmcp.it-schulungen.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"it-schulungen-com-mcp": {
"type": "http",
"url": "https://webmcp.it-schulungen.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http it-schulungen-com-mcp https://webmcp.it-schulungen.com/mcpClaude Desktop
{
"mcpServers": {
"it-schulungen-com-mcp": {
"url": "https://webmcp.it-schulungen.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"it-schulungen-com-mcp": {
"serverUrl": "https://webmcp.it-schulungen.com/mcp"
}
}
}Let your agent find its tools
Find servers like IT-Schulungen.com MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run IT-Schulungen.com MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.