Skip to main content
Glama
sandervd
by sandervd

linkml-mcp

MCP server for commit-addressed editing of LinkML YAML schemas.

See SCOPE.md for the project scope and milestone boundaries.

Setup

uv sync --dev

Related MCP server: github-mcp-tool

Run The MCP Server

For local editor/Codex testing, HTTP is currently the recommended transport:

uv run linkml-mcp --transport http --host 127.0.0.1 --port 8765

To accept requests through a hostname or reverse proxy, bind beyond localhost and allow the external Host header:

uv run linkml-mcp \
  --transport http \
  --host 0.0.0.0 \
  --port 8765 \
  --allowed-host essentialcomplexity.eu

If the proxy forwards a different Host header, pass that value with another --allowed-host.

Use this MCP config:

{
  "servers": {
    "linkml-server": {
      "type": "http",
      "url": "http://127.0.0.1:8765/mcp"
    }
  },
  "inputs": []
}

Stdio is also available:

uv run linkml-mcp

The server stores workspaces under .linkml-mcp/workspaces by default. Override this with:

export LINKML_MCP_WORKSPACE_ROOT=/path/to/workspaces
export LINKML_MCP_GENERATOR_OUTPUT_ROOT=/path/to/generated

Test Client

Create a workspace:

uv run linkml-mcp-client init --name test_schema

Apply a semantic changeset:

uv run linkml-mcp-client apply-change \
  --workspace-id ws_... \
  --base-commit abc123 \
  --changes-json examples/add_person.json \
  --message "Add Person"

Read a schema at a commit:

uv run linkml-mcp-client read-schema \
  --workspace-id ws_... \
  --commit-id def456

Run tests:

uv run pytest

Available Tools

9 tools
apply_changesetA

Apply an atomic ordered semantic changeset to a LinkML workspace. Requires base_commit; validates before and after edits; returns a new commit id. Supported operations include create/delete/rename class, slot, enum, prefix, import, file, plus set_field, unset_field, list_append, list_remove, list_replace, map_set, and map_remove.

ParametersJSON Schema
NameRequiredDescriptionDefault
changesYesOrdered semantic operations to apply atomically.
messageNoOptional git commit message.
base_commitYesGit commit id that the new commit should use as its parent.
workspace_idYesWorkspace id returned by init_workspace.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden of disclosing behavior. It does well by mentioning atomicity, ordering, validation before and after, the base_commit requirement, and the return of a new commit id. It stops short of describing failure behavior, rollback, or permission requirements, but the disclosed traits are substantial and not contradicted by any annotation.

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 three sentences with no filler. The main purpose is front-loaded, the critical requirement (base_commit) and core behaviors (validation, return value) are in the second sentence, and the third sentence enumerates supported operations compactly. Every sentence 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 complex mutation tool, the description provides a strong high-level picture: atomic ordered application, validation, commit id return, and the set of supported operations. It does not detail the exact parameters required for each operation type or the response structure beyond a commit id, but the input schema fills most of the gaps. A bit more on error/failure behavior would make it fully 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?

The schema covers all 4 parameters at 100%, so the baseline is 3. The description adds meaningful value by expanding the operation vocabulary (create/delete/rename class, slot, enum, prefix, import, file, plus set_field, unset_field, list_append, list_remove, list_replace, map_set, map_remove) and by clarifying that the changes array is ordered and applied atomically. This goes beyond the schema's single example.

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 begins with a specific verb and resource: 'Apply an atomic ordered semantic changeset to a LinkML workspace.' It clearly distinguishes this tool from the sibling read/init/generate tools by positioning it as the mutation/commit operation, and even enumerates the supported operation families.

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 clear context: it requires base_commit, applies changes atomically, and validates before/after. It does not explicitly name alternatives or when-not to use it, but among the sibling tools there is no other changeset-apply tool, so the intended usage is unambiguous.

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

describe_generatorA

Describe one supported LinkML generator and the option format accepted by run_generator. Generator options are passed as CLI-style option names without leading dashes.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It adds useful detail about option format ('CLI-style option names without leading dashes') and 'describe' implies a read-only operation, but it does not explain what output the tool returns or whether unsupported names produce errors. This is adequate for a simple lookup tool 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?

Two concise sentences with no filler. The core purpose is stated first, and the additional option-format nuance is included without bloat. Every sentence contributes useful information.

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?

This is a simple tool with one enum-constrained parameter and no output schema, so the description is nearly complete. It covers the tool's purpose and the key behavioral detail about option formatting. It could mention that list_generators is the way to enumerate supported generators, but that is a minor omission.

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%, and the description does not explicitly explain that 'name' selects the generator, though 'Describe one supported LinkML generator' implies it. The enum values (shacl, owl, doc) are self-explanatory, but the description does not add meaning beyond the schema for the parameter itself.

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 ('Describe') and resource ('one supported LinkML generator'), and clarifies it covers the option format accepted by run_generator. This clearly distinguishes it from sibling tools like list_generators (which enumerates) and run_generator (which executes).

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 implies this tool should be used to inspect a specific generator or learn its option format before invoking run_generator. It does not explicitly mention when to use list_generators instead, but the phrase 'one supported generator' plus sibling context makes the usage scenario reasonably clear.

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

get_entityA

Fetch one LinkML entity from a schema file at a specific commit. entity_type must be class, slot, enum, prefix, or import.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEntity name to fetch.
pathNoRelative schema path. Defaults to schema.yaml.schema.yaml
commit_idYesGit commit id to inspect.
entity_typeYes
workspace_idYesWorkspace id returned by init_workspace.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. 'Fetch' conveys a read-only operation, and 'at a specific commit' discloses that the lookup is version-pinned. The required entity_type domain is also stated, though error behavior and return format are not addressed.

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 compact sentences with no filler. The action and resource are front-loaded, and the entity_type constraint is cleanly separated for readability.

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 single-entity fetch tool, the description plus schema provides enough practical detail: what to fetch, from where, and under which constraints. The main omissions are a direct pointer to read_schema for full-file needs and any hint about the output, but neither is critical for correct invocation at this complexity level.

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 80%, so the schema already documents most parameters. The description only repeats the entity_type enum values, adding little semantic value beyond what the input schema provides.

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 ('Fetch') with a precise resource ('one LinkML entity from a schema file at a specific commit'). It also enumerates exactly which entity types are allowed, clearly distinguishing it from file-level tools like read_schema or list_files.

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: use this when you need a single entity at a pinned commit. However, it never explicitly contrasts it with siblings such as read_schema for whole-schema reads or validate_schema for validation, leaving the decision to inference.

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

init_workspaceA

Create a new LinkML editing workspace backed by a bare git repository. Returns workspace_id and initial_commit. If files are omitted, creates a minimal schema.yaml.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional LinkML schema name. Defaults to schema.
filesNoOptional map of relative file paths to YAML file contents. Must include schema.yaml if provided.
schema_idNoOptional LinkML schema id URI.
descriptionNoOptional schema description.

TDQS

A4.2/5.0
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 of behavioral disclosure. It states the creation side effect (new workspace backed by a bare git repository), the return values, and the fallback behavior when files are omitted. It does not go into failure modes or conflict handling, but it covers the key operational behavior for a creation 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 two sentences with no wasted words. It front-loads the core action and resource, then provides return values and a conditional behavior. Every sentence 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 creation tool with four optional parameters and no output schema, the description provides the essential return values and the default behavior for omitted files. It is complete enough for an agent to invoke correctly, though details about where the workspace is created or what happens on conflicts are not mentioned.

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 all four parameters. The description adds a small amount of context beyond the schema by noting that omitting files creates a minimal schema.yaml, but other parameter semantics are already well covered by the input 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 a specific verb ('Create'), resource ('new LinkML editing workspace'), and implementation detail ('backed by a bare git repository'). It also names the return values (workspace_id and initial_commit), making it easy to distinguish from sibling tools that operate on an existing workspace.

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 positions this as the workspace creation tool, and mentioning that it returns workspace_id implies it is a prerequisite for the other sibling tools that require an existing workspace. However, it does not explicitly state when to use it instead of alternatives or 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.

list_filesA

List files present in a LinkML workspace at a specific commit. Use this before targeting imported local schema files.

ParametersJSON Schema
NameRequiredDescriptionDefault
commit_idYesGit commit id to inspect.
workspace_idYesWorkspace id returned by init_workspace.

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 carry the behavioral disclosure burden. It clearly communicates a read-only enumeration scoped to a specific commit, which is useful, but it omits details such as return format, whether listing is recursive, or behavior on invalid commit IDs. This leaves some behavioral ambiguity for the agent.

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 core action is front-loaded in the first sentence, and the second sentence adds actionable usage guidance. Every element 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 low-complexity list tool with two clearly documented parameters, the description covers what it does and when to use it. The main gap is the absence of any statement about output format (e.g., file names vs. paths), which would make interpreting the result slightly less certain.

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 both workspace_id and commit_id are already fully documented in the schema. The description reinforces the 'specific commit' scoping but adds no new parameter-level detail beyond what the schema provides, so the baseline 3 is appropriate.

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 'List' with a clearly defined resource: 'files present in a LinkML workspace at a specific commit.' This distinguishes it from sibling tools like read_schema, and the additional note 'Use this before targeting imported local schema files' clarifies its role in the workflow.

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 sentence 'Use this before targeting imported local schema files' provides a concrete, actionable scenario for when to invoke this tool. However, it does not explicitly name alternative tools or state when not to use it, so it falls short of fully explicit routing.

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

list_generatorsA

List the LinkML generators supported by this MCP server. Milestone generators are shacl, owl, and doc.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It clearly indicates this is a read-style enumeration operation and adds the useful detail about milestone generators, but it does not describe the output format, whether the list is exhaustive, or any other behavioral specifics. 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.

Conciseness5/5

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

Two short sentences with no filler. The primary action and resource appear first, and the milestone examples add useful context without unnecessary elaboration.

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 zero-parameter list tool with no output schema, the description is largely sufficient. It could be more explicit about the return format, but the provided information, combined with the sibling tool context, is enough for an agent to invoke it correctly.

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 and the schema is an empty object, so parameter-level guidance is not needed. The baseline for zero-parameter tools is 4, and the description appropriately adds no irrelevant parameter information.

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 ('List') with a clear resource ('the LinkML generators supported by this MCP server'), and it names milestone examples ('shacl, owl, and doc'). This makes the tool's purpose immediately apparent and distinguishes it from siblings like describe_generator and run_generator.

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 the tool should be used when an agent needs to discover available LinkML generators before using describe_generator or run_generator. However, it does not explicitly state when to use it versus alternatives or when not to use it, leaving the guidance implicit.

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

read_schemaA

Read a LinkML YAML schema file from a specific workspace commit. Use path to read schema.yaml or another local imported YAML file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoRelative schema path. Defaults to schema.yaml.schema.yaml
commit_idYesGit commit id to read from.
workspace_idYesWorkspace id returned by init_workspace.

TDQS

A4.1/5.0
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. The verb 'Read' clearly indicates a non-mutating operation, and 'from a specific workspace commit' adds important scoping context. It does not describe error behavior, but for a simple read tool this 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?

Two concise sentences with no filler. The primary action and target are front-loaded in the first sentence, and the second sentence adds a useful clarifying detail about path usage.

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 is simple and parameters are well-documented, but because there is no output schema, the description should ideally clarify what the tool returns (e.g., raw YAML content, parsed schema object). The description implies reading but leaves the return contract implicit.

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?

All three parameters already have schema descriptions, so the baseline is 3. The description adds mild value by explaining that 'path' can point to schema.yaml or another local imported YAML file, but it does not substantially enhance 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 states a specific verb ('Read'), a clear resource ('LinkML YAML schema file'), and a precise location ('from a specific workspace commit'). It distinguishes the tool from siblings like validate_schema and get_entity by framing it as a file-content read operation rather than validation or entity access.

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 clear context: this tool is for reading schema.yaml or another local imported YAML file at a specific commit. It implicitly tells the agent when to choose this over list_files or validate_schema, though it does not explicitly name exclusions or alternatives.

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

run_generatorA

Run a supported LinkML generator against a schema file at a specific commit. Does not validate automatically and does not commit generated artifacts. Returns inline content for small outputs or a temporary path for large/multi-file outputs.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoRelative schema path. Defaults to schema.yaml.schema.yaml
optionsNoGenerator-specific CLI options without leading dashes.
commit_idYesGit commit id to generate from.
generatorYes
workspace_idYesWorkspace id returned by init_workspace.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It explicitly states that validation is not automatic, that generated artifacts are not committed, and that outputs are returned inline or via a temporary path. These are meaningful, non-obvious behavioral traits. It could add details about path lifetime or error behavior, but it already goes well beyond a generic description.

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 with no filler. The first sentence states the core action, the second covers side-effect exclusions, and the third covers return behavior. Every sentence earns its place and the structure is easily scannable.

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 tool with no output schema and no annotations, the description covers the main action and key behavioral boundaries, but it leaves gaps around how long the temporary path remains valid, how to retrieve or consume its contents, and how to discover valid generator-specific options. These details matter for fully correct invocation, especially since options is an open-ended nested object.

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 approximately 80%, so the schema already documents commit_id, generator, workspace_id, path, and options semantics. The description reinforces that generation happens against a specific commit and that only supported generators can be used, but it does not add substantial new parameter-level meaning beyond what the schema provides.

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 a specific verb and resource: 'Run a supported LinkML generator against a schema file at a specific commit.' This clearly identifies the action, the target, and the scope, and distinguishes it from sibling tools like list_generators and describe_generator, which only inspect generators rather than executing 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 intended use is implied by the purpose and by the statement that it 'Does not validate automatically,' but the description never names alternatives or explicitly states when to choose this tool over validate_schema or describe_generator. An agent must infer routing from sibling names and context rather than being given direct guidance.

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

validate_schemaA

Validate a LinkML YAML schema at a specific workspace commit. This performs schema validation only and does not create a commit.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoRelative schema path. Defaults to schema.yaml.schema.yaml
commit_idYesGit commit id to validate.
workspace_idYesWorkspace id returned by init_workspace.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It does disclose the important side-effect boundary ('does not create a commit'), which helps an agent understand this is non-mutating. However, it does not describe what the validation response contains, such as whether it returns errors, a pass/fail status, or a report, which is especially relevant since no output schema exists.

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 filler. The core purpose and target resource are front-loaded, and the second sentence adds an important behavioral clarification. Every word contributes meaning.

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 tool with three simple parameters and no output schema, the description is reasonably complete, but it leaves the return behavior implicit. It also does not mention when in a workflow validation is expected, such as before running a generator or applying a changeset. Given the absence of annotations and an output schema, a bit more detail about expected results would make it fully 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%, so the parameters are already well documented by the schema. The description adds minimal semantics beyond restating that validation happens at a specific commit, which maps to commit_id and workspace_id. It does not add new meaning for the path parameter, but the schema already covers that, so a baseline score of 3 is appropriate.

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 ('Validate') and a precise resource ('LinkML YAML schema at a specific workspace commit'). It also clarifies that this is validation-only, which distinguishes it from sibling tools like apply_changeset that would mutate state or create commits. This is immediately clear to an agent selecting among the listed siblings.

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 clear context: the tool validates a schema at a given commit and explicitly states it does not create a commit. This communicates a key exclusion relative to commit-creating operations. However, it does not explicitly state when to prefer this over siblings like read_schema or apply_changeset, nor does it name alternatives, so it stops 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv0.1.0
    • First observedapply_changeset
    • First observeddescribe_generator
    • First observedget_entity
    • First observedinit_workspace
    • First observedlist_files
    • First observedlist_generators
    • First observedread_schema
    • First observedrun_generator
    • First observedvalidate_schema

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a distinct concern: workspace setup, file listing, schema reading, entity retrieval, validation, semantic editing, and generator metadata/execution. Even related tools like validate_schema and apply_changeset are clearly separated by read-only vs. mutating behavior.

Naming Consistency5/5

Tool names consistently follow a verb_noun pattern using lowercase snake_case: list_files, init_workspace, read_schema, get_entity, validate_schema, apply_changeset, list_generators, describe_generator, run_generator. There are no mixed conventions or vague verbs.

Tool Count5/5

Nine tools is well-scoped for a LinkML workspace server. The count covers setup, inspection, validation, modification, and generation without redundant or bloated surface area.

Completeness4/5

The tool set covers the core workflow well: creating a workspace, reading files, fetching entities, validating, applying semantic changes, and running generators. Minor gaps exist, such as no direct list-entities operation or workspace metadata lookups, but these can be worked around with read_schema and get_entity.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables managing GitHub repositories, files, and user information through MCP, with support for creating, updating, and deleting repository contents, as well as fetching user profiles.
    1
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides MCP tools that give AI agents persistent, append-only memory in a git repository, letting them record observations, decisions, and corrections while retrieving context briefs, current facts, conflicts, and traceable event history without a vector database.
    180
    MIT

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/sandervd/linkml-mcp'

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