Skip to main content
Glama
tutor-sicurezza

mcp-italian-workplace-safety

mcp-italian-workplace-safety

License: MIT MCP Italian workplace safety Part of tutor-sicurezza ecosystem

MCP server che espone i dati di 123Formazione sulla sicurezza sul lavoro italiana (D.Lgs 81/08) a qualsiasi AI assistant compatibile Model Context Protocol — Claude Desktop, Cursor, Cline, Windsurf, Continue, e altri.

Chiedi al tuo assistente AI cose tipo:

"Quali corsi sicurezza sono obbligatori per il codice ATECO 41 (costruzioni di edifici)?"

"Ogni quanto va aggiornato il corso preposto secondo l'Accordo Stato-Regioni 78/CSR del 17 aprile 2025?"

"Cerca nel glossario D.Lgs 81/08 il termine RSPP e dammi la definizione + normativa di riferimento."

"Mostrami tutte le sanzioni dell'art. 55 D.Lgs 81/08 per omessa formazione."

L'assistente userà gli strumenti MCP per chiamare l'API pubblica gratuita di 123formazione.com/api/public e restituire dati strutturati, citabili e aggiornati.


Install

Quick install (npx — no global install)

// claude_desktop_config.json (Claude Desktop) o equivalente
{
  "mcpServers": {
    "italian-workplace-safety": {
      "command": "npx",
      "args": ["-y", "github:tutor-sicurezza/mcp-italian-workplace-safety"]
    }
  }
}

Local install

git clone https://github.com/tutor-sicurezza/mcp-italian-workplace-safety.git
cd mcp-italian-workplace-safety
npm install
npm run build

Poi nel client MCP punta al binario dist/index.js:

{
  "mcpServers": {
    "italian-workplace-safety": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-italian-workplace-safety/dist/index.js"]
    }
  }
}

Related MCP server: Consulente Legale

Client-specific instructions

Claude Desktop

  1. Apri il file di configurazione:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

  2. Aggiungi il blocco italian-workplace-safety come sopra.

  3. Riavvia Claude Desktop. Vedrai i tool get_ateco, search_ateco, get_corsi_obbligatori, get_scadenze_formazione, search_glossario, get_normativa, search_normativa, suggest disponibili nelle conversazioni.

Cursor

  1. Apri ~/.cursor/mcp.json (crea il file se non esiste).

  2. Aggiungi lo stesso JSON dell'esempio sopra.

  3. Riavvia Cursor.

Cline (VS Code extension)

  1. Apri le settings VS Code → cerca "Cline MCP".

  2. Aggiungi il server italian-workplace-safety con il blocco JSON.

Windsurf

  1. Apri ~/.codeium/windsurf/mcp_config.json.

  2. Aggiungi il blocco MCP server come sopra.

Continue (VS Code/JetBrains)

  1. Apri ~/.continue/config.json.

  2. Aggiungi nella sezione mcpServers.


Tools

Tool

Descrizione

get_ateco(codice)

Dettagli ATECO 2007 (codice o slug) con classificazione rischio e corsi obbligatori

search_ateco(query)

Ricerca fuzzy ATECO per nome settore

get_corsi_obbligatori(ateco)

Lista corsi sicurezza obbligatori per settore ATECO

get_scadenze_formazione(corso?)

Periodicità rinnovo formazione (D.Lgs 81/08 + Accordi SR)

search_glossario(termine, categoria?)

Glossario 200+ termini D.Lgs 81/08

get_normativa(slug?)

Index normative italiane SSL

search_normativa(query)

Ricerca fuzzy normative

suggest(query)

Autocomplete combinato corsi + glossario

Resources

URI

Descrizione

123formazione://ateco

Dataset ATECO completo

123formazione://scadenze

Scadenze formazione

123formazione://glossario

Glossario completo

123formazione://normativa

Normative complete

123formazione://llms.txt

Site map per LLM (llmstxt.org)

123formazione://openapi

OpenAPI 3.1 spec


Data source

Tutti i dati sono serviti dall'API pubblica gratuita di 123Formazione — REST + OpenAPI 3.1 + DCAT-AP-IT, licenza CC-BY 4.0.

L'API espone:

  • ATECO 2007 + classificazione rischio (Accordo Stato-Regioni 21/12/2011)

  • Scadenze formazione (D.Lgs 81/08 + Accordi 2011/2012/2016 + Rep. 78/CSR 2025)

  • Glossario 200+ termini

  • Index normative (D.Lgs 81/08, Accordi SR, DM 388/2003, DM 02/09/2021, DPR 177/2011, GDPR, Reg. CE 852/2004, CEI 11-27)

Environment variables (optional)

  • MCP_123F_BASE_URL — override base URL (default https://123formazione.com)

English summary

This MCP server exposes Italian workplace-safety data (D.Lgs 81/08 — Italy's main occupational safety code) to any MCP-compatible AI assistant. It uses the free public REST API of 123formazione.com and provides 8 tools and 6 resources for querying ATECO economic sectors with risk classification, required training courses, renewal schedules, glossary terms, and regulations.

Useful for: legal-tech tools, compliance assistants, HR / RSPP (workplace safety officers) chatbots, content generation for Italian SSL (Salute e Sicurezza sul Lavoro) topics.


Open dataset / tooling ecosystem for Italian workplace safety (D.Lgs 81/08) maintained by @tutor-sicurezza:

Datasets

Libraries / tools

Online services

All resources are MIT or CC-BY licensed and maintained as production-quality open data.

License

MIT © 2026 tutor-sicurezza / 123Formazione

Data served from the API is licensed under CC-BY 4.0 with attribution 123Formazione — https://123formazione.com.

Available Tools

8 tools
get_atecoA

Get a single ATECO 2007 economic sector entry by code (e.g. '41') or slug (e.g. '41-costruzioni-edifici'). Returns sector name, risk classification (basso/medio/alto), required courses per D.Lgs 81/08 and Accordo Stato-Regioni 21/12/2011. Use this when the user mentions an Italian business sector or activity.

ParametersJSON Schema
NameRequiredDescriptionDefault
codiceYesATECO code (e.g. '41') or slug (e.g. '41-costruzioni-edifici')

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that it returns sector name, risk classification, and required courses. No annotations provided, so description carries the full burden. It does not cover error behavior or authentication needs, but for a simple lookup it is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: input specification, output description, and usage hint. No unnecessary words, well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and lack of output schema, the description adequately covers what the user needs to know. No mention of geographic applicability (Italy), but it's implied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter, and the description repeats examples already present in the schema. Adds no new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Get a single ATECO 2007 economic sector entry by code or slug', specifying the resource and action. Differentiates from sibling search_ateco by explicitly targeting single entry retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear usage hint: 'Use this when the user mentions an Italian business sector or activity.' Lacks explicit exclusion or alternative suggestion, but context implies search_ateco for multiple results.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_corsi_obbligatoriA

Get the list of mandatory workplace-safety training courses for a given ATECO sector. Includes course name, duration, normative reference, and refresh periodicity.

ParametersJSON Schema
NameRequiredDescriptionDefault
atecoYesATECO code or slug

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It states the tool returns a list with specific fields, implying a read-only operation, but does not disclose permission requirements, rate limits, or side effects. It is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the main purpose and includes key output details. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description adequately explains the return fields. However, it omits potential error conditions or pagination details. For a simple list tool, it is mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for the single parameter 'ateco' with description 'ATECO code or slug'. The description adds only the context of 'given ATECO sector', which is marginal beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies exactly what the tool does: 'Get the list of mandatory workplace-safety training courses for a given ATECO sector.' It lists included fields (course name, duration, normative reference, refresh periodicity), distinguishing it from sibling tools like get_normativa or search_normativa.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states the context for use: retrieving mandatory courses for an ATECO sector. However, it does not explicitly mention when not to use it or suggest alternatives, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_normativaA

Get an Italian workplace-safety regulation by slug, or the full index of regulations if no slug provided. Includes D.Lgs 81/08, Accordi Stato-Regioni, DM applicativi, EU regulations.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoOptional regulation slug. Omit for index.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the dual behavior (single vs. index) and the scope of regulations, but does not mention side effects, permissions, or rate limits. Adequate but could be more thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no wasted words. It is front-loaded and efficient, presenting all necessary information succinctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description covers the functionality well. It could be improved by hinting at the structure of the index, but is generally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter 'slug'. The description adds value by clarifying the dual usage (omit for index) and listing included regulation types, going beyond the schema's minimal description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific verb 'Get' and resource 'Italian workplace-safety regulation', and clearly distinguishes two modes: by slug or full index. It also lists included regulation types, differentiating it from sibling tools like search_normativa.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (with a slug for a specific regulation, without for the index), but does not explicitly mention when not to use it or suggest alternatives like search_normativa for fuzzy searches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scadenze_formazioneA

Get the renewal schedule for a specific Italian workplace-safety training course, or all schedules if no course is specified. Includes initial duration (hours), refresh interval (months), required modalities, and normative reference (D.Lgs 81/08, Accordi Stato-Regioni).

ParametersJSON Schema
NameRequiredDescriptionDefault
corsoNoOptional course slug (e.g. 'lavoratori-alto', 'preposto', 'rspp-modulo-a', 'antincendio-l2'). Omit to get all.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries the burden. It describes the tool as a read operation that returns structured data about schedules. Since it's a read-only tool with no side effects, the description is sufficient without mentioning auth or destructive actions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the main action and clear structure. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one optional parameter, no output schema, and no annotations, the description is complete. It explains what the tool returns, the effect of omitting the parameter, and the normative references included.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description of the corso parameter. The description adds examples and explains that omitting it returns all schedules, providing meaningful context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets renewal schedules for Italian workplace-safety training courses, with or without a course specified, and lists included fields (duration, interval, modalities, normative reference). It distinguishes from sibling tools by being specifically about schedules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states when to use (to get a renewal schedule or all) and that omitting the corso parameter returns all. While it doesn't explicitly discuss when not to use or list alternatives, the purpose is straightforward and the single-parameter design makes usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_atecoA

Fuzzy search ATECO 2007 sectors by name fragment (e.g. "costruzioni", "ristorazione"). Returns up to 20 matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query (sector name fragment)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description carries full burden. Discloses fuzzy search behavior and result limit (up to 20 matches). No mention of side effects or authentication, but acceptable for a read-only search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, 17 words, includes all key elements: action (fuzzy search), target (ATECO 2007), input (name fragment), examples, and output limit. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers essential aspects for a simple search tool: what it searches, how it searches (fuzzy, by fragment), and result cap. No output schema exists, so missing details about result structure; but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage for the single parameter 'query' is 100%. Description repeats the parameter's purpose ('name fragment') but adds no new semantic detail beyond the schema's description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Fuzzy search ATECO 2007 sectors by name fragment', specifying the target resource (ATECO 2007 sectors) and the action (fuzzy search). Distinguishes from sibling tools like 'get_ateco' which presumably retrieves by exact code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides examples ('costruzioni', 'ristorazione') and mentions result limit (up to 20 matches). Implicitly contrasts with siblings, but no explicit when-not-to-use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_glossarioA

Search the Italian D.Lgs 81/08 glossary (200+ legal/technical terms) by term or definition fragment. Returns matched terms with definitions and normative references.

ParametersJSON Schema
NameRequiredDescriptionDefault
termineYesTerm or fragment to search
categoriaNoOptional category filter ('concetti', 'documenti', 'figure', 'normativa', 'rischi')

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes the input and output behavior succinctly, but does not explicitly state that the tool is read-only, idempotent, or free of side effects. For a search tool, this is adequate but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the action and then the result. Every word adds value, with no fluff. It is efficiently structured for agent consumption.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with two parameters and no output schema, the description effectively covers the purpose, input, and output. It mentions the glossary size and categories of terms. It could mention result limits or pagination, but overall it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all parameters with descriptions. The tool description adds context about searching by 'term or definition fragment' but does not provide additional semantics beyond the schema. With 100% schema coverage, the baseline is 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: searching an Italian glossary of legal/technical terms by term or definition fragment. It specifies the domain (D.Lgs 81/08) and scope (200+ terms), making it distinct from sibling tools like search_normativa or search_ateco.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates what the tool does and what it returns, but does not explicitly state when to use it vs. alternatives. However, the context of 'glossary' differentiates it from other search tools, and the intended use case (searching a specific glossary) is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_normativaA

Fuzzy search Italian workplace-safety regulations by name, scope, or article reference.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral disclosure. It only states 'fuzzy search' without elaborating on matching behavior, result limits, sorting, or error handling. This is insufficient for a mutation-free tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single 11-word sentence that is front-loaded with the action and resource, containing no fluff. It is appropriately concise for a simple search tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description covers the core functionality adequately. It could mention pagination or result format, but for a fuzzy search with minimal inputs, it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single 'query' parameter described as 'Search query'. The description adds value by specifying what can be searched (name, scope, article reference), enhancing semantic understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it performs a fuzzy search on Italian workplace-safety regulations, specifying the searchable attributes (name, scope, article reference). It distinguishes from siblings like 'get_normativa' (exact retrieval) and 'search_ateco' (different domain).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for approximate matching but does not provide explicit when-to-use or when-not-to-use guidance. No alternatives or exclusions are mentioned, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggestA

OpenSearch-style autocomplete combining courses + glossary terms. Useful for autocomplete UI in client integrations.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesPrefix or partial term

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It mentions 'OpenSearch-style autocomplete' implying prefix matching and suggestion behavior, but omits details like rate limits, result limits, or whether it is a read-only operation. Adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at two sentences, front-loading the core purpose and use case. It avoids unnecessary details, though it could be slightly more structured with bullet points for key aspects.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter autocomplete tool, the description covers the main purpose and usage context. However, it lacks details such as maximum number of suggestions, sorting order, case sensitivity, and what happens with empty or invalid queries. The absence of an output schema is acceptable but the description could compensate more.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes the 'query' parameter as 'Prefix or partial term', achieving 100% coverage. The tool description adds context by specifying 'OpenSearch-style autocomplete', reinforcing the parameter's purpose and behavior. This adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides OpenSearch-style autocomplete combining courses and glossary terms, which is a specific and identifiable purpose. It distinguishes itself from sibling search tools by focusing on autocomplete rather than full-text search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions it is useful for autocomplete UI in client integrations, giving a clear use case. However, it does not explicitly state when not to use it or differentiate from alternative tools like search_glossario or search_normativa, leaving some ambiguity for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv1.0.0
    • First observedget_ateco
    • First observedget_corsi_obbligatori
    • First observedget_normativa
    • First observedget_scadenze_formazione
    • First observedsearch_ateco
    • First observedsearch_glossario
    • First observedsearch_normativa
    • First observedsuggest

TDQS

A4.2/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct entity or action: sector lookup vs search, courses vs schedules, regulations vs glossary. No two tools perform overlapping functions.

Naming Consistency5/5

All tool names follow a consistent verb_object pattern using snake_case (e.g., get_ateco, search_normativa). No mixing of conventions.

Tool Count5/5

8 tools are well-scoped for an Italian workplace safety information server, covering all major areas without redundancy or insufficiency.

Completeness5/5

The tool set covers retrieval of sectors, courses, regulations, schedules, and glossary, plus autocomplete. No obvious gaps for an information-only server.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for US workplace-safety standards (OSHA 29 CFR parts 1900–1990). Enables querying safety regulations via natural language through the Pipeworx gateway.
    1 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server for GlossaryAI, an AI assistant specialized in legal and regulatory vocabularies. Provides tools for vector search, planning, legal link resolution, and concept comparison using Qdrant and an OpenAI-compatible LLM.
    -