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 (viaFigletFont.getFonts()).generate_banner— Render a string as ASCII art with a chosen font (viafiglet_format(text, font=...)).
Requirements
Python ≥ 3.10
mcp,pyfiglet
Installation
From the project root:
For development (tests):
Usage
Run the server (stdio)
MCP clients typically run the server as a subprocess and talk over stdio:
Or after install:
Config example
Copy and adjust one of the examples in config/:
stdio (local):
config/mcp-config.example.json—command+argsfor Cursor, Claude Desktop, etc.streamable-http (e.g. Docker):
config/mcp-config-streamable-http.example.json—url: "http://localhost:8000/mcp"when the server runs over HTTP.
Configure your MCP client
Add the server to your MCP client config (e.g. Cursor, Claude Desktop). Example (stdio):
If you use a virtualenv, use the full path to that Python:
Tools
Tool | Description |
| Returns a list of available font names. Use this to discover fonts for |
| Renders |
Example (equivalent to your snippet):
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)
Run the Inspector:
npx @modelcontextprotocol/inspectorIn the UI, add a server with Stdio transport.
Set Command to
python(or full path to your Python/venv).Set Args to
-m,ascii_banner_mcp.server.Ensure the project is installed (
pip install -e .) or set cwd to the project root and usepython -m ascii_banner_mcp.server.
Option 2 — streamable-http (Docker or local)
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 athttp://127.0.0.1:8000/mcp).
Run the Inspector:
npx @modelcontextprotocol/inspectorAdd 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:
streamable-http (for Inspector or URL-based clients):
Server is at http://localhost:8000/mcp. Use config/mcp-config-streamable-http.example.json or point MCP Inspector at that URL.
Development
Tests:
pytestLint:
ruff check src testsFormat:
black src testsPre-commit: Black, Ruff, and conventional-commit message checks (e.g.
feat:,fix:). Install:pip install -e ".[dev]"thenpre-commit installandpre-commit install --hook-type commit-msg. Run manually:pre-commit run --all-files.
License
MIT