@ztechlab/mcp-server-yubikey
Allows reading YubiKey information via the ykman CLI, including device details, OTP slots, FIDO2 status and credentials, PIV certificates and keys, and OpenPGP status.
Click on "Deploy 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., "@@ztechlab/mcp-server-yubikeyWhat YubiKey is plugged in?"
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.
@ztechlab/mcp-server-yubikey
MCP server that exposes YubiKey management tools to AI agents via the ykman CLI.
Read-only. No writes, no resets, no destructive operations.
Prerequisites
YubiKey Manager CLI (
ykman) installed and on PATHA YubiKey connected via USB
Node.js 18+
Related MCP server: Secops Toolkit MCP
Install
npm install -g @ztechlab/mcp-server-yubikeyConfiguration
Claude Code
Add to your .mcp.json:
{
"mcpServers": {
"yubikey": {
"command": "mcp-server-yubikey"
}
}
}Claude Desktop
Add to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"yubikey": {
"command": "npx",
"args": ["-y", "@ztechlab/mcp-server-yubikey"]
}
}
}Custom ykman path
If ykman is not on PATH, set the YKMAN_PATH environment variable:
{
"mcpServers": {
"yubikey": {
"command": "mcp-server-yubikey",
"env": {
"YKMAN_PATH": "C:/Program Files/Yubico/YubiKey Manager CLI/ykman.exe"
}
}
}
}Tools
All tools are read-only. Tools that accept a serial parameter will use the only connected key if omitted.
Tool | Description |
| List all connected YubiKeys with serial numbers |
| Device details: serial, firmware, model, interfaces, enabled applications |
| OTP slot configuration (Slot 1 and Slot 2 status) |
| FIDO2 applet status: PIN set, credentials stored, remaining retries |
| List FIDO2 resident credentials (passkeys). Requires PIN. |
| List enrolled fingerprints (YubiKey Bio). Requires PIN. |
| PIV application status: management key type, PIN/PUK retries, certificate slots |
| PIV key metadata for a specific slot (9a, 9c, 9d, 9e) |
| OpenPGP application status: key slots, touch policies, signature count |
| OpenPGP key slot metadata (sig, enc, aut, att) |
Examples
Once configured, ask your AI agent:
"What YubiKey is plugged in?"
"Show me the FIDO2 status on my YubiKey"
"What PIV certificates are on this key?"
"List the OTP slot configuration"
License
MIT
Available Tools
10 toolsyubikey-fido-credentialsA
List FIDO2 resident credentials (passkeys) stored on the YubiKey. Requires PIN.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | Serial number of the YubiKey. Omit if only one key is connected. | |
| pin | Yes | FIDO2 PIN for the YubiKey (required to read credentials) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It correctly indicates that a PIN is required, but does not explain whether the operation is read-only or has side effects. Since it lists credentials, it is likely read-only, but this is not confirmed.
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 a single sentence plus a short requirement note, making it extremely concise and front-loaded. Every word contributes to understanding.
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?
There is no output schema, so the description should indicate what the tool returns (e.g., list of credentials with metadata). It omits this, making it less complete for an agent to understand the full input-output behavior.
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 input schema has 100% description coverage. The tool description adds value by stating the PIN is required and that the serial parameter can be omitted if only one key is connected, which is not fully captured in the schema descriptions.
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 the tool lists FIDO2 resident credentials (passkeys) stored on a YubiKey, using specific verb 'List' and resource 'YubiKey'. It distinguishes from sibling tools that handle other YubiKey functions (fingerprints, info, PIV, etc.).
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 mentions 'Requires PIN' but does not explicitly specify when to use this tool versus alternatives like yubikey-fido-fingerprints or yubikey-piv-keys-info. Usage context is implied but not detailed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yubikey-fido-fingerprintsA
List enrolled fingerprints on a YubiKey Bio. Requires PIN.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | Serial number of the YubiKey. Omit if only one key is connected. | |
| pin | Yes | FIDO2 PIN for the YubiKey (required to list fingerprints) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It states it's a list operation (read-only) and requires PIN, but does not disclose if it modifies anything, rate limits, or auth persistence. The description is minimal and lacks depth.
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 concise, consisting of two short sentences with no unnecessary words. It is front-loaded and efficient.
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 description covers the core purpose and the key requirement (PIN), but given no output schema, it is missing details on return format, error cases, or expected behavior. For a simple list tool, it is adequate but not 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 coverage is 100%, so the descriptions of both parameters are already in the schema. The description adds no new semantic meaning beyond what the schema provides, 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 clearly states it lists enrolled fingerprints on a YubiKey Bio. This distinguishes it from sibling tools like yubikey-fido-credentials or yubikey-fido-info which deal with other aspects.
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 mentions the PIN requirement, which is a prerequisite, but does not explicitly state when to use this tool versus alternatives or when not to use it. The context implies it's for listing fingerprints, but no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yubikey-fido-infoB
Get FIDO2 applet status: PIN set, credentials stored, remaining retries
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | Serial number of the YubiKey. Omit if only one key is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool retrieves status (read-only), but does not disclose potential behaviors such as error conditions (e.g., if no YubiKey connected), authentication requirements, or side effects. This is minimal information.
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 a single concise sentence that front-loads the purpose and key details. Every word contributes value. However, it could benefit from slightly more structure (e.g., listing conditions), but overall it is efficient.
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 read-only tool with one optional parameter and no output schema, the description is adequate. It mentions three specific pieces of status information. However, it lacks details on return format, error handling, or prerequisites, leaving some gaps for an AI agent.
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 coverage is 100%, so the baseline is 3. The description adds no extra meaning about the optional 'serial' parameter beyond what the schema already explains. The parameter's description in the schema is adequate, so no deduction is needed, but also no additional value from the tool description.
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 the tool gets FIDO2 applet status and lists specific data points (PIN set, credentials stored, remaining retries). It uses a specific verb ('Get') and resource ('FIDO2 applet status'), and the sibling tools cover different aspects, so it is well-distinguished.
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 for checking status but does not provide explicit guidance on when to use this tool versus siblings like yubikey-fido-credentials or yubikey-fido-fingerprints. There is no mention of when-not-to-use or alternatives, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yubikey-infoA
Get detailed information about a connected YubiKey (serial, firmware, model, interfaces, applications)
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | Serial number of the YubiKey. Omit if only one key is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It only lists the data returned (serial, firmware, etc.) but does not disclose that the operation is a read, any authentication needs, or error conditions like 'no YubiKey connected'. The behavior is implied but not explicit.
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 a single, focused sentence of 17 words, conveying the tool's purpose and the type of information returned without any filler or redundancy.
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?
Given no output schema, the description lists the fields but does not specify the output format, structure, or error handling. However, the tool's scope is narrow and siblings provide context, making the description minimally adequate.
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 input schema has one parameter 'serial' with 100% coverage. The description adds value beyond the schema by explaining 'Omit if only one key is connected', providing situational guidance not present in the schema definition.
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 'Get detailed information about a connected YubiKey' and lists the specific details (serial, firmware, model, interfaces, applications), distinguishing it from sibling tools that focus on specific features like FIDO, OTP, or PIV.
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 provides no explicit guidance on when to use this tool versus alternatives (e.g., other yubikey-* tools for specific functions). It does not mention prerequisites, such as the YubiKey needing to be connected, or when to avoid using it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yubikey-listA
List all connected YubiKeys with serial numbers
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It only states the action and result, omitting details like required permissions, error behavior (e.g., no YubiKeys connected), or performance characteristics. This leaves the agent with minimal understanding of side effects or constraints.
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 a single, concise sentence that efficiently conveys the core functionality. It could add a brief note on edge cases (e.g., empty result) without losing conciseness, but it is appropriately sized for a simple tool.
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?
Given the tool's simplicity (no parameters, no output schema, no annotations), the description covers the basic purpose. It lacks details on return format or behavior when no YubiKeys are present, but for a list operation, the output is implicitly a list of serial numbers, which is sufficient.
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 no parameters, and schema documentation coverage is 100% (trivially). The description adds nothing about parameters because none exist, but baseline for 0 parameters is 4. No parameter information is missing.
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 the tool lists all connected YubiKeys with serial numbers. The verb 'list' and resource 'connected YubiKeys' are specific, and it contrasts with sibling tools that focus on specific features like FIDO or PIV, making its purpose distinct.
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 for discovering available YubiKeys before using feature-specific tools, but it lacks explicit guidance on when to use this over alternatives or any prerequisites. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yubikey-openpgp-infoA
Get OpenPGP application status: key slots, touch policies, signature count
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | Serial number of the YubiKey. Omit if only one key is connected. |
TDQS
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 mentions the type of information returned but does not explicitly state that it is a read-only operation, whether it requires specific permissions, or any side effects. The optional serial parameter behavior is implied but not expanded.
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 a single, concise sentence that is front-loaded with the primary action and outputs. Every word adds value, and there is no redundant or extraneous 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?
Given no output schema, the description adequately lists three key return fields (key slots, touch policies, signature count). It does not describe the structure or any additional fields, but for a simple info tool this is sufficient. The sibling tools context does not require more detail.
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 coverage is 100%, with the single parameter 'serial' already described in the schema as the serial number to omit if only one key is connected. The description adds no extra meaning beyond the schema, 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 clearly states the action ('Get') and the resource ('OpenPGP application status'), listing specific outputs (key slots, touch policies, signature count). This distinguishes it from sibling tools like yubikey-fido-info or yubikey-piv-info, which target different applications.
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 for retrieving OpenPGP status but does not specify when to use this tool versus alternatives. No explicit guidance on when not to use or prerequisites (e.g., a YubiKey must be connected). Sibling tools cover other applications, but the description does not differentiate further.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yubikey-openpgp-keys-infoA
Get metadata about an OpenPGP key slot: key type, fingerprint, creation date
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | Serial number of the YubiKey. Omit if only one key is connected. | |
| key | Yes | OpenPGP key slot to query: sig (signature), enc (encryption), aut (authentication), or att (attestation) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It correctly implies a read-only operation but does not disclose any potential side effects, permissions, or limitations. Adequate but not detailed.
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?
Single sentence with precise, non-redundant wording. No unnecessary clauses or filler.
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?
Describes return metadata fields (key type, fingerprint, creation date) despite no output schema. Missing details on format or error handling, but suitable for a simple info tool.
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 coverage is 100% with clear parameter descriptions. The tool description adds no new information beyond summarizing the schema; 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?
Description clearly states the tool retrieves metadata about an OpenPGP key slot, specifying three concrete metadata items (key type, fingerprint, creation date), which distinguishes it from sibling tools like yubikey-openpgp-info that may provide different information.
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?
No explicit guidance on when to use this tool versus alternatives (e.g., yubikey-openpgp-info). The description only states what it does, leaving the agent to infer context from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yubikey-otp-infoA
Get OTP slot configuration (Slot 1 and Slot 2 status)
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | Serial number of the YubiKey. Omit if only one key is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It implies a read-only operation, which is accurate, but does not disclose details like error behavior, required device presence, or response format.
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 a single sentence that conveys the core purpose without any extraneous words. Information is front-loaded.
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 tool with one optional parameter and no output schema, the description is minimally sufficient. However, it lacks details about what 'status' includes, which could aid an agent in interpreting results.
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% with a clear description for the 'serial' parameter. The tool description does not add additional parameter context, but the schema already provides sufficient meaning.
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 the verb 'Get' and the resource 'OTP slot configuration', specifying both Slot 1 and Slot 2. This distinguishes it from sibling tools focused on FIDO, OpenPGP, PIV, etc.
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 provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., YubiKey must be connected) 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.
yubikey-piv-infoA
Get PIV (smart card) application status: management key type, PIN/PUK retries, certificate slots in use
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | Serial number of the YubiKey. Omit if only one key is connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits. It identifies a read operation but does not state that the tool is non-destructive, requires a connected YubiKey, or any permissions. Missing details like side effects or limitations reduce transparency.
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 a single, well-structured sentence that conveys the core purpose and specifics efficiently. No filler or redundant information; every word adds value.
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?
Given no output schema, the description partially compensates by listing key pieces of output (management key type, retries, certificate slots). However, it does not mention the output format (e.g., JSON) or whether additional status fields are included, leaving minor gaps.
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% for the single parameter, so the baseline is 3. The description does not add extra meaning beyond the schema's explanation for the serial parameter, meeting the minimum standard.
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 the tool's purpose with a specific verb ('Get') and resource ('PIV application status'), listing exactly what aspects are retrieved: management key type, PIN/PUK retries, certificate slots in use. It distinguishes itself from sibling tools like yubikey-fido-info and yubikey-openpgp-info by targeting the PIV subsystem.
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 context (when you need PIV status) but lacks explicit guidance on when to use this tool versus alternatives. No exclusions or alternative tool names are mentioned, leaving the agent to infer from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yubikey-piv-keys-infoA
Get private key metadata for a PIV slot: key type, origin (generated vs imported), PIN policy, touch policy
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No | Serial number of the YubiKey. Omit if only one key is connected. | |
| slot | Yes | PIV slot to query (e.g. 9a for Authentication, 9c for Digital Signature, 9d for Key Management, 9e for Card Authentication) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden for behavioral transparency. It names the outputs but does not explicitly state that the tool is read-only, what happens if a slot is empty, or if any authentication is required. For a simple query tool, this is adequate but not comprehensive.
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 a single sentence that immediately conveys the tool's purpose and what it returns. Every word is informative, with no fluff or repetition. It is front-loaded and efficient.
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?
Given that the schema fully documents parameters and the description lists the return fields, the tool definition is mostly complete. It lacks mention of hardware prerequisites or error conditions, but for a straightforward query tool, this is a minor gap. An output schema is absent but not critical here.
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 input schema provides complete descriptions for both parameters (serial and slot), so description coverage is 100%. The tool description adds no additional meaning beyond the schema, meeting the baseline of 3.
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 the tool gets private key metadata for a PIV slot, listing specific attributes (key type, origin, PIN policy, touch policy). This distinguishes it from sibling tools like yubikey-piv-info (likely general PIV info) and others focused on different YubiKey functions.
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 is for querying PIV slot key details, and sibling tools cover different areas (FIDO, OpenPGP, OTP), providing implicit context. However, there is no explicit guidance on when to use this versus yubikey-piv-info, nor any mention of prerequisites 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v1.0.0- First observed
yubikey-fido-credentials - First observed
yubikey-fido-fingerprints - First observed
yubikey-fido-info - First observed
yubikey-info - First observed
yubikey-list - First observed
yubikey-openpgp-info - First observed
yubikey-openpgp-keys-info - First observed
yubikey-otp-info - First observed
yubikey-piv-info - First observed
yubikey-piv-keys-info
TDQS
Scored across 10 tools
Each tool targets a distinct aspect of YubiKey functionality (FIDO, OpenPGP, OTP, PIV, general info), with no overlap. An agent can clearly differentiate them.
All tools follow the pattern 'yubikey-<subsystem>-<descriptor>', with only 'yubikey-list' and 'yubikey-info' being slightly standalone but still predictable.
10 tools cover the major YubiKey subsystems (FIDO, OpenPGP, OTP, PIV, listing, info) without being excessive or insufficient.
The tool set is entirely read-only, providing only info retrieval. Missing write operations (e.g., set PIN, generate keys, delete credentials) is a significant gap for management.
Maintenance
Related MCP Connectors
Read-only MCP server exposing a user ORANO library to their own AI agent.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Read-only MCP server for the OPERANT AI operating-agent calibration benchmark.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseCqualityDmaintenanceRead-only MCP server for querying a running Obsidian vault from agentic runtimes, exposing safe Obsidian CLI commands.551MIT
- AlicenseAqualityAmaintenanceLocal, no-API-key MCP server with seven defensive SecOps tools for AI agents: extract IOCs (IPs, URLs, domains, hashes, CVE IDs) from text with defang/refang, hash strings, estimate password entropy, and run CIDR/subnet checks. Built on FastMCP with no outbound network calls.9MIT
- AlicenseAqualityCmaintenanceA minimal, dependency-free MCP server that gives AI agents three real, read-only security-orchestration tools: cve_lookup, shodan_host_lookup, and nuclei_scan.3MIT
- FlicenseAqualityCmaintenanceA read-only MCP server that enables AI assistants to search files, list directories, retrieve system info, and get file metadata on the local file system.4-