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
addC

Add two numbers

ParametersJSON Schema
NameRequiredDescriptionDefault
aYes
bYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. The description correctly implies it performs addition and returns a result, but does not mention any edge cases (e.g., overflow) or whether the tool is idempotent. A score of 3 is appropriate given the simplicity.

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

Conciseness4/5

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

The description is very short and to the point, which is appropriate for a simple tool. It could be considered slightly too brief, but as a single sentence it earns its place.

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 simplicity and the presence of an output schema, the description is adequate but not complete. It does not mention whether the addition uses integer or floating-point arithmetic, or any constraints. A more complete description might include 'Returns the sum of two integers.'

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 0% description coverage, meaning the description does not elaborate on parameters beyond what is in the schema. The description simply mentions 'two numbers', which adds no extra meaning over the schema field names 'a' and 'b'. Baseline 3 applies because schema coverage is low but the tool is extremely simple.

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

Purpose3/5

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

The description 'Add two numbers' clearly states the verb (add) and resource (numbers), but it is very brief and does not distinguish from any potential siblings or provide additional 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?

No guidance is given on when to use this tool versus alternatives, nor any prerequisites or limitations. For a trivial arithmetic tool this may be acceptable, but the scoring criteria requires explicit guidance.

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 updatev0.1.0
    • First observedadd

TDQS

C2.9/5.0
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

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
    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.
    21
    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
    41
    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/manutrip-pm-AI-Defense/mcpdeployment'

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