iCSS MCP server 如何拉取 iCSS 文章与 CSS-Inspiration 演示数据初始化本地数据库?
【免费下载链接】iCSS不止于 CSS项目地址: https://gitcode.com/GitHub_Trending/ic/iCSS
刚把 iCSS 仓库拉到本地、进入MCP目录后,MCP server 依赖的一个本地 SQLite 数据库(MCP/data/icss.db)还没有数据,search_css_techniques、search_css_demos等工具自然搜不到内容。这一步的任务就是用仓库自带的 build 脚本,把 iCSS 技巧文章和 CSS-Inspiration 演示案例两类数据分别拉取并写入同一个数据库文件,让 server 启动后可以直接提供搜索。
前提条件来自 MCP/package.json 的engines声明:Node.js>=18.0.0、npm>=8.0.0。拉取过程会访问 GitHub API,因此需要能正常联网的环境。
准备:安装依赖并执行 setup
按 MCP/README.md 的“本地开发”路径操作:
git clone https://github.com/chokcoco/iCSS.git cd iCSS/MCP npm installnpm install会同时触发package.json中的postinstall脚本(node setup.js),自动执行一次初始化。你也可以显式再跑一遍:
npm run setupsetup.js 做两件事:
- 创建
MCP/data/目录(数据库文件就放在这里); - 生成
.env文件,包含GITHUB_TOKEN(可选,用于提高 GitHub API 限额)、NODE_ENV=production、PORT=3000和DB_PATH=./data/icss.db。.env已存在时不会覆盖。
如果你不需要拉全量数据、只是想让服务跑起来,可以跳过下面的拉取步骤直接npm start——server.js 启动时会自动建表;但空库意味着搜索没有结果,所以完成“初始化本地数据库”这个任务,仍然要执行下面的拉取命令。
拉取 iCSS 文章数据
npm run build这条脚本对应node scripts/fetch-issues.js(fetch-issues.js),行为是:
- 从 chokcoco/iCSS 仓库的 GitHub issues API 按页拉取(每页 100 条,翻页间隔 1 秒以避开速率限制),
state: all表示包含所有状态的 issue,跳过 pull request; - 将文章写入数据库的
issues表,并顺带初始化label_categories、label_relations、article_labels、label_hierarchy等标签相关表,为每篇文章生成用于模糊搜索的search_content字段。
关于GITHUB_TOKEN:脚本启动时检测不到 token 会打印警告“API rate limits will be restricted”;如果请求返回 403(GitHub API rate limit exceeded),脚本会直接提示设置GITHUB_TOKEN环境变量并以退出码 1 结束。token 是可选分支——限额够用就不用配,遇到 403 再回到MCP/.env中把GITHUB_TOKEN=your_github_token_here替换为真实 token 后重跑即可。
拉取 CSS-Inspiration 演示数据
npm run build:inspiration对应node scripts/fetch-inspiration.js(fetch-inspiration.js),它会遍历源码中定义的 14 个分类目录(3d、animation、background、blendmode、border、clippath、cssdoodle、filter、layout、others、pesudo、shadow、svg、text),逐个读取每个分类下的 markdown 演示文件,解析出标题、描述、HTML/CSS 代码,评估难度级别(初级/中级/高级)和浏览器兼容性,然后写入与issues表同一个数据库文件中的三张表:
css_inspiration:演示主表,(category, filename)唯一;code_snippets:拆分出的 HTML/CSS 代码片段;demo_styles:拼装好的完整可运行 demo 页面。
两个脚本都写入MCP/data/icss.db,所以执行顺序没有强制要求。如果不想分两次跑,可以直接用一键命令:
npm run build:allbuild:all的定义就是npm run build && npm run build:inspiration,先拉文章、再拉演示。拉全量数据耗时较长(每个演示文件之间有 500ms 的限速等待),耐心等待脚本自己结束。
验证数据库已初始化
仓库提供了两个测试脚本,分别对应两类数据。
第一个验证 iCSS 文章侧(npm test,即node test-server.js,见 test-server.js):
npm test它会连接./data/icss.db,统计issues表文章总数,取前 10 条数据做一轮 Fuse.js 的 “flex” 搜索,并验证 MCP SDK 可以导入。文档示例输出(示例结果,实际文章数取决于拉取时间):
1️⃣ Testing database connection... ✅ Database connected successfully ✅ Found 274 articles in database 2️⃣ Testing search functionality... ✅ Sample data retrieved successfully ✅ Search test completed: found 42 results for "flex"判定标准看脚本自身打印:出现✅ Database connected successfully、文章数大于 0、Search test completed,且没有❌ No data found for search test,说明文章数据侧已就绪。
第二个验证 CSS-Inspiration 演示侧(npm run test:inspiration,见 test-inspiration.js):
npm run test:inspiration它会依次检查issues、css_inspiration、code_snippets、demo_styles四张表的记录数,并对演示库做“动画”关键词搜索、分类统计和难度分布查询。示例输出:
✅ Table issues: 274 records ✅ Table css_inspiration: 58 records ✅ Table code_snippets: 112 records ✅ Table demo_styles: 58 records四张表都有记录数(尤其css_inspiration大于 0),即说明两类数据都已入库。拉取脚本本身也会在结束时打印统计:文章侧输出Database Statistics: Total articles: N和 Top 10 标签组合,演示侧输出各分类、各难度级别的数量与总计: N 个 CSS 演示案例,看到这两段统计也是拉取成功的直接信号。
数据库就绪后,用npm start启动 MCP 服务,或在~/.config/cursor/mcp_settings.json中按 README 的格式把args指向本目录的server.js,然后在 Cursor 里用“查找 flex 布局的 CSS 技巧”这类问题即可验证端到端效果。
数据库报错或需要重建时
MCP/README.md 的常见问题一节给出的处理方式是:数据库报错时先运行npm run setup重新初始化。英文文档 MCP/README.en.md 还给了重建数据库的命令:
rm -rf data/icss.db && npm run build注意:rm -rf data/icss.db会删除MCP/data/下的数据库文件,之后需要重新拉取数据(只重建文章侧用上面的命令;要连演示数据一起重建,改为npm run build:all)。另外两个脚本运行中如果不想等待,按 Ctrl+C 即可,它们都注册了 SIGINT 处理,会关闭数据库连接后退出,下次可重新运行。
最后一条限制:拉取脚本硬编码了数据来源(chokcoco/iCSS 与 chokcoco/CSS-Inspiration 两个仓库的 API),不提供其他数据源参数;拉取内容以运行时的上游仓库状态为准,本文不承诺固定的文章条数。
【免费下载链接】iCSS不止于 CSS项目地址: https://gitcode.com/GitHub_Trending/ic/iCSS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考