linkml-mcp
Provides commit-addressed editing of LinkML YAML schemas, including applying semantic changesets and reading schema versions at specific commits.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@linkml-mcpapply changeset to add a Person class to my schema"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 --devRelated 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 8765To 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.euIf 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-mcpThe 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/generatedTest Client
Create a workspace:
uv run linkml-mcp-client init --name test_schemaApply 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 def456Run tests:
uv run pytestAvailable Tools
9 toolsapply_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.
| Name | Required | Description | Default |
|---|---|---|---|
| changes | Yes | Ordered semantic operations to apply atomically. | |
| message | No | Optional git commit message. | |
| base_commit | Yes | Git commit id that the new commit should use as its parent. | |
| workspace_id | Yes | Workspace id returned by init_workspace. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Entity name to fetch. | |
| path | No | Relative schema path. Defaults to schema.yaml. | schema.yaml |
| commit_id | Yes | Git commit id to inspect. | |
| entity_type | Yes | ||
| workspace_id | Yes | Workspace id returned by init_workspace. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional LinkML schema name. Defaults to schema. | |
| files | No | Optional map of relative file paths to YAML file contents. Must include schema.yaml if provided. | |
| schema_id | No | Optional LinkML schema id URI. | |
| description | No | Optional schema description. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| commit_id | Yes | Git commit id to inspect. | |
| workspace_id | Yes | Workspace id returned by init_workspace. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Relative schema path. Defaults to schema.yaml. | schema.yaml |
| commit_id | Yes | Git commit id to read from. | |
| workspace_id | Yes | Workspace id returned by init_workspace. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Relative schema path. Defaults to schema.yaml. | schema.yaml |
| options | No | Generator-specific CLI options without leading dashes. | |
| commit_id | Yes | Git commit id to generate from. | |
| generator | Yes | ||
| workspace_id | Yes | Workspace id returned by init_workspace. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Relative schema path. Defaults to schema.yaml. | schema.yaml |
| commit_id | Yes | Git commit id to validate. | |
| workspace_id | Yes | Workspace id returned by init_workspace. |
TDQS
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.
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.
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.
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.
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.
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.
9 tool updates
v0.1.0- First observed
apply_changeset - First observed
describe_generator - First observed
get_entity - First observed
init_workspace - First observed
list_files - First observed
list_generators - First observed
read_schema - First observed
run_generator - First observed
validate_schema
TDQS
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.
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.
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.
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
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
Render, verify, describe, and safely edit Mermaid diagrams through MCP.
Turn a GitHub repo or docs site into agent-ready context: pack it or search it, over MCP.
A MCP server built for developers enabling Git based project management with project and personal…
OAuth-protected, read-only-by-default MCP server for provenance-labeled QuillCaddie project memory.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables MCP clients to manage Overleaf projects via Git sync, including listing, reading, writing, and syncing files.451MIT
- FlicenseNot gradedqualityDmaintenanceEnables 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-
- AlicenseNot gradedqualityAmaintenanceProvides 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.180MIT
- FlicenseNot gradedqualityCmaintenanceEnables users to read and manage GitHub repositories through MCP, with destructive operations gated behind explicit confirmation and dry-run previews.1-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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