Seu badge de skills, pedido em linguagem natural.

O servidor tem duas tools, as duas só de leitura. Elas não mudam nada e não chamam serviço externo, porque os dados dos 631 ícones estão embutidos no Worker.

Endereço do servidor: https://skill-icons.alanreisanjo.workers.dev/mcp

Instalar

Escolha o cliente. Não precisa de chave nem de conta.

Claude Code

Rode no terminal, dentro do projeto (ou com --scope user para todos):

claude mcp add --transport http skill-icons https://skill-icons.alanreisanjo.workers.dev/mcp

Cursor

Adicione em .cursor/mcp.json (projeto) ou ~/.cursor/mcp.json (global):

{
  "mcpServers": {
    "skill-icons": {
      "url": "https://skill-icons.alanreisanjo.workers.dev/mcp"
    }
  }
}

VS Code

Adicione em .vscode/mcp.json:

{
  "servers": {
    "skill-icons": {
      "type": "http",
      "url": "https://skill-icons.alanreisanjo.workers.dev/mcp"
    }
  }
}

Outro cliente

Qualquer cliente com suporte a servidores MCP remotos por HTTP (Streamable HTTP). Cole o endereço como um servidor ou conector personalizado; não há autenticação.

https://skill-icons.alanreisanjo.workers.dev/mcp

skill_icons_search

Busca ícones entre os 631 disponíveis e devolve o id que deve ser usado no badge. Sem query nem category, lista todos.

skill_icons_badge

Monta o badge a partir de uma lista de nomes escritos do jeito que as pessoas escrevem, e devolve a URL, o Markdown e o HTML prontos.

Por que usar o MCP em vez de montar a URL na mão

A API de imagem descarta ids inválidos sem avisar, e o badge simplesmente sai com ícones faltando. O skill_icons_badge resolve o nome do jeito que a pessoa escreveu, avisa o que não existe e sugere a grafia certa.

Prefere clicar? Abrir o gerador →

Servidor MCP · skill-icons 1.0.0

Seu badge de skills, pedido em linguagem natural.

O servidor tem duas tools, as duas só de leitura. Elas não mudam nada e não chamam serviço externo, porque os dados dos 631 ícones estão embutidos no Worker.

  • Streamable HTTP
  • sem estado
  • sem login
  • 2 tools · só leitura
Endereço do servidor
https://skill-icons.alanreisanjo.workers.dev/mcp

Instalar

Escolha o cliente. Não precisa de chave nem de conta.

Rode no terminal, dentro do projeto (ou com --scope user para todos):

claude mcp add --transport http skill-icons https://skill-icons.alanreisanjo.workers.dev/mcp

skill_icons_badge

só leitura

Monta o badge a partir de uma lista de nomes escritos do jeito que as pessoas escrevem, e devolve a URL, o Markdown e o HTML prontos.

Parâmetros

iconsobrigatóriostring[], mínimo 1 · padrão —
Ícones na ordem em que devem aparecer.
themeopcional"dark" | "light" · padrão "dark"
Fundo dos ícones que têm versão clara e escura.
perLineopcionalinteiro, 1 a 50 · padrão 15
Ícones por linha.

Como cada nome é resolvido, nesta ordem

  1. 1typescript — id exato
  2. 2ts → typescript · postgres → postgresql · k8s → kubernetes — apelido
  3. 3C++ → cpp · Google Cloud → gcp — nome da marca, sem diferenciar maiúsculas
  4. 4node.js → nodejs — forma normalizada
  5. 5node → nodejs — forma normalizada com js no final

Ícones repetidos são removidos e vale a primeira ocorrência. A URL usa o nome mais curto de cada ícone e omite os parâmetros que estão no valor padrão.

Exemplo · entrada

{
  "icons": [
    "typescript",
    "Node.js",
    "C++",
    "postgres",
    "ts"
  ],
  "theme": "light",
  "perLine": 4
}

Exemplo · resposta

{
  "url": "https://skill-icons.alanreisanjo.workers.dev/icons?i=ts,nodejs,cpp,postgres&theme=light&perline=4",
  "markdown": "[![My Skills](https://skill-icons.alanreisanjo.workers.dev/icons?i=ts,nodejs,cpp,postgres&theme=light&perline=4)](https://skill-icons.alanreisanjo.workers.dev)",
  "html": "<p align=\"center\">\n  <a href=\"https://skill-icons.alanreisanjo.workers.dev\">\n    <img src=\"https://skill-icons.alanreisanjo.workers.dev/icons?i=ts,nodejs,cpp,postgres&theme=light&perline=4\" />\n  </a>\n</p>",
  "icons": [
    "typescript",
    "nodejs",
    "cpp",
    "postgresql"
  ]
}

O ts repetido saiu da lista porque typescript já estava nela.

Nomes desconhecidos

Os ícones que existem continuam no badge. Os que não existem aparecem em unknown, cada um com até 5 sugestões:

{
  "url": "https://skill-icons.alanreisanjo.workers.dev/icons?i=react",
  "markdown": "[![My Skills](https://skill-icons.alanreisanjo.workers.dev/icons?i=react)](https://skill-icons.alanreisanjo.workers.dev)",
  "html": "<p align=\"center\">\n  <a href=\"https://skill-icons.alanreisanjo.workers.dev\">\n    <img src=\"https://skill-icons.alanreisanjo.workers.dev/icons?i=react\" />\n  </a>\n</p>",
  "icons": [
    "react"
  ],
  "unknown": [
    {
      "input": "reactt",
      "suggestions": [
        "react",
        "preact",
        "reactos"
      ]
    },
    {
      "input": "zzzzzz",
      "suggestions": []
    }
  ]
}

Se nenhum nome existir

A resposta vem marcada como erro (isError: true):

{
  "error": "None of the icons exist.",
  "unknown": [
    {
      "input": "zzzzzz",
      "suggestions": []
    }
  ]
}

Por que usar o MCP em vez de montar a URL na mão

A API de imagem descarta ids inválidos sem avisar, e o badge simplesmente sai com ícones faltando. O skill_icons_badge resolve o nome do jeito que a pessoa escreveu, avisa o que não existe e sugere a grafia certa.

Prefere clicar? Abrir o gerador →