墨刀原型
STDIOHTML原型生成与导入MCP服务器
HTML原型生成与导入MCP服务器
基于Model Context Protocol的原型生成功能服务,专注于HTML代码生成、设计描述生成和HTML导入功能。
npm install
npm run build
# 基本用法 node dist/index.js --token YOUR_API_TOKEN # 指定API地址 node dist/index.js --token YOUR_API_TOKEN --url https://modao.cc # 启用调试模式 node dist/index.js --token YOUR_API_TOKEN --debug
--token: API服务的访问token(必需)--url: API服务地址(可选,默认:https://modao.cc)--debug: 启用调试模式(可选)适用于所有支持MCP的客户端:
{ "mcpServers": { "modao-proto-mcp": { "command": "npx", "args": [ "-y", "@modao-mcp/modao-proto-mcp", "--token=YOUR_TOKEN", "--url=https://modao.cc" ] } } }
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/claude/claude_desktop_config.json
{ "mcpServers": { "modao-proto-mcp": { "command": "npx", "args": [ "-y", "@modao-mcp/modao-proto-mcp", "--token=YOUR_TOKEN", "--url=https://modao.cc" ] } } }
在 settings.json 中添加:
{ "mcp.servers": { "modao-proto-mcp": { "command": "npx", "args": [ "-y", "@modao-mcp/modao-proto-mcp", "--token=YOUR_TOKEN", "--url=https://modao.cc" ] } } }
在 ~/.windsurf/config.json 中添加:
{ "mcp": { "servers": { "modao-proto-mcp": { "command": "npx", "args": [ "-y", "@modao-mcp/modao-proto-mcp", "--token=YOUR_TOKEN", "--url=https://modao.cc" ] } } } }
在 ~/.claude-code/config.json 中添加:
{ "mcpServers": { "modao-proto-mcp": { "command": "npx", "args": [ "-y", "@modao-mcp/modao-proto-mcp", "--token=YOUR_TOKEN", "--url=https://modao.cc" ] } } }
获取 Token: 如果 token 报错,请登录 modao.cc 或 modao.cc/ai,点击右上角头像 → 令牌设置 → 创建令牌
积分不足: 如果 gen_html 无法生成(积分不够),请到 modao.cc/ai 进行积分充值
根据用户描述生成完整的HTML代码,支持现代化设计和响应式布局。
功能描述:
参数:
user_input (string, 必需): 用户的设计需求描述,例如:'创建一个现代风格的登录页面'reference (string, 可选): 可选的参考信息或上下文返回内容:
<!DOCTYPE html>到</html>)示例:
{ "name": "gen_html", "arguments": { "user_input": "创建一个现代风格的登录页面,包含用户名和密码输入框", "reference": "使用Material Design风格,主色调为蓝色" } }
基于用户简短的设计需求生成详细的设计说明文档。
功能描述:
参数:
user_input (string, 必需): 用户的设计想法或需求描述reference (string, 可选): 可选的参考信息或上下文示例:
{ "name": "gen_description", "arguments": { "user_input": "电商产品列表页面", "reference": "需要支持筛选、排序和分页功能" } }
将通过gen_html工具生成的HTML导入到用户的个人空间中。
功能描述:
参数:
key (string, 推荐): 从gen_html工具响应中获取的key参数,这是导入操作的主要参数htmlString (string, 可选): 可选的HTML字符串内容,通常不需要提供使用建议:
示例:
{ "name": "import_html", "arguments": { "key": "从gen_html工具获取的key值" } }
gen_html 工具根据需求生成HTML代码import_html 工具将生成的HTML导入到个人空间如果需要更详细的设计规范:
gen_description 工具扩展设计需求gen_html 工具import_html 工具保存到个人空间完整示例:
# 1. 生成HTML(基础流程) { "name": "gen_html", "arguments": { "user_input": "创建一个现代风格的登录页面,包含用户名和密码输入框" } } # 2. 导入HTML(使用返回的key) { "name": "import_html", "arguments": { "key": "gen_html工具返回的key值" } }
扩展示例(包含设计描述):
# 1. 生成详细设计描述 { "name": "gen_description", "arguments": { "user_input": "电商产品列表页面", "reference": "需要支持筛选、排序和分页功能" } } # 2. 基于设计描述生成HTML { "name": "gen_html", "arguments": { "user_input": "电商产品列表页面", "reference": "上一步生成的详细设计描述内容" } } # 3. 导入HTML { "name": "import_html", "arguments": { "key": "gen_html工具返回的key值" } }
modao-proto-mcp/
├── src/
│   ├── tools/
│   │   ├── base-tool.ts       # 工具基类,提供通用功能
│   │   ├── gen-html.ts        # HTML生成工具
│   │   ├── gen-description.ts # 设计描述生成工具
│   │   └── import-html.ts     # HTML导入工具
│   ├── http-util.ts           # HTTP工具类,处理API请求
│   ├── types.d.ts             # TypeScript类型定义
│   └── index.ts               # MCP服务器主入口点
├── bin/
│   └── cli.js                 # 命令行执行文件
├── examples/                  # 使用示例和文档
├── scripts/                   # 构建和发布脚本
├── build.js                   # 项目构建配置
├── package.json              # 项目依赖和配置
├── tsconfig.json             # TypeScript配置
├── API.md                    # API详细文档
├── README.md                 # 英文README
└── README.zh-CN.md           # 中文README(本文件)
用户请求 → MCP客户端 → MCP服务器 → HTTP工具类 → 后端API
                                              ↓
                     响应处理 ← 结果格式化 ← API响应
src/tools/ 目录下创建新的工具类文件BaseTool 抽象类getToolDefinition(): 定义工具的MCP规范execute(): 实现工具的核心功能逻辑src/index.ts 的 initializeTools() 方法中注册新工具import { Tool } from '@modelcontextprotocol/sdk/types.js'; import { BaseTool } from './base-tool.js'; import { ToolResult } from '../types.js'; export class MyNewTool extends BaseTool { getToolDefinition(): Tool { return { name: "my_new_tool", description: "工具功能描述", inputSchema: { type: "object", properties: { input_param: { type: "string", description: "参数描述" } }, required: ["input_param"] } }; } async execute(args: Record<string, any>): Promise<ToolResult> { // 实现工具逻辑 const result = await this.httpUtil.post('/api/endpoint', args); return this.createSuccessResult(result.data); } }
validateRequiredArgs() 方法验证必需参数createErrorResult() 和 formatApiError() 处理错误this.httpUtil 发送API请求--debug 参数启用详细日志输出MIT License
欢迎提交Issue和Pull Request!
import_html)gen_description)gen_html)