Skip to main content
Glama
heznpc

profilekit-mcp

by heznpc

profilekit-mcp

ProfileKit용 MCP 서버. Claude Code, Codex CLI, ChatGPT 앱 또는 기타 MCP 지원 에이전트를 통해 대화를 나누며 GitHub 프로필 SVG 카드를 빌드하세요.


MCP를 사용하는 이유

OpenAI와 Anthropic이 2025년 말 MCP Apps를 공동 발표한 이후, 단일 MCP 서버로 Claude Code + Codex CLI + ChatGPT를 기본적으로 지원하게 되었습니다. 플랫폼별 어댑터가 필요 없습니다.

Related MCP server: unbiased

설치

npm install -g @heznpc/profilekit-mcp

에이전트에 등록

Claude Code — 저장소의 .claude/settings.json에 추가:

{
  "mcpServers": {
    "profilekit": { "command": "profilekit-mcp" }
  }
}

Codex CLI~/.codex/config.toml에 추가:

[mcp_servers.profilekit]
command = "profilekit-mcp"

ChatGPT Apps — (Apps SDK MCP 어댑터; 연결 방법은 Apps SDK 문서 참조)

사용법

등록된 에이전트 내에서 다음과 같이 요청하세요:

> What ProfileKit cards exist?
> Render a tokyo_night stats card for heznpc.
> Give me a hero banner saying "heznpc" with subtitle "Building the ecosystem AI lives in", wave background, space-grotesk font.
> Build a kanagawa-themed pin card for heznpc/ProfileKit.

에이전트가 내부적으로 list_cards / list_themes / render를 호출하여 README에 바로 붙여넣을 수 있는 URL과 마크다운 스니펫을 제공합니다.

도구

도구

설명

list_cards

28가지 카드 유형 전체를 한 줄 설명 및 필수 매개변수와 함께 나열

list_themes

17가지 내장 테마 나열

render

특정 유형과 매개변수에 대한 카드 URL + 마크다운 + HTML 스니펫 생성

render는 SVG를 직접 가져오지 않습니다. 외부 <img> 태그가 허용되는 곳(GitHub README, dev.to, Hashnode, Notion 커버, 슬라이드 커버 등)에 라이브 이미지를 삽입할 수 있도록 URL과 스니펫을 반환합니다.

대화 예시

You: Render a pin card for heznpc/anvil using the rose_pine theme.

Agent: [calls render(type="pin", params={username: "heznpc", repo: "anvil", theme: "rose_pine"})]

URL:
https://profilekit.vercel.app/api/pin?username=heznpc&repo=anvil&theme=rose_pine

Markdown:
![pin](https://profilekit.vercel.app/api/pin?username=heznpc&repo=anvil&theme=rose_pine)

HTML:
<img src="https://profilekit.vercel.app/api/pin?username=heznpc&repo=anvil&theme=rose_pine" alt="pin" />

로드맵

  • v0.2 — ProfileKit /api/catalog 엔드포인트로부터의 동적 카탈로그 동기화 (새 카드가 출시될 때 즉시 업데이트)

  • v0.3compose_readme(sections) 도구 — 한 번의 호출로 전체 블로그 레이아웃의 README 스니펫 반환

  • v0.4 — 선택적 SVG 인라인 처리 (마크업을 분석하려는 에이전트를 위해 카드 콘텐츠를 응답으로 가져오기)

  • v1.0 — 호출자의 비전/LLM 기능을 활용한 팔레트 제안 도구 (내장 모델 호출 없음)

라이선스

MIT © heznpc

Available Tools

3 tools
list_cardsA

List every ProfileKit card type (stats, hero, snake, ...) with a one-line description and the required params for each. Use this before calling render when the user asks what cards exist or which to use. Catalog is fetched live from ProfileKit on first call and cached per process.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must convey behavior. It states the catalog is fetched live from ProfileKit on first call and cached per process, which is useful context. A slight deduction for not mentioning if listing is read-only (though implied).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: first explains what it does, second when to use it, third a behavioral note. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description covers purpose, usage, and behavior completely. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, and schema description coverage is 100% (vacuously). The description adds meaning by describing what the output contains (one-line description, required params) beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool lists every ProfileKit card type with a one-line description and required params. It specifies the exact resource (card types) and action (list), clearly distinguishing it from siblings like 'render'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use this tool before calling 'render' when the user asks what cards exist or which to use. This provides clear context for when to use it versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_themesA

List built-in ProfileKit themes (dark, tokyo_night, kanagawa, rose_pine, ...). Any card accepts ?theme=<name>. For fully custom palettes use ?theme_url= pointing to a JSON gist.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description carries full burden. Discloses it lists only built-in themes, and hints at card integration. No mention of whether it returns names only or full details, but adequate for a simple list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose and examples, no fluff. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless list tool with no output schema, description is sufficient. Explains purpose, examples, and integration with cards. Could mention if output is sorted or filtered, but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has no parameters (coverage 100%), and description adds value by explaining how the output relates to card usage, providing context beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it lists built-in ProfileKit themes and provides specific examples (dark, tokyo_night, kanagawa, rose_pine). Distinguishes from sibling tools like list_cards and render.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains how to use themes with cards via ?theme= parameter, and mentions alternative ?theme_url= for custom palettes. Could be more explicit about when to choose each option.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

renderA

Build a ProfileKit card URL plus ready-to-paste markdown and HTML snippets for the given card type and params. Does NOT fetch the SVG itself — the URL is what consumers embed. Call list_cards first if unsure which type or what params the user's card accepts.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesCard type (e.g. 'stats', 'hero', 'snake'). Must be one of the keys returned by list_cards.
paramsNoCard-specific parameters as key/value pairs (e.g. {username: 'heznpc', theme: 'tokyo_night'}). See list_cards output for common params per type. Values are stringified and URL-encoded.
altNoOptional alt text for the markdown image. Defaults to the card type.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It clearly states the tool does NOT fetch the SVG, which is a key behavioral trait. However, it does not mention side effects, permissions, or rate limits, which would be needed for full transparency. The explicit negation of SVG fetching earns a high score, but some gaps remain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, highly concise, and front-loads the core purpose. Every sentence provides essential information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema and moderate complexity (nested params), the description adequately explains the tool's output (URL and snippets) and workflow (call list_cards first). It could mention the output format in more detail, but the context signals (no output schema) mean the description carries this burden well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds minimal extra meaning beyond the schema: it explains that values are stringified and URL-encoded, and suggests using list_cards output for common params. This adds some value but not enough to raise the score above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool builds a ProfileKit card URL and markdown/HTML snippets, specifying the verb 'Build' and the resource 'ProfileKit card URL plus snippets'. It distinguishes from 'list_cards' by noting it does NOT fetch the SVG, which helps clarify the tool's scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises to call 'list_cards' first if unsure about the card type or parameters, providing clear when-to-use and when-not-to-use guidance. It also mentions that the URL is for embedding, not fetching SVG, setting correct expectations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.2.1
    • First observedlist_cards
    • First observedlist_themes
    • First observedrender

TDQS

A4.3/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a distinct purpose: list_cards discovers available card types, list_themes retrieves theme options, and render generates card URLs. There is no overlap between them.

Naming Consistency4/5

Tools follow a consistent 'verb_noun' pattern with 'list_' for listing and 'render' for generation. 'render' is a bare verb while others have prefix, but it's minor.

Tool Count5/5

With 3 tools covering listing, theming, and rendering, the scope is tight and focused. Each tool is essential and the count is appropriate for a card generation server.

Completeness3/5

The tools cover the core workflow of discovering cards and themes and generating URLs, but there is no tool for updating or deleting cards (if such operations exist), nor for fetching the rendered SVG directly.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers