Ascii Art Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Ascii Art Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
ascii-art-mcp is a Model Context Protocol (MCP) server built with Node.js and TypeScript that exposes tools for retrieving ASCII and Unicode art from a local database.
The server communicates using stdio transport, making it compatible with MCP clients such as:
https://theduodecim.github.io/ascii-art-mcp/
Just drop this link into any MCP-compatible AI chat:
https://github.com/theduodecim/ascii-art-mcp/tree/main"Run this MCP"
The AI will clone the repo, build it, and run it automatically. No setup needed on your end.
The package is available on npm:
https://www.npmjs.com/package/ascii-art-mcp
Install locally:
npm install ascii-art-mcpOr run directly:
npx ascii-art-mcpThis server is also published in the official Model Context Protocol Registry:
https://registry.modelcontextprotocol.io/?q=ascii-art
Server name:
io.github.theduodecim/ascii-artThis allows MCP-compatible tools to discover and install it automatically.
Development mode:
npm run devBuild + production run:
npm run build
npm startThe server uses stdio transport and loads its data from:
db.jsonlocated in the repository root.
Finds an art entry by exact nombre or by an exact value in aliases.
| Field | Type | Required |
|---|---|---|
| query | string | yes |
Returns the entry's art field as plain text.
Searches entries by categoria, tags, or both.
| Field | Type | Required |
|---|---|---|
| categoria | string | optional |
| tag | string | optional |
At least one filter is required.
Returns matching entries' art fields combined as text output.
Returns a random entry from the database.
| Field | Type | Required | |
|---|---|---|---|
| tipo | ascii \ | unicode | required |
Returns the selected entry's art field as plain text.
Lists all unique categories present in the database.
None
Category names as newline-separated text.
Entries in db.json follow the AsciiArtEntry TypeScript interface:
src/types/asciiArt.tsEach entry contains metadata such as:
A simple integration test was used to verify MCP communication using JSON-RPC over stdio.
Example test script (test.mjs):
import { spawn } from "child_process";
const proc = spawn("node", ["dist/server.js"], {
stdio: ["pipe", "pipe", "pipe"]
});
proc.stderr.on("data", (d) => {
console.log("LOG:", d.toString());
});
proc.stdout.on("data", (d) => {
console.log("SERVER:", d.toString());
});
function send(msg) {
const json = JSON.stringify(msg);
const payload = `Content-Length: ${Buffer.byteLength(json)}\r\n\r\n${json}\r\n`;
console.log("\nSENDING:\n", json, "\n");
proc.stdin.write(payload);
}
setTimeout(() => {
send({
jsonrpc: "2.0",
id: 1,
method: "initialize",
params: {
protocolVersion: "2024-11-05",
capabilities: {},
clientInfo: {
name: "tester",
version: "1.0"
}
}
});
}, 500);
setTimeout(() => {
send({
jsonrpc: "2.0",
method: "initialized",
params: {}
});
}, 1000);
setTimeout(() => {
send({
jsonrpc: "2.0",
id: 2,
method: "tools/list"
});
}, 1500);
setTimeout(() => {
proc.kill();
console.log("TEST FINISHED");
}, 4000);src/
server.ts
tools/
types/
dist/
db.jsondb.json)This project demonstrates how to build a simple MCP tool server that:
MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.