PromStackμ 곡μ MCP(Model Context Protocol) μλ² κ΅¬ν체μ
λλ€.
**Official @modelcontextprotocol/sdk**λ₯Ό μ¬μ©νμ¬ μμ μ±κ³Ό νΈνμ±μ 보μ₯ν©λλ€.
μ΄ μλ²λ₯Ό ν΅ν΄ Claude Desktop, Cursor λ± MCP νΈν λꡬμμ PromStackμ ν둬ννΈλ₯Ό μ§μ λΆλ¬μ€κ³ μ€νν μ μμ΅λλ€.
- Node.js 18.0.0 μ΄μ
- PromStack API Key (μ€μ > API Keysμμ λ°κΈ)
npm install @promstack-1/mcp-server# μ§μ μ€ν
node bin/promstack-mcp.js --api-key YOUR_API_KEY
# λλ νκ²½ λ³μ μ¬μ©
export PROMPTSTACK_API_KEY=YOUR_API_KEY
node bin/promstack-mcp.jsClaude 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κ° μμΉν μ λ κ²½λ‘λ‘ μμ ν΄μΌ ν©λλ€.
νλ‘μ νΈμ ν둬ννΈ λͺ©λ‘μ μ‘°νν©λλ€.
κ²°κ³Όμλ κ° ν둬ννΈμ ID, μ λͺ©, μ€λͺ
, νμν λ³μκ° ν¬ν¨λ©λλ€.
projectIdλ₯Ό μ§μ νμ§ μμΌλ©΄ API Keyμ μ°κ²°λ λͺ¨λ νλ‘μ νΈμ ν둬ννΈλ₯Ό λ°νν©λλ€.
Parameters:
projectId(optional): νΉμ νλ‘μ νΈμ ν둬ννΈλ§ μ‘°νsearch(optional): κ²μμ΄λ‘ νν°λ§limit(optional): μ΅λ κ²°κ³Ό μ (κΈ°λ³Έ: 20, μ΅λ: 100)
μμ:
list_prompts({}) // μ 체 ν둬ννΈ λͺ©λ‘
list_prompts({ projectId: 5 }) // νΉμ νλ‘μ νΈλ§
list_prompts({ search: "λ§μΌν
" }) // κ²μ
νΉμ ν둬ννΈμ μμΈ μ 보λ₯Ό μ‘°νν©λλ€.
ν둬ννΈ IDλ₯Ό μ§μ νλ©΄ ν΄λΉ ν둬ννΈμ μ 체 λ΄μ©, μμ€ν ν둬ννΈ, νμν λ³μ λ±μ λ°νν©λλ€. ν둬ννΈλ₯Ό μ€ννκΈ° μ μ μμΈ λ΄μ©μ νμΈν λ μ μ©ν©λλ€.
Parameters:
promptId(required): μ‘°νν ν둬ννΈ ID
μμ:
get_prompt({ promptId: 42 })
μμ μ€λͺ μ λΆμνμ¬ κ°μ₯ μ ν©ν ν둬ννΈλ₯Ό μλμΌλ‘ μΆμ²ν©λλ€.
ν€μλ λ§€μΉμ μ¬μ©νμ¬ μμ μ€λͺ κ³Ό μ μ¬ν ν둬ννΈλ₯Ό μ°Ύμ΅λλ€. μΆμ² κ²°κ³Όμλ κ° ν둬ννΈμ κ΄λ ¨μ± μ μμ μ¬μ©λ²μ΄ ν¬ν¨λ©λλ€.
Selection Process:
- μμ μ€λͺ μ λΆμνμ¬ ν€μλλ₯Ό μΆμΆν©λλ€
- μ λͺ©, μ€λͺ , μΉ΄ν κ³ λ¦¬ λ§€μΉ μμΌλ‘ κ°μ€μΉλ₯Ό μ μ©ν©λλ€
- κ°μ₯ κ΄λ ¨μ± λμ ν둬ννΈλ₯Ό λ°νν©λλ€
μ€μ: 첫 λ²μ§Έ μΆμ² ν둬ννΈ(rank: 1)κ° κ°μ₯ μ ν©ν μ νμ λλ€.
- 첫 λ²μ§Έ μΆμ²μ μ°μ μ¬μ©νμΈμ
- μ¬λ¬ μ’μ νλ³΄κ° μμΌλ©΄ 첫 λ²μ§Έλ₯Ό μ ννλ, λ€λ₯Έ μ΅μ λ μ°Έκ³ κ°λ₯ν©λλ€
- μ ν©ν κ²°κ³Όκ° μμΌλ©΄ λ€λ₯Έ ν€μλλ‘ μ¬κ²μνμΈμ
Parameters:
taskDescription(required): μννλ €λ μμ μ λν μ€λͺprojectId(optional): κ²μ λ²μλ₯Ό νΉμ νλ‘μ νΈλ‘ μ νtopK(optional): μΆμ²ν ν둬ννΈ μ (κΈ°λ³Έ: 3, μ΅λ: 10)
μμ:
select_prompt({ taskDescription: "λ§μΌν
μ΄λ©μΌ μμ±" })
select_prompt({ taskDescription: "API μΈμ¦ ꡬν", projectId: 5 })
ν둬ννΈλ₯Ό Claude Skills νμ(SKILL.md)μΌλ‘ λ΄λ³΄λ λλ€.
μΆλ ₯μλ YAML frontmatter(name, description)μ Markdown λ³Έλ¬Έμ΄ ν¬ν¨λ©λλ€. μ΄ νμμ Claude Desktop, Claude Code λ±μμ μ€ν¬λ‘ μ¬μ©ν μ μμ΅λλ€.
Parameters:
promptId(required): λ΄λ³΄λΌ ν둬ννΈ IDincludeResources(optional): μ°Έμ‘° 리μμ€ ν¬ν¨ μ¬λΆ (κΈ°λ³Έ: false)
μμ:
export_skill({ promptId: 42 })
export_skill({ promptId: 42, includeResources: true })
ν둬ννΈμ μ°κ²°λ GitHub μ μ₯μ λλ λ¬Έμ URLμμ 컨ν μ€νΈλ₯Ό κ²μν©λλ€.
μ°κ²°λ μμ€μμ μ½λ, λ¬Έμ, README λ±μ μΆμΆνμ¬ λ°νν©λλ€. κ²°κ³Όλ μΊμ±λμ΄ λ°λ³΅ μμ² μ λΉ λ₯΄κ² μλ΅ν©λλ€ (TTL: 1μκ°).
νΉμ§:
- 10,000μ μ ν: Context7 νΈν νμ
- μλ μΊμ±: 1μκ° TTLλ‘ λ°λ³΅ μμ² μ΅μ ν
- λ€μ€ μμ€: GitHub μ μ₯μ λ° λ¬Έμ URL λμ μ§μ
Parameters:
promptId(required): ν둬ννΈ IDmaxTokens(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