Skip to content

Latest commit

Β 

History

History
202 lines (134 loc) Β· 5.48 KB

File metadata and controls

202 lines (134 loc) Β· 5.48 KB

@promstack-1/mcp-server

PromStack의 곡식 MCP(Model Context Protocol) μ„œλ²„ κ΅¬ν˜„μ²΄μž…λ‹ˆλ‹€.
**Official @modelcontextprotocol/sdk**λ₯Ό μ‚¬μš©ν•˜μ—¬ μ•ˆμ •μ„±κ³Ό ν˜Έν™˜μ„±μ„ 보μž₯ν•©λ‹ˆλ‹€.

이 μ„œλ²„λ₯Ό 톡해 Claude Desktop, Cursor λ“± MCP ν˜Έν™˜ λ„κ΅¬μ—μ„œ PromStack의 ν”„λ‘¬ν”„νŠΈλ₯Ό 직접 뢈러였고 μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸš€ μ‹œμž‘ν•˜κΈ°

1. 사전 μš”κ΅¬μ‚¬ν•­

  • Node.js 18.0.0 이상
  • PromStack API Key (μ„€μ • > API Keysμ—μ„œ λ°œκΈ‰)

2. μ„€μΉ˜

npm install @promstack-1/mcp-server

3. CLI μ‹€ν–‰

# 직접 μ‹€ν–‰
node bin/promstack-mcp.js --api-key YOUR_API_KEY

# λ˜λŠ” ν™˜κ²½ λ³€μˆ˜ μ‚¬μš©
export PROMPTSTACK_API_KEY=YOUR_API_KEY
node bin/promstack-mcp.js

βš™οΈ Claude Desktop μ„€μ •

Claude Desktop μ„€μ • 파일 λ‘œλ“œ:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "promstack": {
      "command": "node",
      "args": [
        "D:/workspace/Prompt-Manager/mcp-server/bin/promstack-mcp.js",
        "--api-key",
        "YOUR_PK_LIVE_KEY"
      ]
    }
  }
}

주의: args의 κ²½λ‘œλŠ” μ‹€μ œ mcp-serverκ°€ μœ„μΉ˜ν•œ μ ˆλŒ€ 경둜둜 μˆ˜μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.

πŸ› οΈ 제곡 도ꡬ (Tools)

1. list_prompts

ν”„λ‘œμ νŠΈμ˜ ν”„λ‘¬ν”„νŠΈ λͺ©λ‘μ„ μ‘°νšŒν•©λ‹ˆλ‹€.

κ²°κ³Όμ—λŠ” 각 ν”„λ‘¬ν”„νŠΈμ˜ ID, 제λͺ©, μ„€λͺ…, ν•„μš”ν•œ λ³€μˆ˜κ°€ ν¬ν•¨λ©λ‹ˆλ‹€. projectIdλ₯Ό μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ API Key에 μ—°κ²°λœ λͺ¨λ“  ν”„λ‘œμ νŠΈμ˜ ν”„λ‘¬ν”„νŠΈλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

Parameters:

  • projectId (optional): νŠΉμ • ν”„λ‘œμ νŠΈμ˜ ν”„λ‘¬ν”„νŠΈλ§Œ 쑰회
  • search (optional): κ²€μƒ‰μ–΄λ‘œ 필터링
  • limit (optional): μ΅œλŒ€ κ²°κ³Ό 수 (κΈ°λ³Έ: 20, μ΅œλŒ€: 100)

μ˜ˆμ‹œ:

list_prompts({})                           // 전체 ν”„λ‘¬ν”„νŠΈ λͺ©λ‘
list_prompts({ projectId: 5 })             // νŠΉμ • ν”„λ‘œμ νŠΈλ§Œ
list_prompts({ search: "λ§ˆμΌ€νŒ…" })          // 검색

2. get_prompt

νŠΉμ • ν”„λ‘¬ν”„νŠΈμ˜ 상세 정보λ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€.

ν”„λ‘¬ν”„νŠΈ IDλ₯Ό μ§€μ •ν•˜λ©΄ ν•΄λ‹Ή ν”„λ‘¬ν”„νŠΈμ˜ 전체 λ‚΄μš©, μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈ, ν•„μš”ν•œ λ³€μˆ˜ 등을 λ°˜ν™˜ν•©λ‹ˆλ‹€. ν”„λ‘¬ν”„νŠΈλ₯Ό μ‹€ν–‰ν•˜κΈ° 전에 상세 λ‚΄μš©μ„ 확인할 λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

Parameters:

  • promptId (required): μ‘°νšŒν•  ν”„λ‘¬ν”„νŠΈ ID

μ˜ˆμ‹œ:

get_prompt({ promptId: 42 })

3. select_prompt

μž‘μ—… μ„€λͺ…을 λΆ„μ„ν•˜μ—¬ κ°€μž₯ μ ν•©ν•œ ν”„λ‘¬ν”„νŠΈλ₯Ό μžλ™μœΌλ‘œ μΆ”μ²œν•©λ‹ˆλ‹€.

ν‚€μ›Œλ“œ 맀칭을 μ‚¬μš©ν•˜μ—¬ μž‘μ—… μ„€λͺ…κ³Ό μœ μ‚¬ν•œ ν”„λ‘¬ν”„νŠΈλ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€. μΆ”μ²œ κ²°κ³Όμ—λŠ” 각 ν”„λ‘¬ν”„νŠΈμ˜ κ΄€λ ¨μ„± μ μˆ˜μ™€ μ‚¬μš©λ²•μ΄ ν¬ν•¨λ©λ‹ˆλ‹€.

Selection Process:

  1. μž‘μ—… μ„€λͺ…을 λΆ„μ„ν•˜μ—¬ ν‚€μ›Œλ“œλ₯Ό μΆ”μΆœν•©λ‹ˆλ‹€
  2. 제λͺ©, μ„€λͺ…, μΉ΄ν…Œκ³ λ¦¬ λ§€μΉ­ 순으둜 κ°€μ€‘μΉ˜λ₯Ό μ μš©ν•©λ‹ˆλ‹€
  3. κ°€μž₯ κ΄€λ ¨μ„± 높은 ν”„λ‘¬ν”„νŠΈλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€

μ€‘μš”: 첫 번째 μΆ”μ²œ ν”„λ‘¬ν”„νŠΈ(rank: 1)κ°€ κ°€μž₯ μ ν•©ν•œ μ„ νƒμž…λ‹ˆλ‹€.

  • 첫 번째 μΆ”μ²œμ„ μš°μ„  μ‚¬μš©ν•˜μ„Έμš”
  • μ—¬λŸ¬ 쒋은 후보가 있으면 첫 번째λ₯Ό μ„ νƒν•˜λ˜, λ‹€λ₯Έ μ˜΅μ…˜λ„ μ°Έκ³  κ°€λŠ₯ν•©λ‹ˆλ‹€
  • μ ν•©ν•œ κ²°κ³Όκ°€ μ—†μœΌλ©΄ λ‹€λ₯Έ ν‚€μ›Œλ“œλ‘œ μž¬κ²€μƒ‰ν•˜μ„Έμš”

Parameters:

  • taskDescription (required): μˆ˜ν–‰ν•˜λ €λŠ” μž‘μ—…μ— λŒ€ν•œ μ„€λͺ…
  • projectId (optional): 검색 λ²”μœ„λ₯Ό νŠΉμ • ν”„λ‘œμ νŠΈλ‘œ μ œν•œ
  • topK (optional): μΆ”μ²œν•  ν”„λ‘¬ν”„νŠΈ 수 (κΈ°λ³Έ: 3, μ΅œλŒ€: 10)

μ˜ˆμ‹œ:

select_prompt({ taskDescription: "λ§ˆμΌ€νŒ… 이메일 μž‘μ„±" })
select_prompt({ taskDescription: "API 인증 κ΅¬ν˜„", projectId: 5 })

4. export_skill

ν”„λ‘¬ν”„νŠΈλ₯Ό Claude Skills ν˜•μ‹(SKILL.md)으둜 λ‚΄λ³΄λƒ…λ‹ˆλ‹€.

좜λ ₯μ—λŠ” YAML frontmatter(name, description)와 Markdown 본문이 ν¬ν•¨λ©λ‹ˆλ‹€. 이 ν˜•μ‹μ€ Claude Desktop, Claude Code λ“±μ—μ„œ μŠ€ν‚¬λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

⚠️ 유료 κΈ°λŠ₯: Plus/Pro ν”Œλžœμ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€.

Parameters:

  • promptId (required): 내보낼 ν”„λ‘¬ν”„νŠΈ ID
  • includeResources (optional): μ°Έμ‘° λ¦¬μ†ŒμŠ€ 포함 μ—¬λΆ€ (κΈ°λ³Έ: false)

μ˜ˆμ‹œ:

export_skill({ promptId: 42 })
export_skill({ promptId: 42, includeResources: true })

5. query_context πŸ†•

ν”„λ‘¬ν”„νŠΈμ— μ—°κ²°λœ GitHub μ €μž₯μ†Œ λ˜λŠ” λ¬Έμ„œ URLμ—μ„œ μ»¨ν…μŠ€νŠΈλ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€.

μ—°κ²°λœ μ†ŒμŠ€μ—μ„œ μ½”λ“œ, λ¬Έμ„œ, README 등을 μΆ”μΆœν•˜μ—¬ λ°˜ν™˜ν•©λ‹ˆλ‹€. κ²°κ³ΌλŠ” μΊμ‹±λ˜μ–΄ 반볡 μš”μ²­ μ‹œ λΉ λ₯΄κ²Œ μ‘λ‹΅ν•©λ‹ˆλ‹€ (TTL: 1μ‹œκ°„).

νŠΉμ§•:

  • 10,000자 μ œν•œ: Context7 ν˜Έν™˜ ν˜•μ‹
  • μžλ™ 캐싱: 1μ‹œκ°„ TTL둜 반볡 μš”μ²­ μ΅œμ ν™”
  • 닀쀑 μ†ŒμŠ€: GitHub μ €μž₯μ†Œ 및 λ¬Έμ„œ URL λ™μ‹œ 지원

Parameters:

  • promptId (required): ν”„λ‘¬ν”„νŠΈ ID
  • maxTokens (optional): μ΅œλŒ€ 토큰 수 (κΈ°λ³Έ: 10000, μ΅œλŒ€: 10000)
  • refreshCache (optional): μΊμ‹œ λ¬΄μ‹œν•˜κ³  μƒˆλ‘œ κ°€μ Έμ˜€κΈ° (κΈ°λ³Έ: false)

Returns:

  • μ—°κ²°λœ μ†ŒμŠ€μ—μ„œ μΆ”μΆœν•œ μ»¨ν…μŠ€νŠΈ (μ΅œλŒ€ 10,000자)
  • μΊμ‹œ μƒνƒœ 정보 (cached: true/false)
  • μ†ŒμŠ€λ³„ 문자 수 톡계

μ˜ˆμ‹œ:

query_context({ promptId: 42 })
query_context({ promptId: 42, maxTokens: 5000 })
query_context({ promptId: 42, refreshCache: true })

πŸ—οΈ μ•„ν‚€ν…μ²˜

이 μ„œλ²„λŠ” Proxy 역할을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

User -> MCP Client (Claude) -> MCP Server (Local) -> HTTP (JSON-RPC) -> PromStack Backend
  • SDK: @modelcontextprotocol/sdk
  • Transport: StdioServerTransport
  • Validation: zod