Skip to main content
Glama

Server Quality Checklist

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

  • Disambiguation5/5

    Each tool targets a clearly distinct resource and action: Drupal nodes, Drupal resource types, Google Sheet rows, and Google Doc extraction are all unambiguous. No two tools could reasonably be confused for the same operation.

    Naming Consistency5/5

    All tool names follow a consistent snake_case verb-first pattern such as list_nodes, create_node, update_node, list_sheet_rows, and mark_sheet_row_done. The naming is predictable and easy to remember.

    Tool Count5/5

    With 8 tools, the server is well scoped for its purpose: it covers Drupal node operations, content type discovery, and the Google Sheets/Docs content-import pipeline. Each tool earns its place.

    Completeness4/5

    The core ingestion workflow is well covered: read from Sheet and Doc, create/update Drupal nodes, list types, and mark rows done. The main gap is the lack of a delete_node operation, which would make full content lifecycle management more complete.

  • Average 3.7/5 across 8 of 8 tools scored.

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

    • No community issues in the last 6 months
    • 2 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?

    With no annotations available, the description carries the full burden of disclosing behavior. 'Obtiene' clearly marks this as a read/retrieval operation rather than a mutation, which is useful. However, it does not disclose return value format, error behavior, permissions, or whether related fields are included.

    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 a single focused sentence with no filler, and the key retrieval intent is front-loaded. It is concise and readable, though slightly too minimal to cover the full parameter context.

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

    Completeness2/5

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

    This tool has no output schema, no annotations, and a 0% parameter schema coverage, so the one-line description must do more. It fails to explain the contentType parameter, the expected return value, or how this retrieval tool differs from sibling retrieval tools, making it incomplete for reliable agent use.

    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%, so the description must compensate for the bare input schema. It gives meaning to the uuid parameter ('por su UUID'), but it says nothing about the required contentType parameter, leaving half of the required inputs unexplained.

    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 a specific verb and resource: it retrieves a single Drupal node by UUID. This clearly distinguishes get_node from siblings like list_nodes (which lists many nodes) and create_node/update_node (which mutate nodes).

    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 phrase 'por su UUID' implies the tool should be used when a specific UUID is known, but the description does not explicitly say when to prefer it over list_nodes or other retrieval tools. It provides no exclusions or alternative routing guidance.

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

  • Behavior2/5

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

    No annotations are provided, so the description bears the full burden of behavioral disclosure. It only says the tool lists rows; it does not explicitly state that this is a read-only operation, does not describe pagination, output formatting, or any side effects. This is a minimal disclosure for a no-annotation 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 one concise sentence that leads with the verb and resource, and then lists columns. Every word contributes information; there is no redundancy or fluff.

    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 one-parameter list tool, the description provides the essential context: it lists rows and specifies the columns returned. Since there is no output schema, the column enumeration partially compensates. It does not cover edge cases like pagination or sorting, but these are not critical for a straightforward list operation.

    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 100%, so the schema already documents the only parameter, sheetId. The description adds no additional parameter details beyond what the schema provides, matching the baseline for full schema coverage.

    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 a specific verb ('Lista'/'List') and resource ('las filas del Google Sheet de contenidos'), and enumerates the columns returned. This clearly distinguishes it from siblings like list_nodes and list_resource_types because the resource is explicitly the content sheet's rows.

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

    Usage Guidelines2/5

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

    No guidance is provided about when to use this tool versus alternatives. There is no mention of use cases, exclusions, or prerequisites. The only usage signal is implied by the verb and resource.

    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 bears the full behavioral burden. It does disclose an authentication/permission requirement, which is useful. It does not explain partial-update semantics, side effects, or error behavior beyond that.

    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 no filler: the first defines the core purpose, the second adds the key prerequisite. The action is front-loaded and every sentence earns its place.

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

    Completeness2/5

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

    For a 4-parameter mutation tool with no annotations, no parameter descriptions, and no output schema, this is too thin. An agent knows what the tool does but not how to populate attributes or relationships, what the response looks like, or what other behavioral constraints apply.

    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 does not compensate. 'Campos' loosely maps to the attributes parameter, and 'content type' appears in the permission sentence, but uuid, the structure of attributes, and relationships are left entirely unexplained.

    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?

    States a specific action ('Actualiza campos') and a specific resource ('nodo existente en el sitio Drupal'). The word 'existente' clearly distinguishes it from create_node, and the update semantics distinguish it from list_nodes/get_node.

    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?

    Implies usage when one needs to edit a Drupal node's fields and provides a prerequisite ('Requiere permiso de edición en ese content type'). It does not, however, explicitly state when not to use it or name alternatives such as create_node or list_nodes.

    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 provided, the description carries the behavioral transparency burden. It reveals a meaningful prerequisite: mcp_agent must hold creation permission for the specific content type. It does not mention return format, failure modes, or that the call mutates Drupal content, leaving behavioral disclosure 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?

    Two short sentences, with the action first and the permission caveat second. Every word adds value; there is no boilerplate or repetition of schema structures.

    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 three parameters, nested objects, and no output schema, the description is thin: it lacks error/result behavior, how to discover valid content types, and when to use this tool with relationships. The permission caveat helps, but the agent still has to infer several operation-critical details.

    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 description adds JSON:API formatting examples for attributes and marks relationships as optional, which is useful beyond the bare schema. The required contentType parameter still has no description in either the schema or the description text, so a key semantic gap remains.

    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 a concrete operation: 'Crea un nodo nuevo en el sitio Drupal' (create a new node). This verb+resource pair makes it clearly distinct from sibling read/list/update tools, even though it does not explicitly name them.

    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 creation intent is clear, and the permission requirement ('Requiere que el usuario mcp_agent tenga permiso de creación en ese content type') gives useful context. However, there is no explicit when-to-use vs. update_node/list_nodes guidance or any exclusion criteria; the agent must infer the typical workflow.

    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 full burden. It discloses a read-only listing behavior and scopes results to the Drupal site, but it does not mention authentication requirements, return format, or any limitation beyond 'disponibles'. The verb 'Lista' implies a safe read, but little else is transparent.

    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?

    A single, front-loaded sentence that conveys the action and scope efficiently. There is no filler or redundant content.

    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 (zero parameters, no output schema), the description adequately explains what the tool returns: a list of JSON:API resource types. It could specify the exact response shape, but for a discovery listing tool this is sufficient.

    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 tool has zero parameters, so the baseline is 4. The description does not need to explain parameter semantics, and the empty schema confirms no inputs are required.

    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 specific verb ('Lista') and a clear resource ('tipos de recurso JSON:API disponibles en el sitio Drupal') with examples. It is unambiguous and distinct from siblings like list_nodes, though it does not explicitly contrast itself with any sibling.

    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 that this tool is used to discover available JSON:API resource types, but it does not provide explicit guidance about when to use this tool versus alternatives like list_nodes. There are no stated when-to-use or when-not-to-use conditions.

    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?

    There are no annotations, so the description carries the full burden. 'Lista' implies a read-only operation, and pagination and filtering are mentioned, but the description does not disclose return format, default pagination values, or potential side effects. This is adequate 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.

    Conciseness5/5

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

    A single, compact sentence that front-loads the main action and resource, then adds the two relevant features. No redundant or filler words.

    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 read-only list tool this is adequate, but with no output schema it would benefit from describing what kind of node data is returned and what the default pagination behavior is. The essentials are present, but an agent may be unsure about the result shape.

    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 50%; contentType and filterTitle are documented in the schema, while pageSize and pageOffset are not. The description mentions 'paginación' and 'filtro opcional por título', which partially compensates by hinting at the purpose of those parameters, but it does not explain offset semantics or how pagination maps to the specific parameters.

    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 identifies the action ('Lista'), the resource ('nodos'), and the scope ('de un content type del sitio Drupal'). It also mentions the key features, pagination and optional title filter, which distinguishes it from sibling tools like get_node (single node) and list_resource_types (content types).

    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 clear context for when to use this tool: when listing nodes of a specific content type. It does not explicitly state exclusions or mention alternatives, so it misses the top tier, but the use case is strongly implied by the wording.

    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?

    With no annotations provided, the description carries the behavioral burden, and it does meaningfully: it discloses a read-style operation (download + extract) and a notable transformation ('tablas convertidas a listas'). It does not cover auth requirements or failure modes, but the core processing behavior is transparent enough for safe invocation.

    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?

    A single, well-structured sentence front-loads the action, lists extracted fields, and appends the Drupal-ready format and table conversion as a parenthetical. There is no filler and every clause earns its place.

    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 one-parameter extraction tool with no output schema, the description adequately names all delivered content fields and one important transform. It does not clarify the relationship to create_node (i.e., that this tool only extracts, it does not publish the Drupal node), but the core call semantics are 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 100% and the sole parameter docUrlOrId is already described as 'URL o ID del Google Doc'. The tool description adds no additional parameter-level meaning, so the baseline of 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 opens with specific verbs ('Descarga y extrae') tied to a concrete resource (Google Doc) and enumerates exactly what is extracted: título, meta título, meta descripción, intro y body. It also names the target format (HTML listo para Drupal), making the tool's purpose unmistakable and clearly distinct from the sibling node CRUD 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 intended use is implied: pull content from a Google Doc in a Drupal-ready format. However, there is no explicit guidance about when to use this tool versus list_nodes/get_node/create_node/update_node, nor any mention of prerequisites such as document sharing permissions.

    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?

    With no annotations provided, the description carries the full burden and does disclose the visible side effect: the row is painted light green. It also states the semantic meaning of that color change, 'ya subida'. It does not mention permissions, persistence, or undo behavior, but for a simple visual-marker tool the core behavior is transparent enough.

    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 short sentence that begins with the action and ends with the purpose. There is no filler, repetition, or content that duplicates the schema.

    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 two-parameter visual mutation tool, the description is nearly sufficient, but without annotations, an output schema, or parameter-level help for sheetId, there are still notable gaps around return behavior and reversibility. The low complexity of the tool keeps it at a minimum-viable level.

    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?

    The schema describes rowIndex well with a row-numbering rule, but sheetId has no schema description. The description adds no parameter-level guidance: it only refers to 'el Sheet' and does not clarify what sheetId should contain or how to obtain it, so it does not compensate for the missing schema coverage.

    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 uses a specific verb and resource: 'Pinta de verde claro una fila del Sheet' makes clear the action and target. The purpose clause 'para marcarla como ya subida' states the intended outcome, which also distinguishes it from unconnected sibling tools like list_nodes and create_node.

    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 phrase 'para marcarla como ya subida' provides clear context for when this tool should be used: after a row has been uploaded and needs to be visually marked. No alternative tool is referenced, and none of the siblings appears to overlap with this row-marking action, so the selection is unambiguous.

    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

MCP_Drupal MCP server

Copy to your README.md:

Score Badge

MCP_Drupal 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/laurasang13/MCP_Drupal'

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