example-mcp-server-stdio
Enables testing of the MCP server by spawning it as a child process to validate its I/O behavior, supporting various test modes including coverage reporting.
Provides tools for generating Markdown-formatted explanations of calculations, practice problems, and tutoring content through various calculator functions.
Used to visualize and document the sequence diagram of parent-child process communication in the MCP server documentation.
Serves as the runtime environment for the MCP server, managing the process-based architecture and handling stdin/stdout communication streams.
Provides type safety and structure for the MCP server implementation, with the server being built using TypeScript 5.x.
Implements rigorous validation of incoming request parameters through Zod schemas to ensure type safety and prevent injection-style attacks.
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., "@example-mcp-server-stdiocalculate 15 * 3 + 7"
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.
example-mcp-stdio
production-ready, learning-focused starter for MCP servers over STDIO using TypeScript SDK v2.
part of a series: stdio (you are here) · stateless · stateful · sse
what it does
runs an MCP server that communicates exclusively over STDIO (stdin/stdout JSON-RPC, stderr for logs)
ships two tools (
echo,sum_numbers), two resources (starter-checklist,starter-lesson), and one prompt (scaffold-plan)loads features automatically from
src/features/using a file-based registrar patternincludes a scaffold CLI to generate new tools, resources, and prompts from templates
enforces quality with a full pipeline: typecheck, lint, format, build, smoke test
Related MCP server: mcp-serverTest
quick start
git clone https://github.com/yigitkonur/example-mcp-stdio.git
cd example-mcp-stdio
npm cirun in development mode:
npm run devor build and run:
npm run build && npm startvalidate everything:
npm run pipelinescaffold cli
generate new feature modules with a single command:
node dist/index.js create tool my-tool
node dist/index.js create resource my-resource --uri my://resource
node dist/index.js create prompt my-promptgenerated files land in src/features/<kind>/ and are picked up automatically on next server start.
full reference: docs/03-scaffold-cli.md
documentation
doc | what it covers |
reading order and audience guide | |
prerequisites, install, first run, Docker | |
module layout, registrar pattern, STDIO transport model | |
serve and create commands, options, naming conventions | |
vendoring strategy, v2 patterns, migration notes | |
pipeline breakdown, smoke test, mcp-cli verification |
sdk v2 context
this repo targets the TypeScript SDK v2 pre-release (@modelcontextprotocol/server). because v2 is not yet published to npm, the package is vendored as a tarball in vendor/. refresh it with npm run vendor:sdk:update. see docs/04-sdk-v2-notes.md for details.
license
MIT
Available Tools
8 toolsadvanced_calculateAdvanced CalculateB
Perform advanced mathematical operations (factorial, log, combinations, permutations)
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | ||
| n | Yes | Primary input | |
| k | No | Secondary input for combinations/permutations | |
| base | No | Base for logarithm (default: e) |
Output Schema
| Name | Required | Description |
|---|---|---|
| value | Yes | |
| expression | Yes | |
| calculationId | Yes |
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 of behavioral disclosure. While it mentions the types of operations, it doesn't describe important behavioral aspects: error handling (e.g., for invalid inputs like negative factorial), computational limits, whether operations are exact or approximate, or what the output format looks like. The description is purely functional without behavioral context.
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 extremely concise - a single sentence that efficiently lists all supported operations. Every word earns its place by specifying the tool's scope. The front-loaded structure immediately communicates the tool's purpose 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?
Given that an output schema exists (per context signals), the description doesn't need to explain return values. However, for a mathematical tool with 4 parameters and no annotations, the description should ideally provide more context about operation specifics, constraints, or examples. The description is minimally adequate but leaves gaps in understanding the tool's full behavior and limitations.
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?
With 75% schema description coverage (3 of 4 parameters have descriptions), the schema already documents most parameters well. The description adds minimal value beyond the schema - it lists the operation types (which the enum already shows) but doesn't explain parameter relationships (e.g., that 'k' is only needed for combinations/permutations, or that 'base' is optional for log). Baseline 3 is appropriate given the good schema coverage.
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: 'Perform advanced mathematical operations' with specific examples (factorial, log, combinations, permutations). This distinguishes it from simpler calculation tools like 'calculate' or 'batch_calculate' by specifying 'advanced' operations. However, it doesn't explicitly differentiate from 'solve_math_problem' which might also handle similar operations.
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. With sibling tools like 'calculate', 'batch_calculate', 'solve_math_problem', and 'calculator_assistant', there's no indication of when this 'advanced' tool is preferred over those other mathematical tools. The description only lists operations without context about appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_calculateBatch CalculateC
Perform multiple calculations in a single request
| Name | Required | Description | Default |
|---|---|---|---|
| calculations | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions performing 'multiple calculations in a single request' which implies a batch operation, but doesn't disclose behavioral traits like error handling (e.g., if one calculation fails), performance characteristics, rate limits, authentication needs, or what the output looks like. For a tool with no annotations, this leaves significant gaps in understanding how it behaves.
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 extremely concise with a single sentence: 'Perform multiple calculations in a single request'. It's front-loaded with the core purpose, has zero waste, and every word earns its place. It's appropriately sized for a simple tool description.
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 has an output schema (which means return values are documented elsewhere), no annotations, and a simple input schema with one parameter, the description is minimally complete. It states what the tool does but lacks context about when to use it, behavioral details, or how it fits with siblings. For a batch calculation tool with output schema, it's adequate but has clear gaps in guidance and transparency.
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 description adds no parameter semantics beyond what the input schema provides. Schema description coverage is 0%, but the description doesn't compensate by explaining the 'calculations' array structure, the meaning of 'a', 'b', 'op', or the enum values. However, since there's only one parameter (calculations array) and the schema is well-defined with properties and enums, the baseline is 3 as the schema does the heavy lifting despite 0% coverage.
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 the tool's purpose as 'Perform multiple calculations in a single request', which is clear but vague. It specifies the verb 'perform' and resource 'calculations', but doesn't distinguish it from siblings like 'calculate' or 'advanced_calculate' beyond the batch aspect. The purpose is understandable but lacks specificity about what types of calculations or how it differs from alternatives.
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 doesn't mention when to prefer batch_calculate over calculate, advanced_calculate, or other sibling tools. There's no context about use cases, prerequisites, or exclusions. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculateCalculateC
Perform a basic arithmetic calculation
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First operand | |
| b | Yes | Second operand | |
| op | Yes | Operation to perform | |
| stream | No | If true, emit progress notifications |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| value | Yes |
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 of behavioral disclosure. 'Perform a basic arithmetic calculation' implies a read-only operation but doesn't specify if it's stateless, has side effects, requires permissions, or handles errors. It mentions nothing about the 'stream' parameter's behavior (progress notifications), rate limits, or output format, leaving significant gaps in understanding how the tool behaves beyond its basic function.
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, efficient sentence: 'Perform a basic arithmetic calculation'. It's front-loaded with the core purpose, has zero wasted words, and is appropriately sized for a simple tool. Every part of the sentence earns its place by conveying the essential action and resource.
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 low complexity (basic arithmetic) and the presence of a rich input schema (100% coverage) and output schema, the description is minimally adequate. However, with no annotations and multiple sibling tools, it fails to provide context on differentiation or behavioral details like error handling. The description covers the 'what' but lacks the 'when' and 'how' needed for full completeness in this environment.
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 description coverage is 100%, with clear descriptions for all parameters (e.g., 'First operand', 'Operation to perform', 'If true, emit progress notifications'). The description adds no additional meaning beyond what the schema provides, as it doesn't explain parameter interactions, constraints, or examples. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
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 'Perform a basic arithmetic calculation' clearly states the tool's purpose with a specific verb ('perform') and resource ('arithmetic calculation'). However, it doesn't distinguish this from sibling tools like 'advanced_calculate', 'batch_calculate', or 'solve_math_problem', leaving the scope of 'basic' ambiguous. The description is functional but lacks differentiation from alternatives.
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 its siblings. With tools like 'advanced_calculate', 'batch_calculate', and 'solve_math_problem' available, there's no indication of what makes this tool 'basic' or when to choose it over others. No context, exclusions, or alternatives are mentioned, leaving usage decisions unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculator_assistantCalculator AssistantC
Interactive calculator assistance with context-aware help
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The user query or question | |
| context | No | Additional context |
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 of behavioral disclosure. However, it only states 'Interactive calculator assistance with context-aware help', which is too vague to convey any behavioral traits. It doesn't specify whether this is a read-only or mutative operation, what kind of help is provided (e.g., explanations, calculations, or troubleshooting), or any constraints like rate limits or authentication needs. This lack of detail makes the tool's behavior opaque.
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 and front-loaded, consisting of a single phrase 'Interactive calculator assistance with context-aware help'. It wastes no words, though it could be more informative. However, its brevity is appropriate for a simple tool, and it doesn't include unnecessary details, earning a high score for efficiency.
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 lack of annotations and output schema, the description is incomplete for a tool with 2 parameters and multiple sibling tools. It doesn't explain what the tool returns, how it interacts with the provided parameters, or its role relative to other calculator tools. While the schema covers parameters, the overall context is insufficient for an AI agent to fully understand the tool's function and application.
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, with parameters 'query' and 'context' clearly documented in the schema itself. The description adds no additional meaning beyond what the schema provides, as it doesn't elaborate on what constitutes a valid 'query' or how 'context' should be used. Given the high schema coverage, the baseline score of 3 is appropriate, as the schema handles the parameter documentation adequately.
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 'Interactive calculator assistance with context-aware help' is vague and tautological, essentially restating the tool name 'calculator_assistant' with minor elaboration. It doesn't specify what the tool actually does (e.g., answer math questions, provide step-by-step solutions, or offer usage tips), nor does it distinguish it from sibling tools like 'calculate', 'solve_ath_problem', or 'explain_formula'. This leaves the purpose unclear beyond a generic calculator-related function.
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 doesn't mention any specific contexts, prerequisites, or exclusions, and fails to differentiate it from sibling tools such as 'calculate' or 'solve_ath_problem'. This absence of usage instructions makes it difficult for an AI agent to select this tool appropriately among the available options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
demo_progressDemo ProgressB
Demonstrate progress notifications with 5 updates
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| progressSteps | Yes |
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 of behavioral disclosure. It mentions 'progress notifications' and '5 updates', implying a sequence of updates, but doesn't specify whether this is a read-only demonstration, if it modifies any state, what triggers the updates, or any rate limits or side effects. For a tool with zero annotation coverage, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence: 'Demonstrate progress notifications with 5 updates'. It is front-loaded with the core purpose and includes a specific detail (5 updates) without any redundant or verbose language. Every word 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?
Given the tool's simplicity (0 parameters, output schema exists), the description is minimally adequate. It states what the tool does but lacks context on usage, behavior, or output. The output schema likely covers return values, so the description doesn't need to explain those. However, for a demonstration tool with no annotations, more behavioral context would be helpful.
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 0 parameters with 100% coverage, so no parameter information is needed. The description doesn't add any parameter details, which is appropriate here. Baseline is 4 for 0 parameters, as the schema fully covers the absence of inputs.
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: 'Demonstrate progress notifications with 5 updates'. It specifies the verb ('Demonstrate') and resource ('progress notifications'), and provides a concrete detail about the number of updates. However, it doesn't explicitly differentiate from sibling tools like 'maintenance_mode' or 'advanced_calculate', which could also involve progress or notifications.
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 doesn't mention any specific contexts, prerequisites, or exclusions, nor does it refer to sibling tools. The agent must infer usage based solely on the tool name and description, which is insufficient for informed selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_formulaExplain FormulaC
Explain a mathematical formula interactively
| Name | Required | Description | Default |
|---|---|---|---|
| formula | Yes | The formula to explain | |
| examples | No | Include examples |
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 of behavioral disclosure. While 'explain' and 'interactively' imply a read-only, informative operation, the description doesn't clarify what 'interactively' entails (e.g., step-by-step guidance, visual aids, or user prompts), nor does it mention any limitations like formula complexity, supported notations, or potential errors. This leaves significant gaps in understanding the tool's behavior.
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 extremely concise—a single sentence with no wasted words. It's front-loaded with the core purpose ('explain a mathematical formula') and includes the key behavioral trait ('interactively') efficiently. Every word 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool with two parameters and interactive behavior. It doesn't explain what the output looks like (e.g., text explanation, steps, or visual elements), how 'interactively' manifests, or any constraints on formula input. For a tool that likely involves complex processing, this leaves too much unspecified for effective agent use.
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 description coverage is 100%, meaning both parameters ('formula' and 'examples') are fully documented in the schema. The description adds no additional semantic information about these parameters beyond what's in the schema, such as expected formula formats or what types of examples are included. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't detract.
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 ('explain') and resource ('mathematical formula'), and the adverb 'interactively' adds useful context about the nature of the explanation. However, it doesn't explicitly differentiate this from sibling tools like 'solve_math_problem' or 'calculator_assistant', which likely have overlapping domains.
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. With sibling tools like 'solve_math_problem' and 'calculator_assistant' available, there's no indication of whether this tool is for educational purposes, step-by-step breakdowns, or other specific contexts where it would be preferred over those alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maintenance_modeMaintenance ModeB
Simulate enabling or disabling tools for maintenance (demo only)
| Name | Required | Description | Default |
|---|---|---|---|
| toolName | Yes | Tool to simulate managing | |
| enable | Yes | Enable (true) or disable (false) the tool |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| enabled | Yes | |
| message | Yes | |
| toolName | Yes |
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 of behavioral disclosure. It mentions 'simulate' and 'demo only', which hints that this is a non-destructive, mock operation, but it doesn't clarify what 'simulate' entails (e.g., whether it actually affects tool functionality, returns mock data, or has side effects). For a tool with no annotations, this leaves gaps in understanding its real-world impact and safety.
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, efficient sentence: 'Simulate enabling or disabling tools for maintenance (demo only)'. It's front-loaded with the core purpose and includes essential context without unnecessary details. Every word earns its place, making it highly concise and well-structured.
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 low complexity (2 parameters, 100% schema coverage, and an output schema exists), the description is reasonably complete. It covers the purpose and demo context, and with an output schema, it doesn't need to explain return values. However, for a tool with no annotations, it could benefit from more behavioral details (e.g., what 'simulate' means operationally) to be fully comprehensive.
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 description doesn't add any parameter-specific information beyond what the input schema provides. With 100% schema description coverage, the schema already documents 'toolName' and 'enable' parameters clearly, including enum values for 'toolName'. The baseline score of 3 is appropriate as the schema does the heavy lifting, and the description doesn't compensate with additional semantics.
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: 'Simulate enabling or disabling tools for maintenance (demo only)'. It specifies the action ('enabling or disabling') and the target ('tools'), though it doesn't explicitly differentiate from sibling tools like 'demo_progress' that might also be for demos. The mention of 'maintenance' and 'demo only' adds context but doesn't fully distinguish it from other demo-related tools.
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 with 'demo only', suggesting this tool is for testing or demonstration purposes rather than production. However, it doesn't provide explicit guidance on when to use this vs. alternatives like 'demo_progress' or other sibling tools, nor does it specify prerequisites or exclusions. The implied context is helpful but lacks detailed alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_math_problemSolve Math ProblemC
Solve a word problem or mathematical expression (may request user input)
| Name | Required | Description | Default |
|---|---|---|---|
| problem | Yes | The math problem to solve | |
| showSteps | No | Show step-by-step solution |
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 mentions 'may request user input', which is useful context about potential interactive behavior. However, it doesn't address important aspects like whether this is a read-only operation, computational limits, error handling, or output 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 very concise - just one sentence that efficiently communicates the core functionality. It's appropriately sized and front-loaded with the main purpose, though the parenthetical about user input could be integrated more smoothly.
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 annotations and no output schema, the description is insufficient. It doesn't explain what kind of output to expect, what mathematical domains are supported, computational limitations, or how the 'may request user input' feature works. The agent would be left guessing about important behavioral aspects.
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 both parameters thoroughly. The description doesn't add any additional meaning about the parameters beyond what's in the schema. The baseline of 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Solve a word problem or mathematical expression' with the additional context 'may request user input'. This specifies both the verb ('solve') and the resource ('math problem'), though it doesn't explicitly differentiate from sibling tools like 'calculate' or 'advanced_calculate'.
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 guidance is provided on when to use this tool versus alternatives like 'calculate', 'advanced_calculate', or 'explain_formula'. The description only states what the tool does, not when it's appropriate or what distinguishes it from similar tools in the server.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v1.0.0- Changed
demo_progress1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
8 tool updates
- First observed
advanced_calculate - First observed
batch_calculate - First observed
calculate - First observed
calculator_assistant - First observed
demo_progress - First observed
explain_formula - First observed
maintenance_mode - First observed
solve_math_problem
TDQS
The tools have some overlap in mathematical functionality, such as 'calculate', 'advanced_calculate', and 'solve_math_problem', which could cause confusion about which to use for specific tasks. However, descriptions help differentiate them by scope (e.g., basic vs. advanced, interactive vs. batch). The non-math tools like 'demo_progress' and 'maintenance_mode' are clearly distinct, preventing complete ambiguity.
The naming is mixed with some consistency in verb_noun patterns like 'explain_formula' and 'solve_math_problem', but deviations exist such as 'calculator_assistant' (noun_verb) and 'demo_progress' (verb_noun with a prefix). There's no chaotic naming, but the lack of a uniform convention reduces predictability.
With 8 tools, the count is reasonable for a server focused on mathematical calculations and demonstrations. It's slightly over-scoped due to overlapping math tools, but each tool serves a purpose, and the number aligns well with the apparent domain without being excessive or too thin.
The server covers a range of mathematical operations from basic to advanced, including interactive and batch features, but there are notable gaps such as no clear update or delete operations for stored calculations or data. The inclusion of demo tools like 'maintenance_mode' suggests a focus on functionality rather than full lifecycle coverage, leaving the surface incomplete for broader use cases.
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
A simple MCP server built with FastMCP and python
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server allowing any and all command execution over CMD218125MIT
- -
- -
- FlicenseNot gradedqualityDmaintenancestateful MCP server with Redis sessions, event sourcing, and horizontal scaling1-
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/yigitkonur/example-mcp-server-stdio'
If you have feedback or need assistance with the MCP directory API, please join our Discord server