ASCII Banner MCP Server

An MCP server for generating ASCII art banners from strings

README.md

ASCII Banner MCP Server

A classical Model Context Protocol (MCP) server that generates ASCII art banners from any string using pyfiglet.

Features

  • get_fonts — List all available pyfiglet font names (via FigletFont.getFonts()).
  • generate_banner — Render a string as ASCII art with a chosen font (via figlet_format(text, font=...)).

Requirements

  • Python ≥ 3.10
  • mcp, pyfiglet

Installation

From the project root:

pip install -e .

For development (tests):

pip install -e ".[dev]"

Usage

Run the server (stdio)

MCP clients typically run the server as a subprocess and talk over stdio:

python -m ascii_banner_mcp.server

Or after install:

ascii-banner-mcp

Config example

Copy and adjust one of the examples in `config/`:

Configure your MCP client

Add the server to your MCP client config (e.g. Cursor, Claude Desktop). Example (stdio):

{
  "mcpServers": {
    "ascii-banner": {
      "command": "python",
      "args": ["-m", "ascii_banner_mcp.server"]
    }
  }
}

If you use a virtualenv, use the full path to that Python:

{
  "mcpServers": {
    "ascii-banner": {
      "command": "/path/to/venv/bin/python",
      "args": ["-m", "ascii_banner_mcp.server"]
    }
  }
}

Tools

Tool Description
get_fonts Returns a list of available font names. Use this to discover fonts for generate_banner.
generate_banner Renders text as ASCII art. Parameters: text (required), font (optional, default "standard"). Use fonts from get_fonts() (e.g. "slant", "block", "big").

Example (equivalent to your snippet):

from pyfiglet import figlet_format
print(figlet_format("Hello", font="slant"))

Via this MCP server: call generate_banner with text="Hello" and font="slant".

MCP Inspector

Use MCP Inspector to test and debug the server.

Option 1 — stdio (local process)

  1. Run the Inspector: npx @modelcontextprotocol/inspector
  2. In the UI, add a server with Stdio transport.
  3. Set Command to python (or full path to your Python/venv).
  4. Set Args to -m, ascii_banner_mcp.server.
  5. Ensure the project is installed (pip install -e .) or set cwd to the project root and use python -m ascii_banner_mcp.server.

Option 2 — streamable-http (Docker or local)

  1. Start the server over HTTP:
    • Docker: docker compose -f .docker/docker-compose.yml up --build (see Docker below).
    • Local: MCP_TRANSPORT=streamable-http python -m ascii_banner_mcp.server (serves at http://127.0.0.1:8000/mcp).
  2. Run the Inspector: npx @modelcontextprotocol/inspector
  3. Add a server with Streamable HTTP (or URL) and set the URL to http://localhost:8000/mcp.

Custom ports (Inspector): CLIENT_PORT=8080 SERVER_PORT=9000 npx @modelcontextprotocol/inspector

Docker

Run the MCP server in a container. Use the `.docker/` setup:

stdio (default) — client runs the container and talks via stdin/stdout:

docker build -f .docker/Dockerfile -t ascii-banner-mcp .
docker run -i --rm ascii-banner-mcp

streamable-http (for Inspector or URL-based clients):

docker compose -f .docker/docker-compose.yml up --build

Server is at http://localhost:8000/mcp. Use `config/mcp-config-streamable-http.example.json` or point MCP Inspector at that URL.

Development

  • Tests: pytest
  • Lint: ruff check src tests
  • Format: black src tests
  • Pre-commit: Black, Ruff, and conventional-commit message checks (e.g. feat:, fix:). Install: pip install -e ".[dev]" then pre-commit install and pre-commit install --hook-type commit-msg. Run manually: pre-commit run --all-files.

License

MIT

Tools 2

get_fontsReturns a list of available font names for use in banner generation.
generate_bannerRenders a string as ASCII art with a chosen font.

Environment Variables

MCP_TRANSPORTSets the transport protocol, e.g., streamable-http

Try it

List all the available fonts I can use for my ASCII banners.
Generate an ASCII banner that says 'Hello World' using the 'slant' font.
Create a banner with the text 'Success' using the 'block' font.
Show me what fonts are available and then generate a banner saying 'MCP' using one of them.

Frequently Asked Questions

What are the key features of ASCII Banner MCP Server?

List all available pyfiglet font names. Render strings as ASCII art banners. Support for multiple font styles like slant, block, and big. Compatible with standard MCP clients via stdio or streamable-http.

What can I use ASCII Banner MCP Server for?

Creating stylized headers for terminal output or logs. Adding visual flair to automated reports or status messages. Testing different font styles for text-based design projects.

How do I install ASCII Banner MCP Server?

Install ASCII Banner MCP Server by running: pip install -e .

What MCP clients work with ASCII Banner MCP Server?

ASCII Banner MCP Server works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep ASCII Banner MCP Server docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Open Conare