Skip to main content
Glama
vipankumar87

MCP Multi-Tool Server

by vipankumar87

MCP Multi-Tool Server

A comprehensive Model Context Protocol (MCP) server built with FastMCP that provides calculator tools, document resources, and prompt templates. This server demonstrates multiple MCP capabilities including tools, resources, and prompts in a single implementation.

Features

🧮 Calculator Tools

  • Basic Operations: Addition, subtraction, multiplication, division

  • Advanced Math: Power, square root, factorial calculations

  • Utility Functions: Percentage calculations

  • Error Handling: Division by zero protection, negative square root protection, factorial range limits

šŸ“– Document Resources

  • TypeScript SDK Resource: Access to MCP TypeScript SDK documentation

  • Dynamic File Reading: Reads from configurable file paths

  • Error Handling: Graceful handling of missing files

šŸ“ Prompt Templates

  • Meeting Summary Template: Executive meeting summary generator

  • Variable Substitution: Dynamic template variable replacement

  • Structured Output: Professional meeting summary format

Related MCP server: TypeScript MCP Server Boilerplate

Quick Start

Prerequisites

  • Python 3.12 or later

  • uv package manager

Installation

  1. Clone the repository

    git clone <your-repo-url>
    cd mcp-multi-tool-server
  2. Install dependencies

    uv sync
  3. Test the server

    uv run mcp dev server.py

    Open http://localhost:3000 to test the server in MCP Inspector.

Usage

Calculator Tools

The server provides 8 calculator tools:

Tool

Description

Example

add

Add two numbers

add(5, 3) → 8

subtract

Subtract second from first

subtract(10, 4) → 6

multiply

Multiply two numbers

multiply(6, 7) → 42

divide

Divide first by second

divide(15, 3) → 5

power

Raise to power

power(2, 8) → 256

square_root

Calculate square root

square_root(16) → 4

factorial

Calculate factorial

factorial(5) → 120

calculate_percentage

Calculate percentage

calculate_percentage(200, 15) → 30

TypeScript SDK Resource

Access the TypeScript SDK documentation:

# Resource URI: file://typesdk
# Returns the contents of the TypeScript SDK documentation

Configuration: Update DESKTOP_FILE_PATH in server.py to point to your documentation file:

DESKTOP_FILE_PATH = r"C:\Users\VipanKumar\Desktop\typesdk.md"

Meeting Summary Prompt

Generate structured meeting summaries:

# Prompt: meeting_summary
# Required parameters:
# - meeting_date: Date of the meeting
# - meeting_title: Title or purpose of the meeting  
# - transcript: Meeting transcript or notes

Output Structure:

  • Overview (purpose, participants, topics)

  • Key Decisions (major decisions, strategic changes)

  • Action Items (next steps, responsibilities, deadlines)

  • Follow-up Required (pending discussions, future meetings)

Claude Desktop Integration

Configuration

Add to your Claude Desktop config file:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "multi-tool-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/your/server/directory",
        "run",
        "python",
        "server.py"
      ],
      "env": {
        "UV_PROJECT_ENVIRONMENT": ".venv"
      }
    }
  }
}

Restart Claude Desktop

After updating the configuration, restart Claude Desktop to load the server.

Development

Project Structure

mcp-multi-tool-server/
ā”œā”€ā”€ server.py                 # Main server implementation
ā”œā”€ā”€ templates/
│   └── Prompt.md             # Meeting summary template
ā”œā”€ā”€ pyproject.toml            # Project configuration
ā”œā”€ā”€ claude_desktop_config.json # Claude Desktop config example
ā”œā”€ā”€ README.md                 # This file
└── .venv/                    # Virtual environment

Testing

MCP Inspector (Recommended)

uv run mcp dev server.py

Direct Server Testing

python server.py

Testing Individual Components

  1. Calculator Tools: Use MCP Inspector to call each tool with test parameters

  2. Resource Access: Check the resource tab in MCP Inspector for file://typesdk

  3. Prompt Templates: Test the meeting_summary prompt with sample data

Customization

Adding New Calculator Tools:

@mcp.tool()
def new_calculation(param1: float, param2: float) -> float:
    """Description of the new calculation."""
    return param1 + param2  # Your calculation logic

Adding New Resources:

@mcp.resource("file://your-resource")
async def get_your_resource() -> str:
    """Description of your resource."""
    # Your resource logic
    return "Resource content"

Adding New Prompts:

@mcp.prompt("your_prompt")
async def your_prompt(param1: str, param2: str) -> str:
    """Description of your prompt."""
    # Your prompt logic
    return f"Processed: {param1}, {param2}"

Error Handling

The server includes comprehensive error handling:

  • Division by Zero: Returns appropriate error message

  • Negative Square Roots: Prevents invalid operations

  • Factorial Limits: Restricts calculations to reasonable ranges (n ≤ 100)

  • File Not Found: Graceful handling of missing resource files

  • Template Errors: Proper error reporting for prompt template issues

Configuration Options

File Paths

Update these paths in server.py for your environment:

# TypeScript SDK documentation path
DESKTOP_FILE_PATH = r"C:\Users\YourUser\Desktop\typesdk.md"

# Prompt template path (relative to server.py)
PROMPT_TEMPLATE_PATH = os.path.join(os.path.dirname(__file__), "templates", "Prompt.md")

Server Name

Change the server name in server.py:

mcp = FastMCP("Your Server Name")

Troubleshooting

Common Issues

Server won't start:

  • Check Python version (3.12+ required)

  • Verify uv installation: uv --version

  • Check virtual environment: uv sync

Tools not appearing in Claude:

  • Verify Claude Desktop config file location

  • Check file paths in configuration

  • Restart Claude Desktop after config changes

Resource file not found:

  • Verify DESKTOP_FILE_PATH points to correct file

  • Check file permissions

  • Ensure file exists and is readable

Prompt template errors:

  • Verify templates/Prompt.md exists

  • Check template syntax

  • Ensure proper variable placeholders: {{ variable_name }}

Debug Mode

Run with debug output:

uv run python server.py --debug

Contributing

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature-name

  3. Make your changes

  4. Add tests for new functionality

  5. Submit a pull request

License

This project is licensed under the MIT License. See LICENSE file for details.

Resources


Built with FastMCP - A high-level Python library for building MCP servers.

Available Tools

8 tools
addB

Add two numbers together.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

TDQS

B3.2/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 action ('add two numbers together') but doesn't cover traits like error handling (e.g., for non-numeric inputs), performance, or output format. This is a basic description with 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: 'Add two numbers together.' It is front-loaded with the core action and wastes no words, making it highly concise and well-structured for its simplicity.

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 low complexity (basic arithmetic), no annotations, no output schema, and simple parameters, the description is minimally complete. It states what the tool does but lacks details on behavior, usage context, or output. For such a simple tool, this is adequate but leaves gaps that could be addressed with more context.

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 input schema has 0% description coverage, but the description compensates by clarifying that parameters 'a' and 'b' are numbers to be added. It adds meaning beyond the schema's type definitions by specifying their role in the operation. Since there are only two parameters and their purpose is clear, this is adequate.

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: 'Add two numbers together.' It specifies the verb ('add') and the resource ('two numbers'), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'calculate_percentage' or 'multiply', though the operation is inherently distinct.

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 sibling tools like 'subtract' or 'multiply', nor does it specify contexts where addition is preferred over other operations. Usage is implied by the name but not explicitly stated.

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

calculate_percentageC

Calculate a percentage of a value.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
percentageYes

TDQS

C2.6/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 the action ('calculate') but doesn't reveal any behavioral traits like error handling (e.g., for invalid inputs), performance characteristics, or output format. This is a significant gap for a tool with no structured safety or operational hints.

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 extremely concise with a single sentence, 'Calculate a percentage of a value.', which is front-loaded and wastes no words. Every part earns its place by directly stating the tool's purpose, making it efficient and easy to parse.

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 low complexity (2 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain how the calculation is performed (e.g., formula: value * percentage/100), what the output looks like, or any edge cases. For a basic math tool, this leaves too much ambiguity for reliable agent use.

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 compensate for undocumented parameters. It mentions 'percentage of a value', which hints at the two parameters ('value' and 'percentage'), but doesn't clarify their semantics, such as whether 'percentage' is a decimal (e.g., 0.1) or a whole number (e.g., 10), or the expected output format. This adds minimal value beyond the schema's basic structure.

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

Purpose3/5

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

The description 'Calculate a percentage of a value' states what the tool does with a specific verb ('calculate') and resource ('percentage of a value'), but it's somewhat vague about the exact operation. It doesn't clearly distinguish from siblings like 'multiply' or 'divide', which could also be used for percentage calculations, though the name 'calculate_percentage' provides some differentiation.

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. Given siblings like 'multiply' and 'divide' that could handle percentage calculations, there's no indication of when this specialized tool is preferred, such as for direct percentage formulas or simplified input handling. This leaves usage context implied at best.

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

divideB

Divide the first number by the second number.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

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 full burden for behavioral disclosure. It states what the tool does but doesn't mention important behavioral aspects like error handling (e.g., division by zero), precision of results, or whether it returns integers or floats. This leaves significant gaps for an AI agent.

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 wasted words. It's appropriately sized for this simple tool and front-loads the essential information without unnecessary elaboration.

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 low complexity (basic arithmetic) and lack of annotations/output schema, the description is minimally complete. It states the core operation but doesn't address behavioral aspects like error cases or result format. For a simple tool, this might be adequate but has clear gaps.

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 0%, so the description must compensate. It adds meaning by specifying that parameter 'a' is the 'first number' (dividend) and 'b' is the 'second number' (divisor), which clarifies the order and role beyond the generic schema titles 'A' and 'B'. However, it doesn't explain data types, constraints, or examples.

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 ('divide') and the resources ('first number', 'second number'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'calculate_percentage' or 'square_root' which might also involve division operations, so it doesn't reach the highest 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 provides no guidance on when to use this tool versus alternatives like 'calculate_percentage' (which might handle division with percentage calculations) or 'multiply' (for inverse operations). There's no mention of use cases, prerequisites, or exclusions.

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

factorialB

Calculate the factorial of a non-negative integer.

ParametersJSON Schema
NameRequiredDescriptionDefault
nYes

TDQS

B3.2/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 the operation ('calculate') and constraint ('non-negative integer'), but doesn't disclose behavioral traits like error handling for invalid inputs, computational limits, or output format. For a mathematical tool with no annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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's appropriately sized for a simple mathematical function and front-loads the essential information without unnecessary elaboration.

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 low complexity (single parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic operation and parameter constraint but lacks details on output format, error conditions, or performance characteristics that would be helpful for an agent to use it correctly in varied contexts.

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 description adds meaningful context beyond the input schema: it specifies that parameter 'n' must be a 'non-negative integer,' which clarifies the semantic constraint not evident in the schema's type definition alone. With 0% schema description coverage and only one parameter, this adequately compensates for the schema's lack of descriptive detail.

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: 'Calculate the factorial of a non-negative integer.' It specifies the verb ('calculate') and resource ('factorial'), though it doesn't explicitly differentiate from sibling mathematical tools like 'power' or 'multiply' beyond the mathematical operation itself.

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 like 'power' or other mathematical operations. It mentions 'non-negative integer' as a constraint, but this is more of a parameter requirement than usage context. No explicit when/when-not or alternative tool references are included.

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

multiplyC

Multiply two numbers together.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

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 only states the multiplication action without mentioning any behavioral traits such as error handling (e.g., overflow), input constraints (e.g., integer vs. decimal), or output format. This is a significant gap for a 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.

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It is appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration, 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.

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 and lack of annotations or output schema, the description is incomplete. It doesn't address behavioral aspects, usage context, or parameter details, leaving gaps that could hinder an AI agent in selecting and invoking the tool correctly, especially compared to more complex siblings.

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 description implies two parameters ('two numbers') but adds no meaning beyond what the input schema provides, such as parameter roles or constraints. With 0% schema description coverage, the description doesn't compensate for the lack of schema details, but since there are only two straightforward parameters, a baseline score of 3 is appropriate for minimal adequacy.

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 'Multiply two numbers together,' which is a specific verb+resource combination. It distinguishes from siblings like 'add' or 'divide' by specifying multiplication, though it doesn't explicitly mention sibling differentiation in the text.

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 like 'power' or 'factorial.' It lacks context about use cases, exclusions, or comparisons with sibling tools, leaving the agent to infer usage based solely on the tool name and basic purpose.

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

powerC

Raise a number to a power.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseYes
exponentYes

TDQS

C2.8/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 mathematical operation but doesn't cover important traits like error handling (e.g., for negative bases with fractional exponents), performance characteristics, or output format. For a tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves beyond the 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.

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and appropriately sized for a simple mathematical tool, making it easy for an agent 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 tool's low complexity (basic math operation), no annotations, no output schema, and minimal parameter documentation, the description is incomplete. It doesn't explain the return value (e.g., that it outputs a number), error cases, or how it fits among sibling tools, leaving the agent with insufficient context for reliable use.

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?

The input schema has 0% description coverage, so the description must compensate. It mentions 'a number' and 'a power,' which loosely maps to the 'base' and 'exponent' parameters, but doesn't explain their roles, constraints (e.g., valid ranges), or interactions. This adds minimal semantic value beyond what's inferred from the schema titles, failing to adequately address the coverage gap.

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 'Raise a number to a power' clearly states the verb ('raise') and resource ('a number'), making the purpose immediately understandable. However, it doesn't explicitly distinguish this tool from sibling mathematical operations like 'factorial' or 'square_root' beyond the basic mathematical concept, 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 provides no guidance on when to use this tool versus alternatives like 'square_root' (which is a special case of exponentiation) or 'factorial' (which involves repeated multiplication). There's no mention of use cases, prerequisites, or comparisons to sibling tools, leaving the agent with minimal contextual direction.

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

square_rootC

Calculate the square root of a number.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes

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 for behavioral disclosure. It only states what the tool does ('calculate'), but doesn't mention important traits: whether it handles negative inputs (returns error, NaN, or complex numbers), precision/rounding behavior, performance characteristics, or what happens with invalid inputs. This leaves significant gaps for a mathematical 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?

The description is perfectly concise - a single sentence that states exactly what the tool does with zero wasted words. It's front-loaded with the core functionality and doesn't include unnecessary elaboration. 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 mathematical nature and lack of annotations/output schema, the description is incomplete. It doesn't address critical context: error handling for negative inputs, return value format (number, object with error?), precision, or mathematical domain constraints. For a tool that could have edge cases with negative numbers, this leaves too much undefined.

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 0% description coverage (parameter 'x' has no description in schema), so the description must compensate. It adds meaning by specifying 'x' represents 'a number' for square root calculation, which is helpful context. However, it doesn't provide constraints (e.g., non-negative requirement) or examples, leaving ambiguity about valid input ranges.

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 ('calculate') and resource ('square root of a number'), making the purpose immediately understandable. It distinguishes from siblings like 'add' or 'power' by specifying the mathematical operation. However, it doesn't explicitly differentiate from similar operations like 'power' with exponent 0.5, which would make it a perfect 5.

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 when to prefer this over using 'power' with exponent 0.5, nor does it specify any prerequisites like handling negative numbers. The agent must infer usage from the tool name alone.

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

subtractB

Subtract the second number from the first number.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

TDQS

B3.2/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 only states the basic operation without mentioning any behavioral traits such as error handling (e.g., for non-numeric inputs), performance characteristics, or side effects. For a tool with zero annotation coverage, this is a significant gap, as it leaves the agent without crucial operational context.

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 extremely concise and front-loaded, consisting of a single, clear sentence: 'Subtract the second number from the first number.' Every word earns its place by directly conveying the tool's purpose without any redundancy or unnecessary elaboration, making it efficient for quick understanding.

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 low complexity (simple arithmetic), no annotations, no output schema, and 2 parameters with clarified semantics in the description, the description is minimally adequate. It covers the basic operation but lacks details on output format, error cases, or usage context, which could be important for robust agent interaction. It meets the baseline for such a simple tool but doesn't excel.

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 description adds meaningful semantics beyond the input schema. The schema defines parameters 'a' and 'b' as numbers without descriptions (0% coverage), but the description clarifies that 'a' is the first number and 'b' is the second number to subtract from it. This compensates well for the low schema coverage by explaining the order and role of parameters, though it doesn't detail constraints like integer vs. float.

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: 'Subtract the second number from the first number.' This is a specific verb (subtract) applied to resources (numbers), making the operation unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'add' or 'divide' beyond the inherent meaning of subtraction, which is why it doesn't reach a 5.

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 sibling tools like 'add' or 'divide', nor does it specify contexts where subtraction is preferred over other operations. This lack of comparative or contextual advice limits its utility for an AI agent in selecting among multiple arithmetic tools.

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. 8 tool updatesv1.0.0
    • Changedadd1 field changed
      • addedInput schema / title
        Added value: +"addArguments"
    • Changedcalculate_percentage1 field changed
      • addedInput schema / title
        Added value: +"calculate_percentageArguments"
    • Changeddivide1 field changed
      • addedInput schema / title
        Added value: +"divideArguments"
    • Changedfactorial1 field changed
      • addedInput schema / title
        Added value: +"factorialArguments"
    • Changedmultiply1 field changed
      • addedInput schema / title
        Added value: +"multiplyArguments"
    • Changedpower1 field changed
      • addedInput schema / title
        Added value: +"powerArguments"
    • Changedsquare_root1 field changed
      • addedInput schema / title
        Added value: +"square_rootArguments"
    • Changedsubtract1 field changed
      • addedInput schema / title
        Added value: +"subtractArguments"
  2. 8 tool updates
    • First observedadd
    • First observedcalculate_percentage
    • First observeddivide
    • First observedfactorial
    • First observedmultiply
    • First observedpower
    • First observedsquare_root
    • First observedsubtract

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct mathematical operation with no overlap in purpose. For example, 'add' and 'subtract' are complementary but not ambiguous, and 'factorial' and 'power' serve unique functions. An agent can easily differentiate between them based on their specific descriptions.

Naming Consistency4/5

The tool names are mostly consistent, using clear verb-based or descriptive terms like 'add', 'multiply', and 'square_root'. However, there is a minor deviation with 'calculate_percentage' which is more verbose compared to others like 'divide' or 'power', slightly breaking the pattern but still maintaining readability.

Tool Count5/5

With 8 tools, this server is well-scoped for a basic mathematical operations toolkit. Each tool earns its place by covering fundamental arithmetic and mathematical functions, such as addition, subtraction, multiplication, division, and specialized operations like factorial and square root, without being overly complex or sparse.

Completeness5/5

The tool set provides complete coverage for basic mathematical operations, including all core arithmetic (add, subtract, multiply, divide) and common functions (percentage, factorial, power, square root). There are no obvious gaps for this domain, as it supports a wide range of calculations an agent might need without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

  • MCPCalc gives agents access to a comprehensive library of calculators spanning finance, math, health, construction, engineering, food, automotive, and more. It includes a full Computer Algebra System (CAS) and a grid-based Spreadsheet calculator.

  • SmartMoney77 MCP v0.6.0 — 14 public tools that turn financial questions into exact numbers and citable links. New: historical_investment_return and compare_investments, which compute "what if I had invested" results from real yearly price data. Also compound interest, FIRE number, credit-card payoff, emergency fund, inflation, latte factor, investment fees, cost of waiting, plus discovery/deep-link/share-pack tools for a catalog of calculators in 6 languages (he/en/ar/es/pt/in). Public, no login. Endpoint: https://smartmoney77.com/mcp

  • Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.

  • An agent-first office suite Claude & ChatGPT read and write over one MCP URL.

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    A demonstration MCP server that provides calculator tools for arithmetic operations, personalized greeting resources, and code review prompt templates. Enables users to perform basic math calculations, generate dynamic greetings, and access reusable code review templates through the Model Context Protocol.
    -
  • F
    license
    B
    quality
    D
    maintenance
    A boilerplate project for quickly developing Model Context Protocol (MCP) servers using TypeScript SDK. Includes example tools like calculator and greeting functions, plus system information resources.
    3
    -
  • F
    license
    B
    quality
    D
    maintenance
    A demonstration TypeScript MCP server that showcases basic MCP concepts with simple tools (greeting, calculator), text resources, and prompt templates for learning the Model Context Protocol.
    2
    -

Latest Blog Posts

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/vipankumar87/MCP-Example'

If you have feedback or need assistance with the MCP directory API, please join our Discord server