Skip to main content
Glama
colesmcintosh

MCP Demo

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: Awesome-MCP-Scaffold

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

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 for behavioral disclosure. It does specify what the tool returns (the overview document with sections) and implies a read-only operation through the verb 'Get', but it does not explicitly state that it has no side effects, requires no authentication, or that it is safe to call repeatedly.

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 two sentences front-loading the primary action and then detailing the return contents. Every sentence earns its place without redundancy.

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 simple with 0 parameters and an output schema that explains the return shape. The description adds valuable detail about the document's contents, making it sufficiently complete for an agent to understand and invoke the tool correctly.

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 0 parameters, and the description correctly includes no parameter information. Since there is no need to clarify parameter semantics, the baseline of 4 applies.

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 a specific action ('Get') and resource ('complete hackathon overview'), and explicitly lists the contents of what will be returned. While there are no sibling tools to differentiate from, its action and resource are unambiguous.

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 the go-to source for hackathon overview information, but it does not explicitly describe when to use it, any prerequisites, or alternatives. Given there are no sibling tools, this absence is not a significant issue, but it still lacks explicit usage context.

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

TDQS

A4.2/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion between tools. The purpose is clearly defined and unique.

Naming Consistency5/5

The single tool name 'get_hackathon_info' follows a clear verb_noun convention, which is internally consistent.

Tool Count3/5

A single tool feels thin for a server, even as a demo. It is borderline but not necessarily inappropriate given the focused purpose.

Completeness5/5

The tool fully covers the stated purpose of retrieving hackathon information. There are no obvious missing operations for this narrow scope.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A FastMCP-based server that provides complete Slack integration for Cursor IDE, allowing users to interact with Slack API features using natural language.
    -
  • 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
    A
    quality
    D
    maintenance
    A production-ready MCP server that provides hackathon resources and reusable starter prompts. Built with FastMCP framework and includes comprehensive deployment options for development and production environments.
    1
    -
  • F
    license
    C
    quality
    D
    maintenance
    A starter template for building MCP (Model Context Protocol) servers that can integrate with Claude, Cursor, or other MCP-compatible AI assistants. Provides a foundation with example implementations of tools, resources, and prompts along with installation scripts.
    2
    6
    -