Demo MCP Server
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., "@Demo MCP Serverroll 3 dice for my board game"
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.
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 toolsadd_expenseC
Add a new expense entry to the database.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| amount | Yes | ||
| category | Yes | ||
| subcategory | No | ||
| note | No |
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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | ||
| end_date | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | ||
| end_date | Yes | ||
| category | No |
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 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.
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.
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.
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.
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.
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.
3 tool updates
- First observed
add_expense - First observed
list_expenses - First observed
summarize
TDQS
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.
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.
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.
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
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
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA basic educational MCP server that provides simple tools for mathematical calculations, text manipulation, and time retrieval. Designed for learning MCP implementation patterns and development purposes.-
- FlicenseNot gradedqualityDmaintenanceA simple MCP server that provides basic calculator functionality for performing mathematical operations. Built with FastMCP and demonstrates fundamental MCP server implementation patterns.-
- AlicenseNot gradedqualityDmaintenanceA 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
- FlicenseNot gradedqualityDmaintenanceA simple educational MCP server providing basic math operations, string manipulation, and greeting functionality. Demonstrates how to implement MCP tools for learning purposes.-
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/SannketNikam/test-remote-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server