Skip to main content

pyside-iconify-mcp

Help your AI assistant write correct pyside-iconify code.

English | 中文 | 日本語 | 한국어 | Español | Français | Deutsch | Русский | Português (BR)

An MCP server for pyside-iconify. It lets an AI assistant look up real icons, read the library's exact usage, and check the code it wrote, instead of guessing.

This project is not affiliated with the Iconify project.

Why

AI assistants often get pyside-iconify code wrong in ways that only show up at run time:

  • they invent icon names that do not exist (mdi:home-filled)
  • they use parameter names that do not exist, or that belong to a different entry point (get_icon(..., hover_color=...))
  • they pass a single color to a multi-color icon and expect it to change
  • they pick get_icon when they need an animated icon

This server lets the assistant look things up and check its work instead of guessing.

Tools

Tool What it does Needs network
search_icons Find real icons by keyword, using the official Iconify search API yes
check_icons Check that icon names exist; report whether each is multi-color or animated; suggest similar icons for missing ones yes
get_reference Return the exact, version-matched usage of the library by topic no
check_code Check the pyside-iconify calls in a piece of Python code, without running it optional

All four are read-only. The server never touches your project files and never runs your code. The only network access is to the public Iconify API (https://api.iconify.design); results are cached in memory for an hour.

search_icons

Input: query (keywords; several words must all match), optional prefix (an icon set such as mdi), optional limit (1 to 100, default 20).

Output: status (ok or unavailable), icons (a list of prefix:name), collections (name, license and size of the icon sets involved). unavailable means the lookup failed, for example without network; it does not mean nothing exists.

check_icons

Input: names, a list of 1 to 50 icon names.

Output: one entry per name.

status Meaning
ok The icon exists. Also reports monotone, fixed_colors, animated and notes
not_found The icon (or its icon set) does not exist. Includes suggestions
invalid_name Not of the form prefix:name
unavailable The check failed (for example no network). Says nothing about whether it exists

The monotone, color and animation results are computed by pyside-iconify itself, so they match what the library does at run time.

get_reference

Input: optional topic. Without a topic it lists them: overview, icon_widget, get_icon, set_icon, colors, sizes, animation, pitfalls, runtime.

Output: Markdown. The signatures are generated from the installed pyside-iconify, so they always match its version; explanations and examples are written by hand and tested against the library.

check_code

Input: code (Python source), optional verify_icon_names (default true).

Output: ok (true when there are no errors), issues (line, column, severity, code, message, suggestion), skipped (what could not be checked), checked (counts).

It looks for:

  • imports of names or modules that do not exist
  • unknown parameters, parameters used on the wrong entry point, missing or duplicated arguments
  • invalid values: size, colors, opacity, rotate, animation, periods, speed
  • conflicting options (spin=True with another animation, animation_depth with spin)
  • malformed icon names, and icon names that do not exist
  • a single color on a multi-color icon, and animated icons used with get_icon

What it promises: when it returns ok: true, the usage it could read directly from the code (parameter names, literal values, literal icon names) is correct. What it cannot know is listed under skipped instead of being guessed: values that come from variables or function calls, *args / **kwargs, and anything that only goes wrong at run time (no QApplication, widgets created off the main thread). It never reports an error it is not sure about.

Setup

Add it to your AI client as a stdio server that runs uvx pyside-iconify-mcp.

Claude Code

claude mcp add --transport stdio pyside-iconify -- uvx pyside-iconify-mcp

Add --scope project to store it in the project's .mcp.json and share it with your team. See the Claude Code documentation.

ChatGPT and Codex

The ChatGPT desktop app, the Codex CLI and the Codex IDE extension share one MCP configuration.

codex mcp add pyside-iconify -- uvx pyside-iconify-mcp

Or add this to ~/.codex/config.toml:

[mcp_servers.pyside-iconify]
command = "uvx"
args = ["pyside-iconify-mcp"]

See the Codex documentation.

Cursor

Create .cursor/mcp.json in your project, or ~/.cursor/mcp.json to use it in every project:

{
    "mcpServers": {
        "pyside-iconify": {
            "type": "stdio",
            "command": "uvx",
            "args": ["pyside-iconify-mcp"]
        }
    }
}

See the Cursor documentation.

OpenCode

Add it to your opencode.json. Here command is a single array that includes the arguments:

{
    "$schema": "https://opencode.ai/config.json",
    "mcp": {
        "pyside-iconify": {
            "type": "local",
            "command": ["uvx", "pyside-iconify-mcp"],
            "enabled": true
        }
    }
}

See the OpenCode documentation.

VS Code

Create .vscode/mcp.json in your project. VS Code uses servers as the top-level key, not mcpServers:

{
    "servers": {
        "pyside-iconify": {
            "type": "stdio",
            "command": "uvx",
            "args": ["pyside-iconify-mcp"]
        }
    }
}

You can also run MCP: Add Server from the Command Palette, choose Command (stdio) and enter uvx pyside-iconify-mcp. See the VS Code documentation.

WorkBuddy

Create or edit ~/.workbuddy/mcp.json (the file name has no leading dot):

{
    "mcpServers": {
        "pyside-iconify": {
            "command": "uvx",
            "args": ["pyside-iconify-mcp"]
        }
    }
}

A new server is not enabled automatically: open the custom connectors entry at the top right of the connector management page and click Trust on it.

CodeBuddy

The command below is for the CodeBuddy CLI:

codebuddy mcp add --scope user pyside-iconify -- uvx pyside-iconify-mcp

Use --scope project to store it in the project's .mcp.json instead. See the CodeBuddy documentation.

TRAE

Open Settings, then MCP, choose Add, then Create Manually, and paste:

{
    "mcpServers": {
        "pyside-iconify": {
            "command": "uvx",
            "args": ["pyside-iconify-mcp"]
        }
    }
}

For a single project, turn on Enable Project MCP on the same page and put the same JSON in .trae/mcp.json. See the TRAE documentation.

Other clients

Clients that use an mcpServers JSON config:

{
    "mcpServers": {
        "pyside-iconify": {
            "command": "uvx",
            "args": ["pyside-iconify-mcp"]
        }
    }
}

The exact config file and key names differ between clients; check your client's documentation for how to add a local (stdio) MCP server.

Run from a checkout

{
    "mcpServers": {
        "pyside-iconify": {
            "command": "uv",
            "args": [
                "run",
                "--directory",
                "/path/to/pyside-iconify-mcp",
                "pyside-iconify-mcp"
            ]
        }
    }
}

If your client cannot start uv, point it at the program installed in the project's virtual environment instead (create it first with uv sync): .venv/Scripts/pyside-iconify-mcp.exe on Windows, .venv/bin/pyside-iconify-mcp on macOS and Linux.

{
    "mcpServers": {
        "pyside-iconify": {
            "command": "/path/to/pyside-iconify-mcp/.venv/Scripts/pyside-iconify-mcp.exe"
        }
    }
}

Requirements

Python 3.10 to 3.14. The server depends on pyside-iconify (without any Qt extra, so Qt is not installed) and on FastMCP 4.1.x. The version of pyside-iconify it was built against is pinned to a minor range; a newer minor version of the library needs a matching release of this server.

Development

Requires uv.

uv sync --group test
uv run pytest -v
uv run pyside-iconify-mcp

The tests do not use the network. Every tool lives in its own file under src/pyside_iconify_mcp/tools/, named after the tool; shared code is in common/. See docs/architecture.md for the layout and how to add a tool.

License

MIT. Icon collections are subject to their own licenses.

Metadata

Release files for pyside-iconify-mcp 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyside-iconify-mcp 1.0.0
File Size Uploaded Provenance
pyside_iconify_mcp-1.0.0.tar.gz 86.1 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for pyside-iconify-mcp 1.0.0
File Interpreter ABI Platform
pyside_iconify_mcp-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 135.0 kB

Release files / pyside_iconify_mcp-1.0.0.tar.gz

Download URL pyside_iconify_mcp-1.0.0.tar.gz
Size 86.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a8a7054af7827ac5b7e6053cb23ed3e3e888d4b2364e66df100e71ad8eccbd60
BLAKE2b-256 checksum
How to use checksums
c2fcc590adcac8cdf0599d9d0bc160bf4b3c36549428ec9018d6e5bbe52714dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Release files / pyside_iconify_mcp-1.0.0-py3-none-any.whl

Download URL pyside_iconify_mcp-1.0.0-py3-none-any.whl
Size 48.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
777b6ac5d8325f15637cc02084841698b726299a6e36617b93f61ee9f1c984b3
BLAKE2b-256 checksum
How to use checksums
93bd36278205036cee189604f3696aa18f3c256904c44c67cb845eaf2e8b1272
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Security for pyside-iconify-mcp 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pyside_iconify_mcp-1.0.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page