Skip to main content
Glama
NingYuanLee

Iconfont MCP Server

by NingYuanLee

Iconfont MCP Server

基于 Python 的 MCP (Model Context Protocol) 服务,为 AI 助手 (Cursor / Claude Desktop 等) 提供从 iconfont.cn 搜索和下载 SVG 图标的能力。


目录


Related MCP server: iconfont-mcp

功能特性

  • 图标搜索: 通过中文关键词搜索 iconfont.cn 百万级图标库

  • 风格过滤: 支持线性(line)、填充(fill)、扁平(flat)、手绘(hand)、简约(simple)、复杂(complex) 六种风格

  • SVG 下载: 下载完整矢量 SVG 文件到本地,可直接嵌入 HTML

  • 双登录方式: 支持 Playwright 自动登录(手机号+密码)或直接 Cookie 注入

  • 验证码处理: 自动检测验证码,提示用户手动处理


环境要求

  • Python 3.10+

  • Playwright (用于自动登录)

  • 一个 iconfont.cn 账号 (免费注册)


快速开始

1. 克隆项目

git clone <your-repo-url>
cd search-iconfont-mcp

2. 安装依赖

pip install -r requirements.txt

# 安装 Playwright 浏览器 (仅 Chromium)
playwright install chromium

3. 配置环境变量

在 MCP 配置中设置以下环境变量:

变量名

必填

说明

ICONFONT_PHONE

条件必填¹

iconfont.cn 注册手机号

ICONFONT_PASSWORD

条件必填¹

iconfont.cn 登录密码

ICONFONT_COOKIE

条件必填¹

EGG_SESS_ICONFONT Cookie 值

¹ 三种登录方式任选其一: (1) 手机号+密码自动登录, (2) 直接 Cookie 注入, (3) 先配置再调用 iconfont_login 工具

4. 验证安装

python server.py
# 输出: Iconfont MCP Server 启动中...

MCP 配置

Cursor 配置

编辑项目根目录的 .cursor/mcp.json (或 Cursor 全局设置):

{
  "mcpServers": {
    "search-iconfont-mcp": {
      "command": "python",
      "args": ["server.py"],
      "cwd": "{你自己的文件路径}/search-iconfont-mcp",
      "env": {
        "ICONFONT_PHONE": "13800138000",
        "ICONFONT_PASSWORD": "your_password"
      }
    }
  }
}

{你自己的文件路径} 替换为项目所在目录的绝对路径。Windows 请使用正斜杠,例如 "cwd": "D:/projects/search-iconfont-mcp"

Claude Desktop 配置

编辑 claude_desktop_config.json:

{
  "mcpServers": {
    "search-iconfont-mcp": {
      "command": "python",
      "args": ["server.py"],
      "cwd": "{你自己的文件路径}/search-iconfont-mcp",
      "env": {
        "ICONFONT_PHONE": "{你的iconfont手机号}",
        "ICONFONT_PASSWORD": "{你的iconfont密码}"
      }
    }
  }
}

环境变量说明

方式一:手机号+密码自动登录 (推荐)

"env": {
  "ICONFONT_PHONE": "13800138000",
  "ICONFONT_PASSWORD": "your_password"
}

首次使用时,MCP 服务启动后需先调用 iconfont_login 工具完成登录。Playwright 会打开无头浏览器自动填充并登录。

方式二:直接 Cookie 注入 (跳过自动登录)

如果你遇到验证码无法自动登录,可以手动获取 Cookie:

  1. 浏览器访问 https://www.iconfont.cn/ 并登录

  2. 按 F12 打开开发者工具

  3. 进入 Application → Cookies → www.iconfont.cn

  4. 复制 EGG_SESS_ICONFONT 的值

然后在 MCP 配置中设置:

"env": {
  "ICONFONT_COOKIE": "U8AXvqwdm-42-umGXGwgKq_..."
}

Cookie 有效期约 1 年,过期后需重新获取。


工具说明

iconfont_login

登录 iconfont.cn。

  • 参数: 无 (从环境变量读取凭据)

  • 返回示例:

{
  "success": true,
  "message": "登录成功 (账号: 138****8000)"
}

iconfont_search_icons

搜索图标。

  • 参数:

    • query (必填): 搜索关键词,如 "首页"、"搜索"、"用户"

    • icon_type (可选): 图标风格 — ""(全部), "line"(线性), "fill"(填充), "flat"(扁平), "hand"(手绘), "simple"(简约), "complex"(复杂)

    • page (可选): 页码,默认 1

    • page_size (可选): 每页数量 1-100,默认 20

  • 返回示例:

{
  "total": 156,
  "page": 1,
  "page_size": 20,
  "icons": [
    {
      "id": "145442",
      "name": "用户",
      "preview_url": "https://...",
      "author": "设计师A",
      "width": 1024,
      "height": 1024
    }
  ]
}

iconfont_download_icon

下载图标 SVG 文件。

  • 参数:

    • icon_id (必填): 图标 ID,从搜索结果的 id 字段获取

    • output_dir (可选): 保存目录,默认 "./icons"

    • filename (可选): 自定义文件名 (不含 .svg),默认使用图标名

  • 返回示例:

{
  "icon_id": "145442",
  "name": "用户",
  "file_path": ".\\icons\\用户.svg",
  "svg_size": 2048
}

iconfont_check_status

检查登录状态。

  • 参数: 无

  • 返回示例:

{
  "logged_in": true,
  "username": "13800138000",
  "login_time": 1752723000.0
}

iconfont_logout

退出登录,清除 Cookie。

  • 参数: 无

  • 返回示例:

{
  "success": true,
  "message": "已退出登录"
}

HTML 原型使用指南

典型工作流

需求 → 搜索图标 → 选择图标 → 下载SVG → 嵌入HTML

对话示例

示例 1: 制作带图标的侧边栏

: 帮我做一个后台管理系统的侧边栏,包含首页、用户管理、订单管理、数据统计、系统设置五个菜单项,每个前面要有图标。

AI:

  1. 调用 iconfont_search_icons(query="首页", icon_type="fill")

  2. 调用 iconfont_search_icons(query="用户", icon_type="fill")

  3. ... (并行搜索)

  4. 选择合适图标,调用 iconfont_download_icon 下载

  5. 读取 SVG 文件内容,嵌入 HTML

  6. 输出完整原型

示例 2: 给现有页面添加表格操作图标

: 我这个表格每行的操作列需要编辑、删除、查看三个图标按钮。

AI:

  1. 搜索 "编辑"、"删除"、"查看" 图标

  2. 下载并内联到 HTML 的 <td class="actions">

SVG 嵌入方式

方式 A — 内联 SVG (推荐)

能通过 CSS 控制图标颜色和大小:

<button class="btn-icon" title="编辑">
  <svg viewBox="0 0 1024 1024" width="20" height="20" fill="currentColor">
    <path d="...下载的SVG路径..."/>
  </svg>
  <span>编辑</span>
</button>

<style>
.btn-icon {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #666;
  cursor: pointer;
}
.btn-icon:hover { color: #4A90D9; }
</style>

方式 B — 外部引用

<img src="icons/编辑.svg" alt="编辑" width="20" height="20">

常见问题

Q: 登录时报错 "检测到验证码"

A: iconfont.cn 在检测到异常登录时会弹出滑块或图片验证码,Playwright 无法自动处理。请改用 Cookie 注入方式:

  1. 手动访问 iconfont.cn 完成登录 (包括验证码)

  2. 获取 EGG_SESS_ICONFONT Cookie

  3. 在 MCP 配置中设置 ICONFONT_COOKIE 环境变量

A: 约 1 年。过期后需要重新获取 Cookie 或重新调用 iconfont_login

Q: 下载的 SVG 图标如何调整颜色?

A: 使用内联 SVG 方式,图标颜色由 CSS fill 控制。下载的 SVG 通常带有 fill="currentColor" 属性(如果原始图标有此属性),可通过父元素的 color 来控制。

Q: 搜索返回 401 或 "未登录" 错误

A: Cookie 已过期,请调用 iconfont_login 重新登录。

Q: 如何搜索英文图标?

A: iconfont.cn 主要使用中文关键词,建议用英文对应的中文翻译搜索,如搜索 "home" 用 "首页"。


故障排查

问题: playwright 导入失败

pip install playwright
playwright install chromium

问题: MCP 服务启动后无响应

检查 Python 版本和依赖:

python --version  # 需要 >= 3.10
pip list | grep mcp

问题: 搜索返回空结果

  1. 确认已登录: 先调用 iconfont_check_status

  2. 尝试更简短的关键词,如 "用户" 而非 "用户图标按钮"

  3. 尝试近义词,如 "主页" → "首页"

问题: Windows 路径报错

.cursor/mcp.json 中使用正斜杠:

"cwd": "{你自己的文件路径}/search-iconfont-mcp"

参考资料

  1. Model Context Protocol (MCP) 规范 — Anthropic 提出的标准化协议,使 AI 应用能够安全访问外部工具和数据源。

  2. Playwright — 微软开发的跨浏览器自动化框架,用于本项目的自动登录流程。

  3. iconfont.cn (阿里巴巴矢量图标库) — 阿里巴巴旗下的矢量图标管理平台,提供海量图标资源。

  4. Python MCP SDK (mcp) — 基于 Python 的 MCP 协议参考实现,本项目使用其中的 FastMCP 快速构建 MCP 服务。

  5. MCP 中文社区资源


License

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to search, browse, and download professional icons from The Noun Project directly within MCP-compatible environments. It supports SVG and PNG formats with customizable styles and provides optimized modes for free and paid API tiers.
    7
    26 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI coding tools to search, inspect, recommend, and export SVG icons from svgicons.com for use in design systems, frontend projects, and AI-assisted workflows.
    MIT