MCP Kkebi
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP KkebiShow me the counter widget to test the interactive React UI."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Kkebi π
ChatGPTμ Claudeμμ μ€νλλ μΈν°λν°λΈ UI μ ν리μΌμ΄μ μ ꡬμΆνλ MCP μ±μ λλ€.
π Repository: github.com/mimsut/mcp_kkebi
β¨ νΉμ§
π¨ μΈν°λν°λΈ μμ ―: React κΈ°λ°μ μλ¦λ€μ΄ UI μ»΄ν¬λνΈ
π€ AI ν΅ν©: ChatGPTμ Claudeμμ λ°λ‘ μ¬μ© κ°λ₯
β‘οΈ λΉ λ₯Έ κ°λ°: TypeScript + Hot Reload
π¦ μ¬μ΄ λ°°ν¬: Manufact Cloud μ§μ
π§ νμ₯ κ°λ₯: μλ‘μ΄ λꡬμ μμ ― μ½κ² μΆκ°
Related MCP server: Magic UI MCP Server
π λΉ λ₯Έ μμ
# Clone
git clone https://github.com/mimsut/mcp_kkebi.git
cd mcp_kkebi
# μ€μΉ
npm install
# κ°λ° λͺ¨λ
npm run dev
# λΉλ
npm run buildπ¦ νλ‘μ νΈ κ΅¬μ‘°
my-mcp-app/
βββ src/
β βββ index.ts # MCP μλ² μ§μ
μ (TypeScript)
βββ dist/
β βββ index.js # λΉλλ μλ² (JavaScript)
βββ resources/
β βββ example-widget/ # μμ μμ ―
β β βββ widget.tsx # React μ»΄ν¬λνΈ
β β βββ types.ts # Props νμ
β βββ counter-widget/ # μΈν°λν°λΈ μΉ΄μ΄ν° μμ ―
β βββ widget.tsx
β βββ types.ts
βββ package.json
βββ tsconfig.json
βββ mcp-config.json # MCP μ€μ νμΌ
βββ README.mdποΈ μν€ν μ²
Server: MCP λꡬ(tools)μ 리μμ€(resources) μ μ (
src/index.ts)Widget:
resources/ν΄λμ React μ»΄ν¬λνΈλ‘ ν΄λΌμ΄μΈνΈμμ λ λλ§Protocol: MCPκ° μλμΌλ‘ ν΅μ μ²λ¦¬
π μμνκΈ°
1. μμ‘΄μ± μ€μΉ
npm install2. λΉλ
npm run build3. κ°λ° λͺ¨λ μ€ν (ν« λ¦¬λ‘λ)
npm run dev4. νλ‘λμ μ€ν
npm startπ§ Claude Desktopμ μ°κ²°νκΈ°
macOS
Claude Desktop μ€μ νμΌ μ΄κΈ°:
nano ~/Library/Application\ Support/Claude/claude_desktop_config.jsonλ€μ μ€μ μΆκ°:
{
"mcpServers": {
"my-mcp-app": {
"command": "node",
"args": [
"/Users/user/Downloads/b_ru8Xi2QdWzH-1771717682115/my-mcp-app/dist/index.js"
]
}
}
}Claude Desktop μ¬μμ
Windows
μ€μ νμΌ μμΉ: %APPDATA%\Claude\claude_desktop_config.json
π¬ ChatGPTμ μ°κ²°νκΈ°
ChatGPT μ€μ μμ "Custom Actions" λλ "GPT" μΉμ μΌλ‘ μ΄λ
MCP μλ² μΆκ°:
μλ² URL: λ‘컬 λλ λ°°ν¬λ URL
νλ‘ν μ½: MCP (Model Context Protocol)
π¨ μμ ― μ¬μ©νκΈ°
Example Widget
νμ λ©μμ§μ κΈ°λ³Έ μ 보λ₯Ό νμνλ κ°λ¨ν μμ ―μ λλ€.
μ¬μ©λ²:
widget://exampleνΉμ§:
κ·ΈλΌλμΈνΈ λ°°κ²½
νμ λ©μμ§
μν νμ
Counter Widget
μ¬μ©μ μνΈμμ©μ 보μ¬μ£Όλ μΈν°λν°λΈ μΉ΄μ΄ν° μμ ―μ λλ€.
μ¬μ©λ²:
widget://counterνΉμ§:
μ¦κ°/κ°μ λ²νΌ
μ΄κΈ°ν κΈ°λ₯
μ€μκ° μν μ λ°μ΄νΈ
λΆλλ¬μ΄ μ λλ©μ΄μ
π οΈ λꡬ (Tools)
greet
μ¬μ©μμκ² νμ λ©μμ§λ₯Ό νμν©λλ€.
νλΌλ―Έν°:
name(string, νμ): μ¬μ©μ μ΄λ¦
μμ :
{
"name": "νκΈΈλ"
}μλ΅:
μλ
νμΈμ, νκΈΈλλ! MCP μ±μ μ€μ κ²μ νμν©λλ€! ππ§ͺ ν μ€νΈνκΈ°
λ‘컬 ν μ€νΈ
# κ°λ° λͺ¨λλ‘ μ€ν
npm run dev
# λ€λ₯Έ ν°λ―Έλμμ MCP Inspector μ¬μ©
npx @modelcontextprotocol/inspector node dist/index.jsInspectorμμ νμΈ
MCP Inspectorλ₯Ό μ¬μ©νλ©΄ λ€μμ ν μ μμ΅λλ€:
λͺ¨λ λꡬμ 리μμ€ λͺ©λ‘ νμΈ
ν μ€νΈ μ λ ₯μΌλ‘ λꡬ νΈμΆ
μμ ― 미리보기 λΌμ΄λΈλ‘ νμΈ
μ½λ λ³κ²½ μ μ¦μ ν« λ¦¬λ‘λ
π μλ‘μ΄ μμ ― μΆκ°νκΈ°
resources/ν΄λμ μ λλ ν 리 μμ±:
mkdir resources/my-widgettypes.tsνμΌ μμ±:
export interface MyWidgetProps {
// props μ μ
}widget.tsxνμΌ μμ±:
import React from "react";
import type { MyWidgetProps } from "./types";
export default function MyWidget(props: MyWidgetProps) {
return <div>{/* μμ ― UI */}</div>;
}src/index.tsμ 리μμ€ νΈλ€λ¬ μΆκ°:
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
// ...
if (uri === "widget://my-widget") {
return {
contents: [{
uri: "widget://my-widget",
mimeType: "application/vnd.mcp.widget+json",
text: JSON.stringify({
type: "my-widget",
props: { /* props */ },
}),
}],
};
}
// ...
});π λ°°ν¬νκΈ°
Manufact Cloudμ λ°°ν¬
manufact.com μ μ
GitHub 리ν¬μ§ν 리 μ°κ²°
mainλΈλμΉμ push β μλ λ°°ν¬
λλ CLI μ¬μ©:
npx @mcp-use/cli deployνκ²½ λ³μ μ€μ
νλ‘λμ
νκ²½μμ νμν νκ²½ λ³μκ° μλ€λ©΄ .env νμΌ μμ±:
# .env
API_KEY=your_api_key
DATABASE_URL=your_database_urlπ― νκ° κΈ°μ€ (ν΄μ»€ν€)
νλ‘μ νΈλ λ€μ κΈ°μ€μΌλ‘ νκ°λ©λλ€:
1. λ μ°½μ± (30μ ) π
μλ‘μ΄ κ°λ μ μ°½μμ±
"μ΄λ° κ²λ MCP μ±μΌλ‘ λ§λ€ μ μꡬλ!" νλ λλΌμ
2. μ€μ©μ± (30μ ) π‘
μ€μ λ¬Έμ ν΄κ²° λλ μν¬νλ‘μ° κ°μ
μ¬μ©μμκ² μ€μ§μ μΈ κ°μΉ μ 곡
3. μμ ―-λͺ¨λΈ μνΈμμ© (20μ ) π
useCallTool(),sendFollowUpMessage()λ± μλ°©ν₯ ν΅μ νμ©state(),setState()νμ©μμ ―κ³Ό AI λͺ¨λΈ κ°μ ν¨κ³Όμ μΈ μνΈμμ©
4. UI/UX (10μ ) π¨
μΈλ ¨λκ³ μ§κ΄μ μΈ κ²½ν
λ°μν λμμΈ
μ κ·Όμ±
5. νλ‘λμ μ€λΉ (10μ ) π
OAuth μΈμ¦
μ¨λ³΄λ© νλ‘μ°
μλ¬ μ²λ¦¬
μ¬μ©μ μ€μ κ΄λ¦¬
π μΆκ° 리μμ€
π€ κΈ°μ¬νκΈ°
μ΄μλ PRμ μΈμ λ νμν©λλ€!
π λΌμ΄μΌμ€
MIT License
π λΉ λ₯Έ μμ μμ½
# 1. μμ‘΄μ± μ€μΉ
npm install
# 2. λΉλ
npm run build
# 3. Claude Desktopμ μ°κ²°
# ~/Library/Application Support/Claude/claude_desktop_config.json νΈμ§
# 4. Claude Desktop μ¬μμ
# 5. Claudeμμ ν
μ€νΈ
# "greet" λꡬ νΈμΆνκ±°λ μμ ― νμ μμ²μ΄μ ChatGPTμ Claudeμμ μ€νλλ λ©μ§ μΈν°λν°λΈ MCP μ±μ λ§λ€ μ€λΉκ° λμμ΅λλ€! πβ¨
Available Tools
3 toolscalculateC
κ°λ¨ν μν κ³μ°μ μνν©λλ€
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes | κ³μ°ν μμ (μ: 2 + 2, 10 * 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states 'performs simple math calculations' without any details about behavior such as error handling, supported operators, or side effects. This is insufficient for an agent to understand the tool's operational traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and directly states the tool's purpose. It is front-loaded and contains no extraneous information. However, it could benefit from additional structure or details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description fails to explain return values, supported operators, or error conditions. For a simple calculator tool, the description is too sparse to fully inform an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the 'expression' parameter has a description with examples. The tool description adds no new information beyond what the schema already provides. Baseline 3 is appropriate as the description does not detract but adds minimal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'performs simple math calculations', clearly indicating the tool's purpose. It distinguishes from sibling tools 'get_time' and 'greet' which serve different functions. However, it does not specify the exact scope of supported math (e.g., arithmetic only or trigonometric functions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. While sibling tools are unrelated, the description does not provide explicit usage context or prerequisites. The agent must infer usage from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_timeB
νμ¬ μκ°μ μλ €μ€λλ€
| Name | Required | Description | Default |
|---|---|---|---|
| timezone | No | μκ°λ (μ: Asia/Seoul, America/New_York) | Asia/Seoul |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden but only states 'tells the current time'. It does not disclose behavioral traits such as error handling, format of returned time, or timezone validation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and to the point. However, it lacks front-loading of key details like output format, but for a simple tool, brevity is acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional param, no output schema), the description is partially complete but fails to explain the return value format, which is needed for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 no value beyond the schema regarding the timezone parameter; it only repeats the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'νμ¬ μκ°μ μλ €μ€λλ€' clearly states the tool provides the current time. It uses a specific verb-resource combination and implicitly distinguishes from siblings 'calculate' and 'greet', which are unrelated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when or when not to use this tool versus alternatives. The description lacks any contextual direction beyond its basic function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
greetB
μ¬μ©μμκ² νμ λ©μμ§λ₯Ό νμν©λλ€
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | μ¬μ©μ μ΄λ¦ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should fully disclose behavior. It only states it displays a welcome message, with no mention of side effects, required permissions, or expected outcomes. Insufficient for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no wasted words. It conveys the purpose directly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool, the description is adequate but lacks explanation of the return value or effect. With no output schema, the agent might not know what to expect after invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (one parameter 'name' with description 'μ¬μ©μ μ΄λ¦'). The tool description adds no extra meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'νμν©λλ€' (display) and the resource 'νμ λ©μμ§' (welcome message), making the action unambiguous. It is distinct from sibling tools 'calculate' and 'get_time'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. Usage is implied as a simple greeting, but no specific context or exclusions are provided.
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.
3 tool updates
v1.0.0- First observed
calculate - First observed
get_time - First observed
greet
TDQS
Scored across 3 tools
Each tool has a distinct purpose: calculate handles math, get_time provides current time, greet shows a welcome message. There is no overlap or ambiguity.
All tools use lowercase verb-based names. 'get_time' uses an underscore, while 'calculate' and 'greet' are single words, but the pattern is still consistent and predictable.
With only 3 tools, the server is on the low end of the appropriate range. While it covers basic utilities, a slightly larger set (e.g., 5-10 tools) would feel more substantial.
For a simple utility server, the tools cover time, math, and greeting. Minor gaps like a date tool or advanced math operations could exist, but the set is functional and cohesive.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoβ¦
Build and manage AI-native customer support agents from Claude or any MCP client.
Live React design-system APIs, patterns, and code validation so AI agents build real UI, not slop.
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- AlicenseCqualityDmaintenanceA Model Context Protocol server that enables AI agents to generate, fetch, and manage UI components through natural language interactions.3237ISC
- -licenseAqualityNot gradedmaintenanceA foundation for building interactive applications using the Model Context Protocol that integrates AI capabilities with Magic UI components.111,6311-
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol implementation with a modular architecture that exposes capabilities through specialized agents, enabling seamless integration with Claude Desktop and web applications.2-
- AlicenseNot gradedqualityDmaintenanceAn AI-agent-first framework for building MCP servers that deliver interactive React widgets directly within AI chat interfaces like ChatGPT and Claude. It includes automated visual testing and a zero-config local development environment designed for autonomous agent workflows.MIT