Skip to main content
Glama
scampion

eurostat-mcp

by scampion

Server Quality Checklist

58%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.2.0

  • Disambiguation5/5

    Each tool has a clearly distinct purpose: search_indicators for finding indicators, list_zones for geographic zones, get_indicators for cross-source indicator values, search_datasets for dataset catalog search, get_structure for dataset dimensions, list_codes for browsing dimension codes, and query_data for raw dataset queries. No two tools overlap in function, and the descriptions explicitly guide the intended workflow.

    Naming Consistency5/5

    All tools follow a consistent verb_noun snake_case pattern: search_indicators, list_zones, get_indicators, search_datasets, get_structure, list_codes, query_data. The verbs (search, list, get, query) and nouns are distinct and meaningful, with no mixed conventions or abbreviations.

    Tool Count5/5

    With 7 tools, the set is well-scoped for a Eurostat MCP server. It covers two clear workflows (indicator-based territorial analysis and raw dataset exploration) without excessive overlap or unnecessary additions. The count is ideal for the described functionality.

    Completeness5/5

    The tools cover the full lifecycle for both workflows: searching for indicators/datasets, exploring structure (zones, dimensions, codes), and retrieving data (indicators or raw queries). No obvious gaps exist; the separation between get_indicators and query_data is clearly explained, and helper tools (list_codes) fill potential needs.

  • Average 3.8/5 across 7 of 7 tools scored.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 35 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.

    If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.

    MCP servers without a LICENSE cannot be installed.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior3/5

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

    No annotations are provided (readOnlyHint, destructiveHint, etc.), so the description carries the disclosure burden. The verb 'list' implies a read-only operation, which is helpful, but there's no mention of external network behavior, potential rate limits, or whether results are cached—reasonable context for a tool that queries Eurostat data.

    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, with the key information front-loaded and a minimal working example. Every word earns its place.

    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?

    The tool has an output schema, so the return value is documented. The description covers the essentials for a simple listing tool. The main gap is that it doesn't mention edge cases, such as what happens for a dimension with many values or whether the result is paginated/limited, but the example is solid enough to prevent basic misuse.

    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 example `contains="fr"` indirectly clarifies the `contains` parameter, and using `"nama_10_gdp"` for `dataset` and `"geo"` for `dimension` gives meaning to all three params. However, the description doesn't explicitly say datasets are Eurostat datasets or that dimensions are named fields like 'geo', 'time', 'unit', so an agent must infer this from the example.

    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 identifies the operation: list codes of a dimension with optional substring filtering. The concrete example with "nama_10_gdp" and "geo" makes the tool's purpose immediately understandable, even without documentation of the sibling tools.

    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 usage context is implied through the dimension and filter semantics, and the example shows how to use it. However, there's no explicit guidance on when to choose this over alternatives like query_data or search_datasets, nor does it clarify what a dimension is in the Eurostat context.

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

  • Behavior3/5

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

    With no annotations, the description carries the burden of describing behavior. It does disclose the return fields (code, title, period) and signals that this is only a precursor to get_structure, but it does not mention limit behavior, pagination, or failure cases.

    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 short sentences front-load the purpose, state the returned fields, and give the required next step. There is no filler or redundancy.

    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?

    The description provides the essential purpose, return fields, and follow-up call, but it omits the meaning of limit and does not disambiguate from search_indicators. This is adequate for a simple search tool with an output schema but not fully complete.

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

    Parameters2/5

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

    Schema description coverage is 0%, and the description only clarifies that query is a full-text search term. The limit parameter is not explained anywhere, so the description does not compensate for the missing parameter documentation.

    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 opens with 'Recherche full-text dans le catalogue Eurostat (~7000 datasets)', giving a specific verb, resource, and scope. It also states what the tool returns, but it does not explicitly differentiate from the sibling search_indicators.

    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 gives clear workflow guidance by instructing the agent to call get_structure(code) before requesting data. The catalogue-focused scope makes the intended use case clear, but it does not explicitly state when not to use this tool or compare it with alternatives.

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

  • Behavior3/5

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

    No annotations are provided, so the description carries the burden. It discloses that the tool lists zones and that it can filter by parent or name, but it doesn't mention any side effects, performance implications, or limitations (e.g., pagination, rate limits). For a read-only listing tool, this is acceptable but not rich.

    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, with a clear first sentence and a helpful example. It front-loads the core purpose and then provides a usage example. The only minor issue is that the 'contains' parameter is not mentioned, but the overall structure is efficient.

    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?

    Given that there is an output schema (not shown but indicated), the description doesn't need to explain return values. However, it doesn't clarify the exact format of the 'level' values (e.g., are they strings like 'NUTS2'?) or the 'contains' parameter semantics. For a tool with 3 parameters and a clear workflow, it's adequate but could be more 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?

    Schema description coverage is 0%, so the description must compensate. It explains the 'level' parameter (NUTS0-3 or CITY) and the 'parent' parameter via the example, but it doesn't explain the 'contains' parameter at all. The description adds some meaning beyond the schema (which only has titles and defaults), but it's incomplete for one of the three parameters.

    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 lists zones for a given NUTS level or CITY, with optional parent or name filtering. It distinguishes itself from siblings like get_indicators and search_indicators by specifying its role in the workflow (feeding codes into get_indicators). However, it doesn't explicitly contrast with list_codes, which might be a similar listing tool.

    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 provides a concrete example (list_zones("NUTS2", parent="FR")) and states that the output codes feed into get_indicators, giving clear context for when to use this tool. It doesn't explicitly mention when not to use it or alternatives, but the example and workflow hint are strong guidance.

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

  • Behavior3/5

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

    With no annotations, the description carries the full burden. It discloses output format and the default time window, but does not mention side effects (e.g., read-only nature), error behavior, or performance considerations. While likely a read query, this is not stated explicitly, so the transparency is incomplete.

    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 concise (three sentences) and front-loaded with the core purpose. It efficiently conveys the output format, limits, default behavior, and parameter sourcing without repetition or filler.

    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?

    The description covers the tool's purpose, parameter sourcing, limits, and default time behavior. An output schema exists, so return structure is standard. It lacks explicit error handling or permission notes, but for a query tool, this is acceptable given the schema and described constraints.

    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 description coverage is 0%, so the description must add meaning. It explains that indicators come from search_indicators and zones from list_zones, which is critical for correct usage. It also clarifies the default behavior of time_from/time_to, adding value beyond the schema's minimal property titles.

    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 returns indicator values for zones in a tabular format, with one column per indicator. It specifies it crosses multiple sources into a single table, which differentiates it from single-source tools. However, it does not explicitly distinguish it from the sibling query_data tool, so it doesn't reach a 5.

    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 provides context on how to populate parameters (IDs from search_indicators, zone codes from list_zones) and notes the default behavior without time filters. It implies usage for multi-source aggregation but does not explicitly state when to use this tool versus alternatives like query_data, nor when not to use it.

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

  • Behavior3/5

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

    With no annotations present, the description carries the full behavioral burden. It does reveal an important trait: the response is capped at 400 cells. It does not explicitly state read-only behavior, stability, or any pagination/error behavior, though the verb 'Interroge' nudges the read-only interpretation. The 400-cell cap is real transparency, but more behavioral context would be needed for the description to be a strong standalone guide.

    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 stays compact, bundles the syntax rule, gives an instructive example, and finishes with a clear alternative in one sentence. The example adds token length but earns its place because it disambiguates the filter syntax. The 'Réponse plafonnée à 400 cellules' detail is appropriately placed near the example.

    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?

    An output schema is present, so the return value shape does not need to be described. The description provides the essential context: what the tool queries, how filters are written, what the cell limit is, and which sibling is better suited for a certain use case. A small gap is the lack of explicit advice to use search_datasets to find valid dataset codes, but the example partially fills that gap.

    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?

    Parameter descriptions in the schema are absent (0% coverage), so the description reasonably compensates: it defines the filters syntax (dim: 'A+B') and offers a complete example covering dataset, filters, and time_from. time_to is not directly explained, but the example makes the time-range convention easy to infer. This is meaningful added value beyond the raw 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 states a clear verb-resource pair: 'Interroge un dataset Eurostat au grain complet' (queries a Eurostat dataset at full grain). This conveys the core function distinctly from search-oriented siblings like search_datasets, and the example with nama_10_gdp reinforces the resource type. It could be a 5, but full differentiation from get_indicators is only implicit, not fully stated in the purpose line.

    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 gives a clear routing rule: for combining with environmental or infrastructure indicators, prefer get_indicators instead. This is a useful when/not-when signal relative to a sibling. It does not cover all comparison scenarios against other siblings, but the example and framing make the main intended call pattern understandable.

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

  • Behavior3/5

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

    No annotations are provided, so the description carries the burden. It does not disclose potential side effects, rate limits, or behaviors beyond search. The lack of annotation context means the description should explicitly state that this is a read-only search operation. It partially does by implying searching, but it doesn't state whether results are limited, order, or any constraints. A 3 is fair because the description adds some context but not rich behavioral detail.

    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 compact: three sentences. The first states what it does, the second positions it as entry point and gives source values, the third gives a workflow. It is well-structured and not verbose.

    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?

    The description is fairly complete for the tool's role. It explains the purpose, gives source filter values, and directs to the next steps in the workflow. The main gaps are: 'limit' parameter semantics, potential return shape (though output schema exists), and explicit read-only clarification. With an output schema present, the tool's return format is addressed, so the description's gap on limit is the most notable.

    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 description coverage is 0%, so the description has the burden to explain parameters. It mentions 'source' with allowed values (eurostat, copernicus, osm) and implicitly explains query as the search term, but it does not mention 'limit' at all. The description adds meaning for 'source' but leaves 'limit' undefined. With 0% coverage, the description should compensate more fully.

    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 states a clear purpose: searching for an indicator (socio-economic, environmental, infrastructure), and positions it as the entry point for territorial analysis. It is differentiated from siblings by naming the downstream tools (list_zones, get_indicators) and clarifying it's the starting point.

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

    Usage Guidelines5/5

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

    The description explicitly says when to use it ('Point d'entrée de toute analyse territoriale croisée'), what filters exist (source on eurostat, copernicus, or osm), and gives a clear sequence of usage: use search_indicators, then list_zones, then get_indicators. This is strong usage guidance that helps the agent understand the workflow.

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

  • Behavior4/5

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

    There are no annotations, so the description bears full responsibility. It discloses the key behavioral trait that codelists are truncated (important for agent expectations) and mentions the ellipsis indicator. It doesn't state return format or error behavior, but for a simple structure tool with an output schema, this is acceptable coverage. No contradiction with any annotations since none exist.

    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 extremely concise: two short sentences plus a conditional instruction. Every sentence earns its place: the first defines purpose, the second provides usage order and alternative routing. No fluff or repetition.

    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 tool with one parameter, an output schema, and explicit sibling references, the description is quite complete. It covers purpose, usage order, and truncation behavior. Minor gaps: doesn't explain what 'structure' exactly includes (only mentions dimensions and codes), but that's sufficient. The output schema likely provides return details. This nearly fully equips the agent.

    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 0%, so the description must compensate. It does: 'dataset' is implicitly the dataset identifier, and the description explains that the tool returns dimensions/codes of that dataset. It also explains behavior around truncation. It doesn't specify the format of the dataset parameter, but the schema already declares it as a string. Overall, the description provides enough 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?

    The description clearly states the tool returns the dimensions and codes of a dataset, with a specific verb ('get') and resource ('structure'). It also distinguishes itself from siblings by noting that codelists are truncated and that list_codes should be used for full exploration. This effectively differentiates it from query_data and list_codes.

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

    Usage Guidelines5/5

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

    The description explicitly instructs to call this tool before query_data, establishing a clear usage order. It also provides a conditional rule: if a dimension shows '… et N autres', use list_codes to browse it. This directly tells the agent when to use alternatives, which is exactly what this dimension requires.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

nutshell-mcp MCP server

Copy to your README.md:

Score Badge

nutshell-mcp MCP server

Copy to your README.md:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/scampion/nutshell-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server