Skip to main content
Glama
apoojary94

FastMCP Demo Server

by apoojary94

MCP Demo

Python 3.12+ FastMCP Docker License: MIT

A production-ready FastMCP reference server with hackathon resources and reusable starter prompts


Overview

A FastMCP server with comprehensive hackathon overview resources and reusable starter prompts. Clone, install dependencies or build the Docker image, and you have an MCP server that Cursor can load immediately.

Related MCP server: FastMCP Server Template

Requirements

Component

Version

Required

Python

3.12+

Yes

uv

Latest

Yes

Docker

24+

Optional

Node.js

18+

Optional


Quick Start

Local Python Setup

# Install dependencies and run
uv sync
uv run server.py

Docker Setup

# Build the image
docker build -t mcp-demo:latest .

# Run the container
docker run --rm -i mcp-demo:latest

# Development mode with live reload
docker run --rm -it -v "$(pwd)":/app mcp-demo:latest

Remote MCP (no local setup)

npx -y mcp-remote https://cursor-denver-mcp-hackathon.fastmcp.app/mcp

Deployment Options

Mode

Use Case

Setup

Best For

Local STDIO

Cursor integration

Simple

Development

Remote HTTP/SSE

Public access

Advanced

Production

Docker Local

Isolated environment

Medium

Testing

Docker Remote

Cloud deployment

Advanced

Production

Container Registry Push

# GitHub Container Registry
docker tag mcp-demo:latest ghcr.io/<your-user>/mcp-demo:latest
docker push ghcr.io/<your-user>/mcp-demo:latest

# Docker Hub
docker tag mcp-demo:latest <your-user>/mcp-demo:latest
docker push <your-user>/mcp-demo:latest

Cursor Configuration

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "fastmcp-demo": {
      "command": "uv",
      "args": ["run", "server.py"],
      "cwd": "/absolute/path/to/mcp-demo"
    }
  }
}
{
  "mcpServers": {
    "fastmcp-demo": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "--volume",
        "/absolute/path/to/mcp-demo:/app",
        "mcp-demo"
      ]
    }
  }
}

Remote MCP Server

{
  "mcpServers": {
    "denver-hackathon": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://cursor-denver-mcp-hackathon.fastmcp.app/mcp"
      ]
    }
  }
}

Restart Cursor after updating configuration.


Testing

# Run all tests
pytest

# Run with coverage
pytest --cov=. --cov-report=html

# Run specific test
pytest tests/test_server.py -v

Project Structure

mcp-demo/
├── server.py                 # FastMCP server
├── main.py                   # Alternative entry point
├── Dockerfile                # Container build
├── requirements.txt          # Dependencies
├── pyproject.toml            # Project config
├── resources/
│   └── hackathon_overview.md
├── prompts/
│   └── fastmcp_python_starter.md
└── tests/
    ├── conftest.py
    └── test_server.py

License

MIT License


Built for the Cursor Denver Hackathon

Available Tools

1 tool
get_hackathon_infoA

Get the complete hackathon overview with all information about the MCP Server Hackathon.

Returns: The full hackathon overview document including format, getting started guide, project ideas, resources, and quick reference.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

No annotations are provided, so the description carries the full burden. It discloses that the tool returns a 'full hackathon overview document' with specific content areas (format, guide, ideas, etc.), which adds useful context about the output. However, it does not cover behavioral traits like error handling, rate limits, or authentication needs, leaving gaps in transparency.

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 front-loaded with the core purpose in the first sentence, followed by a concise breakdown of return content. Every sentence adds value without waste, and the structure is clear and efficient for a tool with no parameters.

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?

Given the tool's simplicity (0 parameters, no annotations, but has an output schema), the description is reasonably complete. It explains what the tool does and details the return content, which compensates for the lack of annotations. However, it could be more thorough by addressing potential errors or usage scenarios, slightly reducing completeness.

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 parameters with 100% coverage, so no parameter documentation is needed. The description does not discuss parameters, which is appropriate. Baseline is 4 for zero parameters, as it avoids unnecessary repetition of schema information.

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: 'Get the complete hackathon overview with all information about the MCP Server Hackathon.' It specifies the verb ('Get') and resource ('hackathon overview'), but since there are no sibling tools, it cannot demonstrate differentiation from alternatives. The purpose is specific but lacks sibling context.

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 does not mention any prerequisites, contexts, or exclusions. With no sibling tools, the bar is lower, but it still fails to offer any usage context beyond the basic purpose.

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. 1 tool update
    • First observedget_hackathon_info

TDQS

A3.5/5.0
Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The tool's purpose is clearly defined and distinct by default.

Naming Consistency5/5

A single tool inherently maintains perfect naming consistency, as there are no other tools to compare against. The name 'get_hackathon_info' follows a clear verb_noun pattern.

Tool Count2/5

One tool is too few for a server's purpose, as it severely limits functionality and scope. This feels thin and inadequate for handling even basic operations beyond a single read action.

Completeness2/5

The server is severely incomplete, offering only a read operation for hackathon information. There are no tools for creating, updating, or deleting data, nor for interacting with other aspects of a hackathon domain, leading to significant gaps.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

  • A
    license
    Not graded
    quality
    C
    maintenance
    A production-ready development scaffold for MCP servers, optimized for Cursor IDE with built-in tools, resources, and prompts that enables quick development of Model Context Protocol servers with 5-minute startup and 10-minute development capabilities.
    26
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    A production-ready MCP server template that enables developers to quickly build and deploy MCP servers with dynamic tool/resource loading, YAML-based prompts, and seamless OpenShift deployment. Supports both local development with hot-reload and production HTTP deployment with optional JWT authentication.
    1
    -
  • F
    license
    B
    quality
    Not graded
    maintenance
    A production-ready FastMCP server template with modular architecture for building MCP servers with organized tools, resources, and prompts, featuring container support and AI agent documentation system.
    3
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Production-ready MCP server starter with authentication, observability, and a plugin system for building and deploying MCP servers quickly.
    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/apoojary94/mcp_hackathon'

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