IT-Schulungen.com
Seminarkatalog von IT-Schulungen.com: über 3.400 IT-Seminare, Termine, Orte und Preise durchsuchen.
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"seminare": {
"url": "https://webmcp.it-schulungen.com/mcp"
}
}
}遠端端點
https://webmcp.it-schulungen.com/mcpstreamable-http它能做什麼
工具清單
工具(7)
🟢ping
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",
"properties": {
"status": {
"type": "string",
"const": "ok"
},
"server": {
"type": "string",
"description": "Server name"
},
"version": {
"type": "string",
"description": "Server version"
},
"time": {
"type": "string",
"format": "date-time",
"description": "Server time, UTC, ISO 8601"
}
},
"required": [
"status",
"server",
"version",
"time"
],
"additionalProperties": false
}🟢seminars_search(query, language, difficulty, topic, limit, ...)
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",
"properties": {
"query": {
"type": "string",
"description": "What the seminar should be about, at least 2 characters"
},
"language": {
"type": [
"null",
"string"
],
"description": "Two-letter language code (ISO 639-1), e.g. \"de\" or \"en\"",
"default": null
},
"difficulty": {
"type": [
"null",
"string"
],
"description": "Difficulty identifier from `seminar_difficulties`",
"default": null
},
"topic": {
"type": [
"null",
"string"
],
"description": "Exact topic name or identifier from `seminar_topics`",
"default": null
},
"limit": {
"type": "integer",
"description": "Records per page, 1-50, default 20",
"default": 20
},
"page": {
"type": "integer",
"description": "Page number, starting at 1",
"default": 1
}
},
"required": [
"query"
]
}輸出結構描述
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"guid": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"type": {
"type": [
"string",
"null"
]
},
"language": {
"type": [
"string",
"null"
]
},
"product_difficulty_guid": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
},
"prices": {
"type": "array",
"items": {
"type": "object"
}
},
"seminar": {
"type": "object",
"properties": {
"duration": {
"type": [
"number",
"null"
]
},
"duration_unit": {
"type": [
"string",
"null"
]
}
}
}
},
"required": [
"guid"
]
}
},
"returned": {
"type": "integer"
},
"total": {
"type": "integer"
},
"page": {
"type": "integer"
},
"has_more": {
"type": "boolean"
},
"note": {
"type": "string"
}
},
"required": [
"items",
"returned",
"page",
"has_more"
]
}🟢seminar_get(guid)
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",
"properties": {
"guid": {
"type": "string",
"description": "Seminar identifier, e.g. \"NE-PRDCT-1f2dbdfa-d740-47ac-9921-9f5ac767cc86\""
}
},
"required": [
"guid"
]
}輸出結構描述
{
"type": "object",
"properties": {
"guid": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"type": {
"type": [
"string",
"null"
]
},
"language": {
"type": [
"string",
"null"
]
},
"product_difficulty_guid": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
},
"topics": {
"type": "array",
"items": {
"type": "string"
}
},
"prices": {
"type": "array",
"items": {
"type": "object"
}
},
"seminar": {
"type": "object",
"properties": {
"duration": {
"type": [
"number",
"null"
]
},
"duration_unit": {
"type": [
"string",
"null"
]
}
}
},
"_note": {
"type": "string"
}
},
"required": [
"guid"
]
}🟢seminar_dates(seminar_guid, from, to, city, limit, ...)
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",
"properties": {
"seminar_guid": {
"type": "string",
"description": "Seminar identifier from `seminars_search`"
},
"from": {
"type": [
"null",
"string"
],
"description": "Earliest start date, \"YYYY-MM-DD\". Defaults to today",
"default": null
},
"to": {
"type": [
"null",
"string"
],
"description": "Latest start date, \"YYYY-MM-DD\", included",
"default": null
},
"city": {
"type": [
"null",
"string"
],
"description": "Place name such as \"München\", or \"online\" for virtual delivery",
"default": null
},
"limit": {
"type": "integer",
"description": "Records per page, 1-50, default 20",
"default": 20
},
"page": {
"type": "integer",
"description": "Page number, starting at 1",
"default": 1
}
},
"required": [
"seminar_guid"
]
}輸出結構描述
{
"type": "object",
"properties": {
"seminar": {
"type": "object",
"properties": {
"guid": {
"type": "string"
},
"name": {
"type": "string"
},
"duration": {
"type": "number"
},
"duration_unit": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"guid"
]
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"guid": {
"type": "string"
},
"product_guid": {
"type": "string"
},
"begin": {
"type": "string",
"format": "date-time",
"description": "UTC"
},
"finish": {
"type": "string",
"format": "date-time",
"description": "UTC"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"begin": {
"type": "string",
"format": "date-time",
"description": "UTC"
},
"finish": {
"type": "string",
"format": "date-time",
"description": "UTC"
}
}
}
},
"cities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"guid": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"enum": [
"place",
"virtual"
]
}
}
}
},
"status": {
"enum": [
"guaranteed",
"planned"
]
},
"direct_booking": {
"type": "boolean"
},
"direct_booking_until": {
"type": "string"
}
},
"required": [
"guid",
"begin",
"finish",
"status"
]
}
},
"returned": {
"type": "integer"
},
"total": {
"type": "integer"
},
"page": {
"type": "integer"
},
"has_more": {
"type": "boolean"
},
"note": {
"type": "string"
}
},
"required": [
"items",
"returned",
"page",
"has_more"
]
}🟢seminar_topics(query, type, limit, page)
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": {
"query": {
"type": [
"null",
"string"
],
"description": "Part of a topic name or alias, e.g. \"Kubernetes\"",
"default": null
},
"type": {
"type": [
"null",
"string"
],
"description": "One of manufacturer, topic, technology, software, software_version, audience",
"default": null
},
"limit": {
"type": "integer",
"description": "Records per page, 1-50, default 20",
"default": 20
},
"page": {
"type": "integer",
"description": "Page number, starting at 1",
"default": 1
}
}
}輸出結構描述
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"guid": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": [
"string",
"null"
]
},
"alias": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
}
},
"required": [
"guid",
"name"
]
}
},
"returned": {
"type": "integer"
},
"total": {
"type": "integer"
},
"page": {
"type": "integer"
},
"has_more": {
"type": "boolean"
},
"note": {
"type": "string"
}
},
"required": [
"items",
"returned",
"page",
"has_more"
]
}🟢seminar_locations(query)
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"
],
"description": "Part of a place name, e.g. \"Frank\"",
"default": null
}
}
}輸出結構描述
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"guid": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": [
"string",
"null"
]
},
"region": {
"type": [
"string",
"null"
]
}
},
"required": [
"guid",
"name"
]
}
},
"returned": {
"type": "integer"
},
"total": {
"type": "integer"
},
"page": {
"type": "integer"
},
"has_more": {
"type": "boolean"
},
"note": {
"type": "string"
}
},
"required": [
"items",
"returned",
"page",
"has_more"
]
}🟢seminar_difficulties
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",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"guid": {
"type": "string"
},
"name": {
"type": "string"
},
"sort_order": {
"type": [
"integer",
"null"
]
}
},
"required": [
"guid",
"name"
]
}
},
"returned": {
"type": "integer"
},
"total": {
"type": "integer"
},
"page": {
"type": "integer"
},
"has_more": {
"type": "boolean"
},
"note": {
"type": "string"
}
},
"required": [
"items",
"returned",
"page",
"has_more"
]
}社群
證據