Skip to main content
Glama

learning-hour-mcp

Generate Learning Hour content for Technical Coaches using AI. Create structured practice sessions that help development teams master technical excellence through the 4C Learning Model.

What is this?

An MCP server that helps Technical Coaches run Learning Hours - structured 60-minute practice sessions where teams improve their coding skills through deliberate practice. It generates session plans, code examples, and can even create interactive Miro boards.

Related MCP server: Aindreyway MCP Codex Keeper

Who is this for?

  • Technical Coaches facilitating team learning sessions

  • Team Leads wanting to improve their team's technical practices

  • Developers organizing coding dojos or practice sessions

Installation

Prerequisites

  1. Claude Desktop - Install the desktop app

  2. Anthropic API Key - Sign up and create a key ($5 free credit for new accounts)

Complete Setup

Choose your preferred editor:

Claude Desktop

Add to your Claude Desktop configuration:

{
  "mcpServers": {
    "learning-hour": {
      "command": "npx",
      "args": ["-y", "learning-hour-mcp"],
      "env": {
        "ANTHROPIC_API_KEY": "your-anthropic-key",
        "MIRO_ACCESS_TOKEN": "your-miro-token-optional",
        "GITHUB_TOKEN": "your-github-token-optional"
      }
    }
  }
}

Configuration steps:

  1. Open Claude Desktop settings (cmd/ctrl + ,)

  2. Go to "Developer" → "Edit Config"

  3. Paste the configuration above

  4. Replace your-anthropic-key with your actual key

  5. Save and restart Claude Desktop

VSCode

Add to your VSCode settings.json:

{
  "mcp.servers": {
    "learning-hour": {
      "command": "npx",
      "args": ["-y", "learning-hour-mcp"],
      "env": {
        "ANTHROPIC_API_KEY": "your-anthropic-key",
        "MIRO_ACCESS_TOKEN": "your-miro-token-optional",
        "GITHUB_TOKEN": "your-github-token-optional"
      }
    }
  }
}

Configuration steps:

  1. Install the MCP VSCode Extension

  2. Open settings.json (Cmd/Ctrl+Shift+P → "Preferences: Open Settings (JSON)")

  3. Add the configuration above

  4. Replace tokens with your actual values

  5. Reload VSCode window (Cmd/Ctrl+Shift+P → "Developer: Reload Window")

Cursor

Add to your Cursor configuration:

{
  "mcpServers": {
    "learning-hour": {
      "command": "npx",
      "args": ["-y", "learning-hour-mcp"],
      "env": {
        "ANTHROPIC_API_KEY": "your-anthropic-key",
        "MIRO_ACCESS_TOKEN": "your-miro-token-optional",
        "GITHUB_TOKEN": "your-github-token-optional"
      }
    }
  }
}

Configuration steps:

  1. Open Cursor settings (Cmd/Ctrl + ,)

  2. Click on "Features" → "Claude" → "Advanced"

  3. Add the MCP server configuration

  4. Replace tokens with your actual values

  5. Restart Cursor

Required: Only ANTHROPIC_API_KEY is required. The other tokens enable additional features.

Quick Start

After installation, try this in Claude:

"Use the learning hour tools to create a session about the Extract Method refactoring"

Claude will generate a complete 60-minute session plan with:

  • Opening connection activity

  • Concept introduction

  • Hands-on coding exercise

  • Reflection and commitment

Available Tools

generate_session

Generate a complete Learning Hour session plan with activities following the 4C model (Connect, Concept, Concrete, Conclusion).

{
  "topic": "Feature Envy"
}

generate_code_example

Create before/after code examples for a specific topic.

{
  "topic": "Extract Method",
  "language": "typescript"
}

create_miro_board

Create a new Miro board or add frames to an existing board (requires MIRO_ACCESS_TOKEN).

{
  "sessionContent": { /* from generate_session */ },
  "existingBoardId": "optional-board-id"  // If provided, adds frames to existing board
}

list_miro_boards

List all Miro boards accessible with your token (requires MIRO_ACCESS_TOKEN).

{
  "limit": 50,  // Optional, max 50
  "cursor": "optional-pagination-cursor"
}

get_miro_board

Get details about a specific Miro board (requires MIRO_ACCESS_TOKEN).

{
  "boardId": "board-id-to-get"
}

delete_miro_board

Delete a Miro board (requires MIRO_ACCESS_TOKEN). Use with caution!

{
  "boardId": "board-id-to-delete",
  "confirm": true  // Required safety check
}

analyze_repository

Find real code examples in GitHub repositories (requires GITHUB_TOKEN).

analyze_tech_stack

Analyze a repository's technology stack to create team-specific content (requires GITHUB_TOKEN).

Optional Features

Enable Miro Board Creation

Transform your Learning Hour into a visual, interactive workshop board

Get a Miro token:

  • Go to Miro Apps

  • Create a new app (name it "Learning Hours")

  • Copy the access token

  • Add as MIRO_ACCESS_TOKEN in your config

Enable Repository Analysis

Find real code examples from your team's actual codebase

Create a GitHub Personal Access Token:

  • Name: "Learning Hour MCP"

  • Expiration: 90 days (recommended)

  • Permissions: repo (read access)

  • Add as GITHUB_TOKEN in your config

Learn More

Troubleshooting

"Tool not found" error: Make sure you restarted Claude Desktop after adding the configuration.

"Invalid API key": Check that you copied the entire key including any prefixes (sk-ant-...).

Miro board not creating: Check that your MIRO_ACCESS_TOKEN is valid and has board creation permissions.

Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

MIT

Available Tools

8 tools
analyze_repositoryC

Analyze a GitHub repository to find real code examples for Learning Hours

ParametersJSON Schema
NameRequiredDescriptionDefault
repositoryUrlYesGitHub repository URL to analyze
codeSmellYesType of code smell to find (e.g., 'Feature Envy', 'Long Method')

TDQS

C2.9/5.0
Behavior2/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 what the tool does but doesn't reveal important traits like whether it's read-only or mutative, what permissions are needed, how it handles errors, or the format of results. For a tool analyzing repositories, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It directly communicates the tool's function and goal, making it easy to understand at a glance.

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

Completeness2/5

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

Given the complexity of analyzing repositories and the lack of annotations and output schema, the description is incomplete. It doesn't explain what the analysis entails, what kind of output to expect, or any limitations. For a tool with two required parameters and no structured output information, more context is needed to guide effective use.

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

Parameters3/5

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

The schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional meaning beyond what's in the schema, such as explaining what constitutes a valid repository URL or providing more context about code smells. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('analyze') and resource ('GitHub repository') with a specific purpose ('to find real code examples for Learning Hours'). It distinguishes from most siblings like 'analyze_tech_stack' by focusing on code examples rather than technology analysis, though it doesn't explicitly contrast with 'generate_code_example' which might be related.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. While the purpose is clear, there's no mention of prerequisites, when not to use it, or how it differs from 'generate_code_example' which might create rather than find examples. The description implies usage for Learning Hours but lacks explicit context.

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

analyze_tech_stackC

Analyze a repository's technology stack to create team-specific Learning Hour content

ParametersJSON Schema
NameRequiredDescriptionDefault
repositoryUrlYesGitHub repository URL to analyze

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the action ('analyze') and outcome ('create team-specific Learning Hour content'), but lacks details on permissions, rate limits, side effects, or what the analysis entails (e.g., does it modify data, require authentication, or have limitations?). This is inadequate for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, well-structured sentence that efficiently conveys the tool's purpose without unnecessary words. It is front-loaded and every part earns its place, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of analyzing a tech stack and creating content, the description is incomplete. There's no output schema, and with no annotations, it fails to explain behavioral aspects like what the analysis returns, how 'Learning Hour content' is generated, or any dependencies. This leaves significant gaps for an AI agent to understand the tool fully.

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

Parameters3/5

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

The input schema has 100% description coverage, with 'repositoryUrl' documented as 'GitHub repository URL to analyze.' The description adds no additional parameter semantics beyond this, such as format examples or constraints. With high schema coverage, the baseline is 3, as the schema handles the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Analyze a repository's technology stack to create team-specific Learning Hour content.' It specifies the verb ('analyze'), resource ('repository's technology stack'), and intended outcome ('create team-specific Learning Hour content'). However, it doesn't explicitly distinguish this from sibling tools like 'analyze_repository' or 'generate_session', which might have overlapping functionality.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or compare it to sibling tools such as 'analyze_repository' or 'generate_session', which could be relevant for similar tasks. The agent must infer usage from the purpose alone.

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

create_miro_boardB

Create a new Miro board OR add frames to an existing board. This tool uses the Miro REST API to create boards with frames, sticky notes, text, and code blocks. It can create standalone boards or add content to existing boards.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionContentYesSession content from generate_session output
existingBoardIdNoOptional: ID of an existing Miro board to add frames to. If not provided, creates a new board.

TDQS

B3.1/5.0
Behavior2/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 mentions the tool uses the Miro REST API and can create or add content, but fails to detail critical aspects like required permissions, rate limits, whether changes are reversible, or what the response looks like. This is a significant gap for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is efficiently structured in two sentences, front-loaded with the core purpose and followed by implementation details. There is minimal waste, though it could be slightly more concise by integrating the API mention more seamlessly, but overall it earns its place without redundancy.

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

Completeness2/5

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

Given the tool's complexity as a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral traits like auth needs or error handling, and while it hints at parameters, it doesn't fully compensate for the lack of structured output information, making it inadequate for safe and effective use by an AI agent.

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 both parameters ('sessionContent' and 'existingBoardId'). The description adds some context by implying 'sessionContent' contains generated content for boards and 'existingBoardId' is optional for adding to existing boards, but it doesn't provide additional syntax or format details beyond what the schema offers, aligning with the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as creating new Miro boards or adding frames to existing ones, specifying it uses the Miro REST API and can include various content types like sticky notes and code blocks. However, it doesn't explicitly distinguish this from sibling tools like 'delete_miro_board' or 'get_miro_board' in terms of when to use each, which prevents a perfect score.

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 by mentioning it can create standalone boards or add to existing ones, but it lacks explicit guidance on when to choose this tool over alternatives like 'list_miro_boards' for viewing or 'delete_miro_board' for removal. No when-not-to-use scenarios or prerequisites are stated, leaving usage context somewhat vague.

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

delete_miro_boardC

Delete a Miro board (use with caution!)

ParametersJSON Schema
NameRequiredDescriptionDefault
boardIdYesID of the Miro board to delete
confirmYesMust be true to confirm deletion

TDQS

C2.9/5.0
Behavior2/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 mentions 'use with caution!' which hints at potential destructiveness, but fails to specify whether deletion is permanent, reversible, requires specific permissions, or has side effects (e.g., affecting linked data). This is inadequate for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is very concise (one sentence) and front-loaded with the core action, making it efficient. However, the cautionary note is tacked on without elaboration, which slightly reduces its structural clarity but doesn't significantly impact readability.

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

Completeness2/5

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

Given the tool's complexity (a destructive delete operation) and the lack of annotations and output schema, the description is incomplete. It doesn't cover behavioral traits, return values, or error conditions, leaving critical gaps for the agent to understand the tool's full impact and usage.

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 both parameters ('boardId' and 'confirm') clearly. The description adds no additional meaning about parameters beyond what the schema provides, such as format details or usage context, resulting in the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Delete') and resource ('a Miro board'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its siblings (like 'create_miro_board' or 'get_miro_board') beyond the obvious action difference, which prevents a perfect score.

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

Usage Guidelines2/5

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

The description includes a cautionary note ('use with caution!'), which implies this should be used carefully, but it provides no explicit guidance on when to use this tool versus alternatives (e.g., when deletion is appropriate vs. archiving) or any prerequisites. This leaves the agent with minimal context for decision-making.

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

generate_code_exampleB

Generate detailed before/after code examples for a learning topic

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesThe learning topic (e.g., 'Feature Envy', 'DRY Principle')
languageNoProgramming language for examples (default: javascript)javascript

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool generates examples but doesn't describe output format, potential rate limits, authentication needs, or error handling. For a tool with no annotations, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without unnecessary details. It uses minimal words to convey the essential action and scope, earning its place with zero waste.

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

Completeness3/5

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

Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is minimally adequate. It covers the purpose but lacks behavioral details and usage guidelines. Without annotations or output schema, more context on what the generated examples look like would improve completeness.

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 both parameters ('topic' and 'language') with clear descriptions. The description adds no additional parameter semantics beyond what the schema provides, such as example topics beyond those listed or language constraints. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Generate detailed before/after code examples for a learning topic.' It specifies the verb ('generate'), resource ('code examples'), and scope ('before/after' for learning topics). However, it doesn't explicitly differentiate from sibling tools like 'analyze_repository' or 'generate_session', which could have overlapping educational purposes.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or compare it to sibling tools like 'generate_session' or 'analyze_tech_stack' that might serve similar educational contexts. Usage is implied only by the purpose statement.

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

generate_sessionC

Generate comprehensive Learning Hour content for Technical Coaches

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesThe learning topic (e.g., 'Feature Envy', 'DRY Principle')
styleNoPresentation style: slide (default), vertical, or workshopslide

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool generates content but doesn't describe what 'comprehensive' entails (e.g., length, format, depth), whether it's a one-time generation or reusable, or any limitations (e.g., topic scope, output format). This is inadequate for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the core purpose. It avoids unnecessary words and gets straight to the point, though it could be slightly more structured by including key details like output format or usage context.

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

Completeness2/5

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

Given the complexity of generating educational content, no annotations, and no output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., text, slides, interactive materials), quality expectations, or any behavioral traits like rate limits or error handling. This leaves significant gaps for the agent.

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 both parameters ('topic' and 'style') with descriptions and defaults. The description doesn't add any additional meaning beyond what's in the schema, such as examples of 'comprehensive' content or how 'style' affects output. Baseline 3 is appropriate when the schema handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Generate comprehensive Learning Hour content') and the target audience ('for Technical Coaches'), which provides a specific verb+resource combination. However, it doesn't explicitly differentiate this tool from sibling tools like 'generate_code_example' or 'create_miro_board', which might also be used in educational contexts, so it doesn't fully distinguish from alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context (e.g., for coaching sessions vs. self-study), or exclusions (e.g., not for non-technical topics). This leaves the agent with minimal direction on appropriate usage scenarios.

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

get_miro_boardC

Get details about a specific Miro board

ParametersJSON Schema
NameRequiredDescriptionDefault
boardIdYesID of the Miro board to get details for

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states it 'gets details' but doesn't disclose what details are returned, error conditions, authentication needs, rate limits, or whether it's read-only (implied but not confirmed). This is inadequate for a tool with zero annotation coverage, lacking critical context for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, clear sentence with zero waste—it directly states the tool's function without fluff. It's appropriately sized for a simple retrieval tool and front-loaded with the core action, making it easy to parse quickly. Every word earns its place.

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

Completeness2/5

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

Given the tool's simplicity (1 parameter, 100% schema coverage) but lack of annotations and output schema, the description is incomplete. It doesn't explain what 'details' are returned, potential errors, or behavioral traits, leaving the AI agent under-informed. For a retrieval tool with no structured output, more context is needed to be fully helpful.

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%, with the parameter 'boardId' fully documented in the schema. The description adds no additional meaning beyond implying retrieval for a 'specific Miro board', which aligns with the schema. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't compensate or add extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get details') and resource ('about a specific Miro board'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'list_miro_boards' or 'create_miro_board', but the specificity of 'specific Miro board' versus 'list' implies scope distinction. No tautology or misleading elements are present.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a board ID), contrast with 'list_miro_boards' for browsing, or specify use cases like retrieving metadata for editing. Usage is implied by the name but not explicitly stated, leaving gaps for an AI agent.

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

list_miro_boardsB

List all Miro boards accessible with the current token

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of boards to return (default: 50, max: 50)
cursorNoCursor for pagination

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states it's a list operation, implying read-only behavior, but lacks details on permissions needed, rate limits, pagination behavior beyond the cursor parameter, or what 'accessible' entails. This leaves significant gaps for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part earns its place by specifying action, resource, and scope concisely.

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

Completeness3/5

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

Given no annotations, no output schema, and 2 parameters with full schema coverage, the description is minimally adequate. It covers the basic purpose but lacks behavioral details like response format, error handling, or deeper context needed for a list operation in a multi-tool environment.

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 fully documents the limit and cursor parameters. The description adds no additional parameter semantics beyond what's in the schema, such as default behavior or usage context. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and resource ('Miro boards'), specifying scope as 'all... accessible with the current token'. It distinguishes from siblings like create_miro_board and delete_miro_board by indicating a read operation, though it doesn't explicitly differentiate from get_miro_board which might retrieve a single board.

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 for retrieving multiple boards accessible to the user, but provides no explicit guidance on when to use this versus alternatives like get_miro_board (for a single board) or create_miro_board. It mentions the token context, which is helpful but not comprehensive.

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.

  1. 9 tool updatesv1.0.0
    • Addedanalyze_repository
    • Addedanalyze_tech_stack
    • Changedcreate_miro_board3 fields changed
      • removedInput schema / properties / accessToken
        Removed value: -{
        -  "description": "Miro access token for API authentication",
        -  "type": "string"
        -}
      • addedInput schema / properties / existingBoardId
        Added value: +{
        +  "description": "Optional: ID of an existing Miro board to add frames to. If not provided, creates a new board.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "sessionContent",
        -  "accessToken"
        -]New value: +[
        +  "sessionContent"
        +]
    • Addeddelete_miro_board
    • Changedgenerate_session1 field changed
      • addedInput schema / properties / style
        Added value: +{
        +  "default": "slide",
        +  "description": "Presentation style: slide (default), vertical, or workshop",
        +  "type": "string"
        +}
    • Removedget_miro_auth_url
    • Addedget_miro_board
    • Addedlist_miro_boards
    • Removedtest_miro_token
  2. 5 tool updates
    • First observedcreate_miro_board
    • First observedgenerate_code_example
    • First observedgenerate_session
    • First observedget_miro_auth_url
    • First observedtest_miro_token

TDQS

B3.4/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between analyze_repository and analyze_tech_stack, as both analyze GitHub repositories for Learning Hour content. However, their specific focuses (code examples vs. tech stack analysis) help differentiate them, and the other tools target clear, non-overlapping functions like Miro board management and content generation.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as analyze_repository, create_miro_board, and generate_session. This uniformity makes the tool set predictable and easy for an agent to navigate, with no deviations in naming conventions.

Tool Count5/5

With 8 tools, the count is well-scoped for the server's purpose of supporting Learning Hour creation and management. Each tool serves a specific role, from repository analysis to Miro board operations, without feeling excessive or insufficient for the domain.

Completeness4/5

The tool set covers key aspects of Learning Hour workflows, including content generation, repository analysis, and Miro board CRUD operations. A minor gap exists in the lack of update tools for Miro boards or generated content, but agents can work around this by deleting and recreating as needed, and core functionalities are well-represented.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    An MCP server that allows coding agents to look up contextual rules and patterns on demand, providing just-in-time guidance for specific tasks like writing tests or authoring UI.
    2
    8
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that provides persistent memory and contextual awareness to language models, enabling project onboarding, recall of architectural rules, and code consistency across sessions.
    32
    MIT