Skip to main content
Glama
SannketNikam

Demo MCP Server

by SannketNikam

Basic Setup

  • Install uv

  • Create a project folder named fastmcp-demo-server

  • Open the folder in VS Code

  • Open terminal

  • Execute the command: uv init

  • uv add fastmcp

  • Fastmcp version

  • Create a basic server

  • Test the server -uv run fastmcp dev main.py (MCP Inspector CMD)

  • Run the server -uv run fastmcp run main.py

  • Add the server to claude desktop - uv run fastmcp install claude-desktop main.py (For local server)

Use the same steps from above to create a Remote MCP Server and follow the below steps and for Local MCP Server just follow till the upper step.

  • Test the server using MCP Inspector | This opens in browser just like FastAPI's page

  • Create a GitHub repo

  • git init

  • git add

  • git commit -m "Initial commit: Simple MCP Server"

  • git remote add origin https://github.com/YourUsername/simple-mcp-server.git

  • git push -u origin main

  • Create an account on FastMCP Cloud

  • Deploy on FastMCP Cloud

import random
from fastmcp import FastMCP

# Create a FastMCP server instance
mcp = FastMCP(name="Demo Server")

@mcp.tool
def roll_dice(n_dice: int=1) -> list[int]:
    """Roll n_dice 6 sided dice and return the results."""
    return [random.randint(1,6) for _ in range(n_dice)]

@mcp.toll
def add_numbers(a: float, b: float) -> float:
    """Add two numbers together."""
    return a + b

if __name___ == "__main__":
    mcp.run()

Available Tools

3 tools
add_expenseC

Add a new expense entry to the database.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
amountYes
categoryYes
subcategoryNo
noteNo

TDQS

C2.7/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 this is an 'Add' operation, implying a write/mutation, but doesn't cover critical aspects like required permissions, whether the operation is idempotent, error handling, or what happens on success (e.g., returns an ID). This leaves significant gaps for a mutation tool.

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 no wasted words. It's front-loaded with the core action and resource, making it efficient and easy to parse, which is ideal for conciseness.

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

Completeness2/5

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

Given the complexity of a mutation tool with 5 parameters, 0% schema coverage, no annotations, and no output schema, the description is insufficient. It doesn't explain parameter meanings, behavioral traits, or expected outcomes, leaving the agent poorly equipped to use this tool correctly.

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?

The schema description coverage is 0%, meaning none of the 5 parameters have descriptions in the schema. The tool description adds no information about what each parameter means (e.g., format of 'date', units for 'amount', allowed 'category' values), failing to compensate for the lack of schema documentation.

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

Purpose4/5

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

The description clearly states the action ('Add a new expense entry') and the resource ('to the database'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'list_expenses' or 'summarize' beyond the basic verb difference, which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'list_expenses' or 'summarize'. It lacks context about prerequisites, such as when an expense should be added versus when data should be listed or summarized, leaving the agent with minimal usage direction.

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

list_expensesC

List expense entries within an inclusive date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes
end_dateYes

TDQS

C2.8/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 implies a read operation ('List') but doesn't address permissions, pagination, rate limits, or response format. 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.

Conciseness5/5

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

The description is a single, efficient sentence with zero waste—it directly states the tool's function and scope without redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given no annotations, 0% schema coverage, and no output schema, the description is incomplete. It lacks details on behavioral traits, parameter usage, and return values, which are critical for a tool with two required parameters and potential complexity in expense data handling.

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 'inclusive date range' which hints at the two parameters, but doesn't explain date formats, time zones, or validation rules. This adds minimal semantic value beyond the schema titles.

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

Purpose4/5

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

The description clearly states the action ('List') and resource ('expense entries') with specific scope ('within an inclusive date range'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'summarize' which might also handle expense data, 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 'add_expense' or 'summarize'. It mentions date range filtering but doesn't specify prerequisites, exclusions, or comparative contexts, leaving usage decisions to inference.

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

summarizeC

Summarize expenses by category within an inclusive date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes
end_dateYes
categoryNo

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 tool summarizes expenses but doesn't describe how (e.g., aggregation method, output format), whether it's read-only or has side effects, or any constraints like rate limits or authentication needs. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and includes key details (summarize, expenses, category, date range) without redundancy. 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.

Completeness2/5

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

Given the tool's complexity (summarization with 3 parameters), lack of annotations, 0% schema description coverage, and no output schema, the description is incomplete. It doesn't explain the summarization output, parameter details, or behavioral traits, leaving the agent with insufficient context to use the tool effectively.

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 parameters are undocumented. The description mentions 'category' and 'inclusive date range', which hints at the 'category', 'start_date', and 'end_date' parameters, but doesn't explain their semantics (e.g., date format, category values, whether category is optional). It adds minimal value beyond the schema's property names.

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: 'Summarize expenses by category within an inclusive date range.' It specifies the verb ('summarize'), resource ('expenses'), and scope ('by category', 'within an inclusive date range'). However, it doesn't explicitly differentiate from sibling tools like 'list_expenses' (which might list individual expenses rather than summarize them).

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_expense' or 'list_expenses', nor does it specify prerequisites, exclusions, or appropriate contexts for summarization versus listing. The agent must infer usage from the purpose alone.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updates
    • First observedadd_expense
    • First observedlist_expenses
    • First observedsummarize

TDQS

B3.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: add_expense creates new entries, list_expenses retrieves entries with filtering, and summarize provides aggregated analysis. There is no overlap in functionality, making tool selection straightforward for an agent.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (add_expense, list_expenses, summarize), with 'summarize' being a verb-only form that still fits the action-oriented naming style. The naming is predictable and readable throughout.

Tool Count5/5

With 3 tools, this server is well-scoped for expense management, covering core operations: creation, retrieval, and summarization. Each tool earns its place without feeling thin or excessive for the domain.

Completeness3/5

The tools cover basic expense tracking (create, list, summarize), but there are notable gaps in lifecycle coverage, such as updating or deleting expenses. This could limit agents in handling modifications or corrections, though core workflows are supported.

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A simple MCP server that provides basic calculator functionality for performing mathematical operations. Built with FastMCP and demonstrates fundamental MCP server implementation patterns.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A minimal FastMCP server implementation that provides basic mathematical and greeting tools. Enables users to perform simple operations like adding numbers and greeting people by name through a lightweight MCP interface.
    MIT

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/SannketNikam/test-remote-mcp-server'

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