关于 ascii-art
ascii-art 是一个从本地数据库检索 ASCII 和 Unicode 艺术内容的 MCP 服务,适合需要在聊天或生成内容中查找文本图案的场景。它提供精确查询、分类与标签搜索、随机抽取及类别列表工具。
主要功能
- 01按名称或别名精确查找
- 02按类别和标签搜索
- 03随机获取 ASCII 或 Unicode 图案
- 04列出全部类别
适用场景
- 01按名称检索指定文本图案
- 02按类别或标签筛选图案
- 03为聊天内容随机选取图案
MCP 相关
通过 stdio 向 MCP 客户端提供图案检索、分类和标签搜索、随机获取及类别列表工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 |
详细介绍
ascii-art-mcp
ascii-art-mcp 是一个使用 Node.js 和 TypeScript 构建的 Model Context Protocol (MCP) 服务,提供用于从本地数据库获取 ASCII 和 Unicode 艺术图案的工具。
该服务使用 stdio 传输进行通信,因此兼容以下 MCP 客户端:
- Claude Desktop
- Cursor
- LM Studio
- Open WebUI
- 其他兼容 MCP 的环境
https://theduodecim.github.io/ascii-art-mcp/
▶ 运行此 MCP
只需将此链接放入任何兼容 MCP 的 AI 聊天中:
https://github.com/theduodecim/ascii-art-mcp/tree/main
“运行此 MCP”
AI 会自动克隆仓库、构建并运行。你无需进行任何设置。
📦 安装
该软件包已发布到 npm:
https://www.npmjs.com/package/ascii-art-mcp
本地安装:
npm install ascii-art-mcp
或直接运行:
npx ascii-art-mcp
🌐 MCP 注册表
此服务也已发布到官方 Model Context Protocol 注册表:
https://registry.modelcontextprotocol.io/?q=ascii-art
服务名称:
io.github.theduodecim/ascii-art
这使兼容 MCP 的工具能够自动发现并安装它。
⚙️ 要求
- Node.js 20+
- npm
🚀 手动运行服务
开发模式:
npm run dev
构建并以生产模式运行:
npm run build
npm start
该服务使用 stdio 传输,并从以下位置加载数据:
db.json
该文件位于仓库根目录。
🧰 可用的 MCP 工具
get_ascii_art
按完全匹配的 nombre 或 aliases 中的完全匹配值查找艺术图案条目。
输入
| 字段 | 类型 | 必填 |
|---|---|---|
| query | 字符串 | 是 |
输出
以纯文本形式返回条目的 art 字段。
search_ascii
按 categoria、tags 或两者搜索条目。
输入
| 字段 | 类型 | 必填 |
|---|---|---|
| categoria | 字符串 | 可选 |
| tag | 字符串 | 可选 |
至少需要 一个筛选条件。
输出
以文本形式返回所有匹配条目的 art 字段。
random_ascii
从数据库中随机返回一个条目。
输入
| 字段 | 类型 | 必填 |
|---|---|---|
| tipo | ascii | unicode | 必填 |
输出
以纯文本形式返回所选条目的 art 字段。
list_categories
列出数据库中所有不重复的类别。
输入
无
输出
以换行分隔的文本形式返回类别名称。
🗂 数据模型
db.json 中的条目遵循 AsciiArtEntry TypeScript 接口:
src/types/asciiArt.ts
每个条目都包含以下元数据:
- 名称
- 类别
- 标签
- 别名
- 艺术图案内容
🧪 测试 MCP 服务
使用一个简单的集成测试,通过 stdio 上的 JSON-RPC 验证 MCP 通信。
测试脚本示例(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.json
- TypeScript MCP 服务
- JSON 数据库(
db.json) - 使用 Zod 验证工具输入
- stdio 传输
🎯 目的
此项目演示如何构建一个简单的 MCP 工具服务,它:
- 在本地运行
- 无需 API 密钥
- 提供结构化工具
- 通过 MCP 提供静态数据
📜 许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。