MCP Kkebi
A framework for building interactive UI applications and React-based widgets for ChatGPT and Claude using the Model Context Protocol. It enables developers to create custom tools and visual components that facilitate rich, bidirectional interaction between AI models and users.
README
MCP Kkebi π
ChatGPTμ Claudeμμ μ€νλλ μΈν°λν°λΈ UI μ ν리μΌμ΄μ μ ꡬμΆνλ MCP μ±μ λλ€.
π Repository: github.com/mimsut/mcp_kkebi
β¨ νΉμ§
- π¨ μΈν°λν°λΈ μμ ―: React κΈ°λ°μ μλ¦λ€μ΄ UI μ»΄ν¬λνΈ
- π€ AI ν΅ν©: ChatGPTμ Claudeμμ λ°λ‘ μ¬μ© κ°λ₯
- β‘οΈ λΉ λ₯Έ κ°λ°: TypeScript + Hot Reload
- π¦ μ¬μ΄ λ°°ν¬: Manufact Cloud μ§μ
- π§ νμ₯ κ°λ₯: μλ‘μ΄ λꡬμ μμ ― μ½κ² μΆκ°
π λΉ λ₯Έ μμ
# 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 install
2. λΉλ
npm run build
3. κ°λ° λͺ¨λ μ€ν (ν« λ¦¬λ‘λ)
npm run dev
4. νλ‘λμ μ€ν
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.js
Inspectorμμ νμΈ
MCP Inspectorλ₯Ό μ¬μ©νλ©΄ λ€μμ ν μ μμ΅λλ€:
- λͺ¨λ λꡬμ 리μμ€ λͺ©λ‘ νμΈ
- ν μ€νΈ μ λ ₯μΌλ‘ λꡬ νΈμΆ
- μμ ― 미리보기 λΌμ΄λΈλ‘ νμΈ
- μ½λ λ³κ²½ μ μ¦μ ν« λ¦¬λ‘λ
π μλ‘μ΄ μμ ― μΆκ°νκΈ°
resources/ν΄λμ μ λλ ν 리 μμ±:
mkdir resources/my-widget
types.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 μΈμ¦
- μ¨λ³΄λ© νλ‘μ°
- μλ¬ μ²λ¦¬
- μ¬μ©μ μ€μ κ΄λ¦¬
π μΆκ° 리μμ€
- mcp-use λ¬Έμ
- GitHub 리ν¬μ§ν 리
- ν΄μ»€ν€ μ€νν° λ ν¬
- Inspector (μ¨λΌμΈ)
- MCP 곡μ λ¬Έμ
π€ κΈ°μ¬νκΈ°
μ΄μλ 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 μ±μ λ§λ€ μ€λΉκ° λμμ΅λλ€! πβ¨
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.