Skip to main content
Glama

MCP Server Demo with FastMCP

A beginner-friendly Model Context Protocol (MCP) server built using the official FastMCP Python SDK.

This project demonstrates the core concepts of MCP by implementing custom Tools, Resources, and Prompts, and testing them with MCP Inspector.


πŸ“Œ Features

βœ… Custom MCP Tools

  • Addition

  • Subtraction

  • Multiplication

  • Division

  • Word Counter

  • Uppercase Converter

  • Lowercase Converter

  • Reverse Text

  • Current Time

  • Mock Weather


βœ… Dynamic Resources

  • Greeting Resource

  • About Project Resource


βœ… Prompt Templates

  • Greeting Prompt

  • Summarization Prompt

  • Explanation Prompt


Related MCP server: FastMCP Training Course Server

πŸ“‚ Project Structure

mcp-server-demo/
β”‚
β”œβ”€β”€ mcp.py
β”œβ”€β”€ pyproject.toml
β”œβ”€β”€ README.md
β”œβ”€β”€ uv.lock
└── .venv/

βš™οΈ Requirements

  • Python 3.11+

  • uv

  • MCP SDK

  • FastMCP


πŸ“¦ Installation

Clone the repository

git clone https://github.com/yourusername/mcp-server-demo.git

Go to the project

cd mcp-server-demo

Install dependencies

uv sync

▢️ Run the MCP Server

uv run mcp dev mcp.py

πŸ›  Available Tools

Tool

Description

add

Add two numbers

subtract

Subtract two numbers

multiply

Multiply two numbers

divide

Divide two numbers

word_count

Count words

uppercase

Convert text to uppercase

lowercase

Convert text to lowercase

reverse_text

Reverse text

current_time

Show current time

mock_weather

Return mock weather information


πŸ“„ Resources

Greeting

greeting://Suresh

Output

Hello, Suresh! Welcome to MCP.

About Project

about://project

Returns information about the project.


πŸ’¬ Prompt Templates

greet_user

Generate a greeting prompt.

summarize_prompt

Generate a summarization prompt.

explain_prompt

Generate an explanation prompt.


πŸ§ͺ Testing

Run the server

uv run mcp dev mcp.py

Open MCP Inspector

Test

  • Tools

  • Resources

  • Prompts


πŸ›  Tech Stack

  • Python

  • FastMCP

  • MCP SDK

  • MCP Inspector

  • uv


🎯 Learning Objectives

This project demonstrates

  • MCP Fundamentals

  • FastMCP

  • Tools

  • Resources

  • Prompt Templates

  • MCP Inspector

  • Python MCP Server Development


πŸ“Έ Screenshots

You can add screenshots of

  • MCP Inspector

  • Tools

  • Resources

  • Prompts


πŸš€ Future Improvements

  • File Reader Tool

  • JSON Formatter

  • CSV Analyzer

  • Markdown Converter

  • UUID Generator

  • Password Generator

  • Notes Manager

  • Weather API Integration

  • Calculator Suite

  • AI-powered Text Utilities


πŸ‘¨β€πŸ’» Author

Sureshkumar

GitHub: https://github.com/Sureshkumar8795/mcp-server-demo.git


πŸ“„ License

MIT License

Available Tools

10 tools
addA

Add two numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/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 discloses the core behavior (adds numbers) but does not mention return type, side effects, or prerequisites. Minimal but adequate for a trivial operation.

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?

Extremely concise: a single sentence that immediately conveys the tool's action. No wasted words.

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

Completeness4/5

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

For a simple tool with two integer inputs and an output schema likely showing the sum, the description is sufficient. Slightly more detail about the return value could improve completeness, but not necessary.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no extra meaning beyond the integer type. The parameter names 'a' and 'b' are generic; the description only implies they are numbers to add.

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

Purpose5/5

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

The description clearly states the verb 'Add' and the resource 'two numbers'. It is unambiguous and specific regarding the tool's purpose.

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

Usage Guidelines4/5

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

No explicit usage guidelines are given, but the simple nature of the tool and absence of siblings make the usage obvious. A minor deduction for lack of explicit when-to-use context.

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

current_timeA

Return the current local time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/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 clearly states 'local time,' which is a meaningful behavioral trait, but it does not specify whether this is server-local or client-local, or what format the output takes. The output schema may cover return format, but timezone ambiguity remains.

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 concise sentence with no wasted words. It is front-loaded with the essential action and result.

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

Completeness5/5

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

For a zero-parameter tool with an output schema and no meaningful side effects, the description is sufficient for an agent to select and invoke it correctly. Nothing additional is strictly required.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. There is no parameter semantics to clarify, and the description appropriately makes no parameter claims.

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

Purpose5/5

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

The description states a clear verb and resource: 'Return the current local time.' This distinguishes it from all listed siblings, which are arithmetic, text, or weather tools. No ambiguity about what the tool does.

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?

No explicit usage guidance or alternatives are mentioned. However, since no sibling provides time functionality, the intended use is strongly implied. The description would benefit from noting when UTC or a specific timezone is preferred, but this is not critical for selection.

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

divideB

Divide two numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, but it only restates the operation. It does not disclose dividend/divisor ordering, division-by-zero behavior, or rounding/precision semantics.

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?

One short sentence with no filler; the action is front-loaded and 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?

For a two-number division tool, the missing operand-order statement is a correctness-critical gap; the description also leaves division-by-zero behavior unspecified despite having no annotations to fall back on.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain the role of a and b. It does not even clarify that a is divided by b; it only repeats that both are numbers.

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

Purpose5/5

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

The description states the exact operation ('divide') and the resource ('two numbers'), making it clearly distinct from sibling math and text tools.

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

Usage Guidelines3/5

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

The intended use is implied by naming the operation, but the description gives no explicit guidance about when to prefer it over add/subtract/multiply or about edge cases such as modulo or integer division.

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

lowercaseA

Convert text to lowercase.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of disclosing behavior. It does state the core transformation, but it does not mention edge cases, locale/unicode handling, or any side effects. This is acceptable for a pure text transformation but leaves some behavioral details unspecified.

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 short sentence that directly states the operation. Every word earns its place, and the core function is front-loaded with zero filler.

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

Completeness4/5

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

For a tool with one required parameter, no nested objects, and an output schema, the description is nearly complete. It could mention alternatives or edge cases, but the simplicity of the operation makes this a minor gap.

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 single required parameter 'text' has no schema description, so coverage is 0%. The description 'Convert text to lowercase' indicates the text parameter is the input to transform, adding minimal but non-zero meaning beyond the schema structure.

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 states a specific verb and resource: 'Convert text to lowercase.' It clearly identifies the tool's function and is distinguishable from siblings like uppercase and reverse_text, though it does not explicitly call them out.

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

Usage Guidelines3/5

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

The description implies the tool should be used when lowercasing text is needed, but it provides no explicit when-to-use guidance or mention of alternatives. For a simple utility, this implied context is adequate but not explicit.

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

mock_weatherA

Return mock weather information.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. 'Return' indicates a read-only, side-effect-free operation and 'mock' signals synthetic/non-real data. However, it does not disclose whether the output is random, deterministic, or reflects real-world conditions, which could be relevant 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.

Conciseness4/5

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

The description is a single, front-loaded sentence with no filler or redundant wording. It is appropriately concise for a simple tool, though it sacrifices some beneficial detail about parameter usage and output behavior.

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

Completeness3/5

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

For a one-parameter mock tool with an output schema, the description is minimally sufficient but not complete. It lacks explicit guidance on the city parameter and any usage caveats. The presence of an output schema reduces the need to describe return values, but usage guidance is still absent.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not mention the 'city' parameter or explain how it is used. The property name and type are self-explanatory to an extent, but the description adds no parameter-level meaning and does not compensate for the missing schema descriptions.

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

Purpose5/5

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

Description states a clear action, 'Return', and a distinct resource, 'mock weather information'. It is easily distinguishable from sibling tools like add, word_count, and current_time. The word 'mock' also clarifies that the data is simulated, which is a useful differentiator.

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 this tool is for retrieving mock weather data, but it does not explicitly state when to use it versus alternatives. There is no guidance on when not to use it or mention of sibling tools. The separation from arithmetic and text tools is obvious, but the usage context is only implied.

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

multiplyA

Multiply two numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden, but for a pure arithmetic operation 'multiply two numbers' adequately implies a side-effect-free computation that returns the product. It does not explicitly say there are no side effects or describe edge cases, but the output schema covers return expectations and the operation is simple enough that nothing critical is hidden.

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 front-loaded sentence with no filler or redundant wording. Every word earns its place, and for a two-parameter arithmetic operation this is appropriately sized.

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

Completeness5/5

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

The tool is extremely simple, the input schema fully defines the two parameters, and an output schema exists. The concise description is complete for an agent to select and correctly invoke this tool; no additional context about authentication, side effects, or return values is necessary here.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. 'Two numbers' maps directly to the two required integer parameters, a and b, and multiplication is order-independent, so the mapping is sufficient for an agent to call the tool correctly. It does not name the parameters explicitly, but the schema already provides their titles and types.

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

Purpose5/5

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

The description states the operation precisely with a specific verb and object: 'Multiply two numbers.' It clearly distinguishes this tool from the arithmetic siblings add, subtract, and divide, and from the string/utility siblings.

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?

There is no explicit when-to-use or alternative guidance, but the intended use is strongly implied by the operation name and description. An agent can infer that multiply should be used for multiplication while add, subtract, and divide handle the other basic operations, though no exclusions are stated.

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

reverse_textA

Reverse a string.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/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. It accurately states the transformation but discloses no additional context such as Unicode handling, whitespace behavior, or whether the operation is side-effect-free. For a pure and simple function, this is adequate but minimal.

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 one short sentence with no filler. The operation is front-loaded and every word contributes meaning.

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

Completeness5/5

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

For a single-parameter pure string transformation with an output schema present, the description is complete enough. An agent can correctly invoke it with a text string and expect the reversed result without needing additional behavioral details.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. 'Reverse a string' maps naturally to the required `text` parameter, making its role clear, but the description adds no constraints, examples, or details beyond the schema's type information. It provides minimal but sufficient meaning.

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 uses a specific verb ('Reverse') and resource ('a string'), making the core operation unambiguous. It does not explicitly differentiate itself from sibling string tools like uppercase/lowercase/word_count, but the action is distinct enough to avoid confusion.

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?

Usage is implied by the tool name and description: use it when a string needs reversing. However, there is no explicit guidance about when not to use it or which sibling tool might be a better alternative for related tasks.

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

subtractC

Subtract two numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries full behavioral burden. It only says 'Subtract two numbers' and does not specify the order of operands (a - b vs b - a), nor whether it is a pure function with no side effects. For a subtraction tool, operand order is essential behavioral information.

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 extremely short and front-loaded with the operation. It contains no filler words. However, it is slightly under-specified for a subtraction operation where operand order matters, so it is efficient but not fully complete.

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?

While an output schema exists and the tool is simple, the description omits critical context for correct invocation: the order of subtraction. Since there are no annotations and no other documentation, an agent cannot safely infer whether the result is a - b or b - a.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate for the schema's lack of parameter documentation. The description adds no meaning to parameters a and bβ€”it does not state which is the minuend and which is the subtrahend.

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 states a clear operation ('Subtract') and resource ('two numbers'), and the tool name itself distinguishes it from siblings like add, multiply, and divide. However, it does not explicitly differentiate itself from siblings or clarify the order of subtraction, which matters for this operation.

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 about when to use this tool versus alternatives. There is no mention of context, exclusions, or situations where subtract is preferred over other arithmetic siblings.

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

uppercaseA

Convert text to uppercase.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden; 'Convert text to uppercase' fully states the transformation and implies a pure, side-effect-free operation. Nothing about the tool's behavior is hidden or surprising for this simple string function.

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?

A single four-word sentence states everything necessary with no filler. The operative verb and object are front-loaded, making the description immediately scannable.

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

Completeness5/5

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

With only one required string parameter and an existing output schema, the description plus schema leaves no ambiguity about how to invoke the tool or what it returns. The low complexity means no additional prerequisites, failure modes, or side effects need to be explained.

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 has one required 'text' string property with 0% description coverage. The description restates 'text' in context, showing it is the input to transform, but supplies no additional format, encoding, or edge-case semantics beyond what the schema's type and title already imply.

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 uses a specific verb ('Convert') and names the resource and result ('text' to 'uppercase'), so the tool's function is unambiguous. It does not explicitly distinguish itself from siblings like lowercase, but the operation is clear on its own.

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 sentence implies the tool is for any case where uppercase output is needed, and the schema confirms text is required. However, it provides no explicit when-not-to-use guidance or pointers to sibling tools, so usage context is only implied.

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

word_countB

Count the number of words.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/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. It states the core behavior clearly, but it does not disclose how words are tokenized or whether punctuation, newlines, or empty strings affect the result. There is no contradiction with any structured metadata.

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 sentence with no wasted words. It front-loads the action and is easy to parse quickly.

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

Completeness4/5

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

This is a very simple tool with one parameter, and an output schema is present, so return-value documentation is not required. The only notable gap is the lack of word-boundary details, which could matter for edge cases, but the description is otherwise complete enough for correct invocation.

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

Parameters3/5

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

Schema description coverage is 0%, and the description does not explicitly document the text parameter. However, with a single required string parameter named 'text' and a tool that counts words, the parameter's purpose is strongly implied. It adds minimal meaning beyond the schema but is sufficient for this simple case.

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 states a specific verb and resource: 'Count the number of words.' It clearly distinguishes word_count from siblings like uppercase, reverse_text, and arithmetic tools, even though it does not explicitly name alternatives or scope the input.

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 gives no guidance on when to use this tool versus alternatives, nor does it mention any preprocessing expectations like whitespace normalization. However, the name and siblings make its general role fairly obvious.

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. 10 tool updatesv0.1.0
    • First observedadd
    • First observedcurrent_time
    • First observeddivide
    • First observedlowercase
    • First observedmock_weather
    • First observedmultiply
    • First observedreverse_text
    • First observedsubtract
    • First observeduppercase
    • First observedword_count

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation5/5

Each tool performs a distinct, non-overlapping operation: arithmetic tools handle basic math, string tools handle text transformations, and time/weather are separate. No two tools could be confused for another.

Naming Consistency5/5

All tool names use lowercase, verb-first conventions with clear actions (add, subtract, multiply, divide, word_count, uppercase, etc.). Compound names use underscores consistently, maintaining a uniform style.

Tool Count5/5

With 10 tools covering arithmetic, string operations, time, and mock weather, the count is well-scoped for a demo server. Each tool has a clear purpose and none feel redundant or excessive.

Completeness4/5

The arithmetic set is complete with all four basic operations, and string operations cover common transformations. Missing operations like string concatenation or length are minor gaps for a demo, but the core surface is adequate.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A basic MCP server template that provides a foundation for building custom tools, resources, and prompts. Serves as a starting point for developers to create their own MCP server functionality.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    An educational MCP server example built with FastMCP that demonstrates how to expose tools, resources, and prompts to AI clients. Provides a learning foundation for building MCP servers with Python and integrating them with AI applications like IDEs and chatbots.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A simple MCP server demonstrating resources, tools, and prompts, including a greeting resource, an addition tool, and a calculation prompt.
    -