๐ Claude + Supabase MCP๋ก 40๋ถ๋ง์ ๋ง์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถํ๊ธฐ
"๊ฐ๋ฐ ์ง์์ด ๋ถ์กฑํด๋ AI์ ํจ๊ป๋ผ๋ฉด ๊ธฐ์ด MVP๋ฅผ ๋ง๋ค ์ ์๋ค!"
์คํํธ์ ์ฐฝ์ ์ค๋น์์ด Claude MCP๋ฅผ ํ์ฉํด ์ค์ ์๋น์ค ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ถํ ์ค์ ๊ฒฝํ๋ด
๐ ๋ค์ด๊ฐ๋ฉฐ
์๋ ํ์ธ์! ์ ๋ ํ์ฌ ํ๋ก์ ํธ๋ฅผ ์ฌ์ ํ ๋์ ํ๊ณ ์๋ ์ฐฝ์ ์ค๋น์์ ๋๋ค. ๊ฐ๋ฐ ์ง์์ ๋ง์ด ๋ถ์กฑํ์ง๋ง, ์ต๊ทผ Claude, ์ปค์์ MCP(Model Context Protocol) ๊ธฐ๋ฅ์ ํ์ฉํด์ ๋๋ผ์ด ๊ฒฝํ์ ํ์ต๋๋ค.
๋จ 40๋ถ๋ง์ 30๊ฐ ๋ ์คํ ๋์ ์์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ์ต๋๋ค.
์ฃผ๋ก ์ต๊ทผ ํด๋ก๋์ ์ปค์์์ MCP ํ์ฉํ ์ ์๋ค๋ ์ฅ์ ์ ์ ๋๊ปด์ ธ์, ์ ์ฐฝ์
์์ ๋์์ ํ ์ ์๋ ๊ฒ์ด ๋ฌด์์ธ์ง๋ฅผ ๋ฐ์ํด๋ณด์์ต๋๋ค.
๋ฌ๋ฒ๋ธ๋ก MVP ๊ตฌ์ถํ๋ ๊ณผ์ ์ ์ํ๋ฒ ์ด์ค์ ๋ง์ง ๋ฐ์ดํ ์์ง ์ ๋ฆฌ๋ฑ์ ์ด๋ ค์์ ์ ๋๊ปด์ก์ต๋๋ค. ๊ทธ๋์ ๋ฐฉ๋ฒ์ ์ฐพ๋ค๋ณด๋๊น ํน์๋ ์ํ๋ฒ ์ด์ค๋ ํด๋ก๋๋ ์ปค์๋ฅผ ํตํด ์์ ๊ฐ๋ฅํ์ง ์์๊น์๋ผ๊ณ ํด์ ์ฐพ๊ฒ ๋์์ต๋๋ค!
์ด ๊ฒฝํ์ ์คํฐ๋ ๊ทธ๋ฃน ์ฌ๋ฌ๋ถ๊ณผ ๊ณต์ ํ๊ณ ์ถ์ด์ ๊ธ์ ์์ฑํฉ๋๋ค.
๐ฏ ํ๋ก์ ํธ ๊ฐ์
๋ชฉํ: ๋ง์ง 30๊ณณ์ ๋ค๊ตญ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถ
์กฐ๊ฑด: ๋ค์ด๋ฒ/์นด์นด์ค ํ์ 3์ด์, ํ๊ตญ์ด + ์ค๊ตญ์ด ์ง์
๊ฒฐ๊ณผ: ์๋ฒฝํ ๋ ์คํ ๋ DB + ์น ์ธํฐํ์ด์ค๊น์ง ์์ฑ!
๐ ๏ธ 1๋จ๊ณ: Supabase MCP ์ค์ ํ๊ธฐ
1-1. Supabase ํ๋ก์ ํธ ์์ฑ
1. https://supabase.com ์ ์
2. ์ ํ๋ก์ ํธ ์์ฑ
3. ํ๋ก์ ํธ ์ ๋ณด ๊ธฐ๋ก:
- Project URL: https://[ํ๋ก์ ํธID].supabase.co
- Anon Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... (๊ณต๊ฐ์ฉ)
1-2. ๊ฐ์ธ ์ก์ธ์ค ํ ํฐ ์์ฑ โ ๏ธ ํต์ฌ!
1. Supabase ๋์๋ณด๋ โ ์ฐ์ธก ์๋จ ํ๋กํ ์์ด์ฝ
2. "Account" โ "Access Tokens"
3. "Generate new token" ํด๋ฆญ
4. ๊ถํ ์ค์ : projects:read, projects:write
5. ํ ํฐ ๋ณต์ฌ (sbp_๋ก ์์ํ๋ ํ ํฐ)
1-3. Claude MCP ์ค์
{
"mcpServers": {
"supabase": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@supabase/mcp-server-supabase@latest",
"--access-token",
"sbp_[์ฌ๊ธฐ์_๊ฐ์ธ_์ก์ธ์ค_ํ ํฐ]"
]
}
}
}
๐ฅ ํต์ฌ ํ: anon key๊ฐ ์๋ ๊ฐ์ธ ์ก์ธ์ค ํ ํฐ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค!
์ ์ด๋ฏธ์ง ์ฐธ๊ณ (ํ ํฐ ํ์ธ)
๐ช 2๋จ๊ณ: ๋ง๋ฒ ๊ฐ์ ํ๋กฌํํธ ์์ฑ๋ฒ
2-1. ์๋ฒฝํ ํ๋กฌํํธ ํ ํ๋ฆฟ
Supabase ํ๋ก์ ํธ ID: [ํ๋ก์ ํธID]
ํ
์ด๋ธ๋ช
: restaurants
๋ฐ์ดํฐ ์
๋ ฅ ์์ฒญ:
- ์ฃผ์ : "๋ง์ง"
- ๊ฐ์: 30๊ฐ
- ์กฐ๊ฑด: "๋ค์ด๋ฒ/์นด์นด์ค ํ์ 3 ์ด์"
- ์ธ์ด: "ํ๊ตญ์ด + ์์ด"
- ํน๋ณ ์๊ตฌ์ฌํญ: "๋ค์ํ ์นดํ
๊ณ ๋ฆฌ"
[ํ
์ด๋ธ ์คํค๋ง ์ฒจ๋ถ]
2-2. ์ค์ ์ฌ์ฉํ ํ๋กฌํํธ
"์ง๊ธ ์ด Supabase ํ์ด์ง์์ ์ด ๊ท๊ฒฉ์ ๋ง๊ฒ 30๊ฐ๊น์ง ๋ค์ด๋ฒ๋ ์นด์นด์ค ํ์ 3 ์ด์ ๋ง์ง ๋ฐ์ดํฐ ์ ๋ ฅํด์ผ ํฉ๋๋ค. ์ฌ์ฉ ์ธ์ด๋ ํ๊ตญ์ด์ ๋ฒ์ฒด์ ์ค๊ตญ์ด๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํด์ผ ํฉ๋๋ค."
๐ง 3๋จ๊ณ: Claude์ ๋๋ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ณผ์
3-1. ์๋ ์ ์ฝ์กฐ๊ฑด ํ์
Claude๊ฐ ๋จผ์ ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํ์ต๋๋ค:
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name = 'restaurants';
๋ฐ๊ฒฌํ ์ ์ฝ์กฐ๊ฑด: price_range๋ 'budget', 'moderate', 'expensive'๋ง ํ์ฉ
3-2. ๋ฐ์ดํฐ ์
๋ ฅ ๋ฐ ์ค์๊ฐ ์ค๋ฅ ์์
์ฒ์ ์ ๋ ฅํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง๋ง, Claude๊ฐ ์ฆ์ ์์ ํ์ต๋๋ค:
โ ์ค๋ฅ: price_range ์ ์ฝ์กฐ๊ฑด ์๋ฐ
โ
ํด๊ฒฐ: 'budget', 'moderate', 'expensive'๋ก ์๋ ๋ณ๊ฒฝ
3-3. ์ธ์ด๋ณ ๋ฐ์ดํฐ ์ ๋ฆฌ
Claude๊ฐ ์๋์ผ๋ก ์ธ์ด๋ฅผ ๋ถ๋ฆฌํด์ ์ ๋ฆฌํ์ต๋๋ค:
name: ์ค๊ตญ์ดname_ko: ์์ ํ๊ตญ์ดdescription: ์์ดdescription_ko: ์์ ํ๊ตญ์ด
๐ 4๋จ๊ณ: ๋ฐ์ดํฐ ํ์ง ๊ด๋ฆฌ์ ๋น๋ฐ
4-1. ์ค์๊ฐ ์ค๋ฅ ๊ฐ์ง
-- Claude๊ฐ ์ฌ์ฉํ ํ์ง ๊ฒ์ฌ ์ฟผ๋ฆฌ
SELECT name, name_ko, category, rating
FROM restaurants
WHERE category NOT IN ('ํ์', '์ผ์', '์ค์', '์์', '์นดํ', '์นํจ')
OR rating = 0
OR name_ko LIKE '%ๆ%';
4-2. ๋๋ ๋ฐ์ดํฐ ์์
Claude๊ฐ ํ ๋ฒ์ ์ฌ๋ฌ ๋ ์ฝ๋๋ฅผ ์์ ํ์ต๋๋ค:
UPDATE restaurants SET
name_ko = CASE
WHEN name_ko = '๋ช
๋๊ต์ ๆๆด้คๅญ' THEN '๋ช
๋๊ต์'
-- ... 30๊ฐ ๋ ์คํ ๋ ์ผ๊ด ์์
END;
๐ธ 5๋จ๊ณ: ์ด๋ฏธ์ง ์๋ ์ถ๊ฐ์ ๋ ธํ์ฐ
5-1. ๋ฌด๋ฃ ๊ณ ํ์ง ์ด๋ฏธ์ง ์์ค ํ์ฉ
UPDATE restaurants SET
images = ARRAY['https://images.unsplash.com/photo-1544025162-d76694265947?w=800&h=600&fit=crop']
WHERE name = 'ๆญฃ้ฃๅ ';
5-2. ์ด๋ฏธ์ง ์ต์ ํ ํ
Unsplash: ๋ฌด๋ฃ, ๊ณ ํ์ง, ์์ ์ ์ด์ฉ ๊ฐ๋ฅ
ํฌ๊ธฐ ์กฐ์ :
?w=800&h=600&fit=cropํ๋ผ๋ฏธํฐ ํ์ฉ
๐ ์ต์ข ๊ฒฐ๊ณผ๋ฌผ
๐ ์์ฑ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํ
โ ์ด 30๊ฐ ๋ ์คํ ๋
โ ํ๊ท ํ์ 3 ์ (๋ชจ๋ 3์ ์ด์)
โ 3๊ฐ ์ธ์ด ์ง์ (ํ๊ตญ์ด/์ค๊ตญ์ด/์์ด)
๐จ ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ์น ์ธํฐํ์ด์ค
Claude๊ฐ HTML ํด๋ผ์ด์ธํธ๊น์ง ๋ง๋ค์ด์ค์ ์ฆ์ ์์ฐ ๊ฐ๋ฅํ์ต๋๋ค!
๐ก ์คํํธ์ ์๊ฒ ์ฃผ๋ ์ค์ง์ ๋์
1. MVP ๊ฐ๋ฐ ์๊ฐ ๋จ์ถ
๊ธฐ์กด: ๊ฐ๋ฐ์ ๊ณ ์ฉ
ํ์ฌ: ํผ์์ ๊ธฐ๋ณธ ์์ด๋์ด ๊ตฌํ ์์ ๊ฐ๋ฅ
2. ํฌ์์ ํผ์นญ์ฉ ์ค์ ๋ฐ์ดํฐ
๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ ์ค์ ์๋น์ค ๊ฐ๋ฅํ ๋ฐ์ดํฐ
์ฆ์ ์์ฐ ๊ฐ๋ฅํ