Skip to main content
Glama

MCP Demo Server

A demonstration MCP (Model Context Protocol) server showcasing Tools, Resources, and Prompts with integrated security scanning.

Features

🛠️ Tools (6)

  • add - Add two numbers

  • reverse_text - Reverse a string

  • format_json - Pretty-print JSON

  • calculate - Evaluate mathematical expressions

  • scan_mcp_server - Scan MCP servers for vulnerabilities

  • check_scanner_status - Check scanner configuration

📚 Resources (4)

  • demo://info - Server metadata

  • demo://timestamp - Current time and uptime

  • demo://examples - Usage examples

  • demo://file/data - Read sample data

💬 Prompts (3)

  • code_review - Code review template

  • summarize - Text summarization template

  • debug_helper - Debugging assistance template

Related MCP server: Enterprise MCP Server

Quick Start

Prerequisites

  • Python 3.11+

  • uv package manager

Installation

# Clone the repository
git clone https://github.com/manutri1986/mcpdeployment.git
cd mcpdeployment

# Install dependencies (automatic with uv)
uv sync

Run the Server

Local Development (stdio transport):

# Start MCP server for IDE integration
uv run mcp-server

The server communicates via stdio and will wait for MCP protocol connections.

Remote Deployment (HTTP transport):

# Start HTTP server for remote access
MCP_REMOTE_HOST=127.0.0.1 MCP_REMOTE_PORT=8000 uv run mcp-server-remote

# Or use the test script
./scripts/test_http_local.sh

📖 Full HTTP deployment guide: docs/HTTP_DEPLOYMENT.md

Security Scanning

Quick Scan

# Run security scan (YARA analyzer - fast, no API key needed)
uv run python scripts/scanners/yara_scanner.py

# Quick scan (sample components only)
uv run python scripts/scanners/yara_scanner.py --quick

# Advanced scanners (require API keys)
uv run python scripts/scanners/llm_api_scanner.py       # OpenAI LLM analysis
uv run python scripts/scanners/cisco_api_scanner.py     # Cisco AI Defense

Scanner Coverage:

  • ✅ Tools (6) - All scanned

  • ✅ Prompts (3) - All scanned

  • ⚠️ Resources (4) - Cannot scan via stdio

Setup Advanced Scanning (Optional)

For deeper analysis with LLM and API analyzers:

# Run setup script
./scripts/setup_scanner.sh

# Or set environment variables manually
export MCP_SCANNER_API_KEY="your_api_key"
export MCP_SCANNER_ENDPOINT="https://us.api.inspect.aidefense.security.cisco.com/api/v1"

Get your API key: Cisco AI Defense

📖 Full documentation: docs/SCANNER_SETUP.md

Using with MCP Clients

Cursor IDE

Configuration included at .cursor/mcp.json. After setup:

  1. Restart Cursor IDE

  2. Test: "Use the add tool to calculate 5 + 3"

  3. Or: "Access the demo://info resource"

Claude Desktop, VS Code, Windsurf

Add to your MCP client configuration:

{
  "mcpServers": {
    "mcpdeployment": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/manutri1986/mcpdeployment.git",
        "mcp-server"
      ]
    }
  }
}

Configuration file locations:

Client

Config Path

Claude Desktop (macOS)

~/Library/Application Support/Claude/claude_desktop_config.json

Claude Desktop (Windows)

%APPDATA%\Claude\claude_desktop_config.json

Cursor

.cursor/mcp.json (project) or ~/.cursor/mcp.json (global)

Windsurf

~/.codeium/windsurf/mcp_config.json

VS Code

.vscode/mcp.json or User settings

Claude Code

.claude/mcp.json (project) or ~/.claude/mcp.json (global)

Project Structure

mcpdeployment/
├── src/mcpserver/          # MCP server implementation
│   ├── __init__.py
│   ├── __main__.py         # Entry point (stdio transport)
│   ├── __main_remote__.py  # Entry point (HTTP transport)
│   └── server.py           # Tools, resources, prompts
├── scripts/                # Utility scripts
│   ├── scanners/          # Security scanner implementations
│   │   ├── yara_scanner.py
│   │   ├── llm_api_scanner.py
│   │   └── cisco_api_scanner.py
│   ├── setup_scanner.sh   # Scanner configuration
│   └── test_http_local.sh # Local HTTP testing
├── tests/                  # Test files
│   └── test_scanner.py    # Test scanner setup
├── reports/                # Generated scan reports (gitignored)
├── docs/                   # Documentation
│   ├── methodology/       # Scanner methodology docs
│   ├── SCANNER_SETUP.md
│   ├── SCANNER_LIMITATIONS.md
│   └── HTTP_DEPLOYMENT.md # Remote deployment guide
├── data/                   # Sample data
│   └── sample_data.json
├── STRUCTURE.md           # Detailed structure guide
├── CLAUDE.md              # AI assistant guidance
├── README.md              # This file
└── pyproject.toml         # Project configuration

📖 See STRUCTURE.md for detailed directory structure and purpose.

Architecture

Built with FastMCP, a Python framework for MCP servers.

Key Pattern:

from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Demo")

@mcp.tool()
def your_tool(arg: type) -> type:
    """Tool description"""
    return result

@mcp.resource("uri://path")
def your_resource() -> str:
    """Resource description"""
    return json.dumps(data)

@mcp.prompt()
def your_prompt(arg: type) -> str:
    """Prompt description"""
    return f"Prompt text with {arg}"

See CLAUDE.md for detailed architecture notes.

Development

Test Scanner

# Verify scanner is configured
uv run python tests/test_scanner.py

Adding Components

Edit src/mcpserver/server.py:

  1. Add function with appropriate decorator (@mcp.tool(), @mcp.resource(), @mcp.prompt())

  2. Update scanner scripts in scripts/scanners/ to include new tools/prompts in scan lists

  3. Run security scan: uv run python scripts/scanners/yara_scanner.py

Documentation

Troubleshooting

Server won't start

  • Check Python version: uv run python --version (needs 3.11+)

  • Reinstall dependencies: uv sync

Tools not appearing in client

  • Restart client completely

  • Check client logs for errors

  • Verify configuration file syntax

Scanner errors

  • Verify installation: uv pip list | grep cisco-ai-mcp-scanner

  • Test setup: uv run python tests/test_scanner.py

License

MIT

Available Tools

1 tool
addA

Add two numbers

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is a pure function with no side effects, and the sole behavior 'Add two numbers' is fully disclosed. With no annotations to contradict, the description provides complete behavioral transparency for this simple 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 a single sentence with no unnecessary words; it is front-loaded and earns its place. It communicates everything needed in the most compact form possible.

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?

Given the tool's simple nature and the presence of an output schema (per context signal), the description sufficiently covers the function. There are no complex behaviors, side effects, or conditional logic to document.

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%, yet the description only generically mentions 'two numbers' without explaining the meaning or constraints of parameters a and b. It does not compensate for the lack of schema descriptions, leaving parameter semantics under-specified.

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 uses the specific verb 'Add' and identifies the resource as 'two numbers', clearly distinguishing it from the sibling arithmetic tools subtract, multiply, and divide. It is unambiguous and precisely states the tool's function.

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

Usage Guidelines4/5

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

The description is concise but does not explicitly state when to use this tool over alternatives; however, the operation is self-evident for the sibling context. It lacks explicit exclusions or alternative guidance, but the clear context of adding numbers implicitly covers the main use case.

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 observedadd

TDQS

C2.9/5.0

Scored across 1 tool

Disambiguation5/5

Only one tool exists, so there is no ambiguity between tools.

Naming Consistency5/5

With a single tool, naming consistency is not applicable; the name 'add' is clear and follows a verb pattern.

Tool Count2/5

A single arithmetic tool is too few for a server presumably named 'mcpdeployment', which suggests broader functionality. The scope is extremely limited.

Completeness1/5

The server's name implies deployment-related operations, but only an addition tool is provided, missing all typical deployment lifecycle operations.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP Server simplifies the implementation of the Model Context Protocol by providing a user-friendly API to create custom tools and manage server workflows efficiently.
    13 npm
    4
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A comprehensive MCP server providing OpenStack project management and monitoring capabilities with built-in safety controls and single-project scope.
    41
    44
    MIT