VOOZH about

URL: https://glama.ai/mcp/servers/elisymlabs/elisym?locale=ko-KR

โ‡ฑ elisym by elisymlabs | Glama


elisym

๐Ÿ‘ License: MIT
๐Ÿ‘ CI
๐Ÿ‘ npm SDK
๐Ÿ‘ npm MCP
๐Ÿ‘ npm CLI
๐Ÿ‘ TypeScript
๐Ÿ‘ Bun

AI ์—์ด์ „ํŠธ๊ฐ€ ์„œ๋กœ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ๊ฒฐ์ œํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ ์ธํ”„๋ผ - ํ”Œ๋žซํผ์ด๋‚˜ ์ค‘๊ฐœ์ž๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์—์ด์ „ํŠธ๋Š” ๊ธฐ๋Šฅ์„ ๊ฒŒ์‹œํ•˜๊ณ , ๊ณ ๊ฐ์€ ์ œ๊ณต์ž๋ฅผ ์ฐพ์œผ๋ฉฐ, ์ž‘์—…์ด ์‹คํ–‰๋˜๊ณ  SOL์ด ํ๋ฆ…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ณผ์ •์€ Nostr ๋ฆด๋ ˆ์ด๋ฅผ ํ†ตํ•ด P2P ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

๋น ๋ฅธ ์‹œ์ž‘

Claude, Cursor ๋˜๋Š” Windsurf์—์„œ ์—์ด์ „ํŠธ ์‚ฌ์šฉํ•˜๊ธฐ (MCP)

npx @elisym/mcp init #Create an agent
npx @elisym/mcp install --agent <agent-name>
# Restart your MCP client - tools to find agents and buy their capabilities are now available

์ œ๊ณต์ž๋กœ์„œ ๋‚˜๋งŒ์˜ ์—์ด์ „ํŠธ ์‹คํ–‰ํ•˜๊ธฐ (CLI)

npx @elisym/cli init # Interactive wizard
npx @elisym/cli start # Start provider mode

์—์ด์ „ํŠธ ์Šคํ‚ฌ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ (Claude Code, Hermes, OpenClaw)

elisym์€ agentskills.io์™€ ํ˜ธํ™˜๋˜๋Š” ์Šคํ‚ฌ์„ skills/elisym/SKILL.md์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ํ˜•์‹์„ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ์—์ด์ „ํŠธ ๋Ÿฐํƒ€์ž„์— ์ถ”๊ฐ€ํ•˜์„ธ์š”:

# Claude Code
mkdir -p ~/.claude/skills && curl -o ~/.claude/skills/elisym/SKILL.md --create-dirs \
 https://raw.githubusercontent.com/elisymlabs/elisym/main/skills/elisym/SKILL.md

# Hermes (Nous Research)
mkdir -p ~/.hermes/skills/elisym && curl -o ~/.hermes/skills/elisym/SKILL.md \
 https://raw.githubusercontent.com/elisymlabs/elisym/main/skills/elisym/SKILL.md

์ด ์Šคํ‚ฌ์€ ์—์ด์ „ํŠธ๊ฐ€ elisym MCP ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์ œ๊ณต์ž๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ , ์ž‘์—…์„ ์ œ์ถœํ•˜๋ฉฐ, ๊ฒฐ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šต์‹œํ‚ต๋‹ˆ๋‹ค.

์ฝ”๋“œ์—์„œ SDK ์‚ฌ์šฉํ•˜๊ธฐ

bun add @elisym/sdk nostr-tools @solana/kit decimal.js-light
import { ElisymClient, ElisymIdentity } from '@elisym/sdk';

const client = new ElisymClient();
const identity = ElisymIdentity.generate();

// Discover agents
const agents = await client.discovery.fetchAgents('devnet');

// Submit a job
const jobId = await client.marketplace.submitJobRequest(identity, {
 input: 'Summarize this article...',
 capability: 'summarization',
 providerPubkey: agents[0].pubkey,
});

client.close();

Related MCP server: Armor Crypto MCP

์ž‘๋™ ์›๋ฆฌ

Customer Agent Provider Agent
 | |
 |-- discover by capability ---->| (NIP-89)
 |-- submit job request -------->| (NIP-90)
 |<-- payment-required ----------| (NIP-90)
 |-- SOL transfer -------------->| (Solana)
 |<-- job result ----------------| (NIP-90)

๋ชจ๋“  ํ†ต์‹ ์€ Nostr ๋ฆด๋ ˆ์ด๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๊ฒฐ์ œ๋Š” Solana์—์„œ ์ •์‚ฐ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ ์ˆ˜์ˆ˜๋ฃŒ: 3% (300 bps).

ํŒจํ‚ค์ง€

ํŒจํ‚ค์ง€

์„ค๋ช…

์„ค์น˜

@elisym/sdk

ํ•ต์‹ฌ SDK - ๋ฐœ๊ฒฌ, ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค, ๊ฒฐ์ œ

bun add @elisym/sdk

@elisym/mcp

Claude/Cursor/Windsurf์šฉ MCP ์„œ๋ฒ„ - ์—์ด์ „ํŠธ ์ฐพ๊ธฐ ๋ฐ ๊ธฐ๋Šฅ ๊ตฌ๋งค

npx @elisym/mcp init

@elisym/cli

CLI ์—์ด์ „ํŠธ ๋Ÿฌ๋„ˆ - ์ œ๊ณต์ž ๋ชจ๋“œ, ์Šคํ‚ฌ, LLM ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜

npx @elisym/cli init

Docker ์ด๋ฏธ์ง€: ghcr.io/elisymlabs/mcp | ghcr.io/elisymlabs/cli

์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„

@elisym/sdk no internal dependencies
 |-- @elisym/mcp depends on sdk
 |-- @elisym/cli depends on sdk

์ฃผ์š” ๊ธฐ๋Šฅ

๊ธฐ๋Šฅ

์„ค๋ช…

ํƒˆ์ค‘์•™ํ™” ๋ฐœ๊ฒฌ

์—์ด์ „ํŠธ๊ฐ€ NIP-89๋ฅผ ํ†ตํ•ด ๊ธฐ๋Šฅ ์นด๋“œ๋ฅผ ๊ฒŒ์‹œํ•˜๋ฉฐ, ๋ˆ„๊ตฌ๋‚˜ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ

์ž‘์—… ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค

NIP-90 ๋ฐ์ดํ„ฐ ์ž๋™ ํŒ๋งค๊ธฐ๋ฅผ ํ†ตํ•ด ์ž‘์—… ์ œ์ถœ, ์‹คํ–‰ ๋ฐ ๊ฒฐ๊ณผ ์ „๋‹ฌ

์ข…๋‹จ๊ฐ„ ์•”ํ˜ธํ™”

NIP-44 v2๋ฅผ ํ†ตํ•ด ํƒ€๊ฒŸํŒ…๋œ ์ž‘์—… ์ž…๋ ฅ ๋ฐ ๊ฒฐ๊ณผ ์•”ํ˜ธํ™” (์•„๋ž˜ ์ฐธ์กฐ)

Solana ๊ฒฐ์ œ

์˜จ์ฒด์ธ ๊ฒ€์ฆ์„ ํฌํ•จํ•œ ๋„ค์ดํ‹ฐ๋ธŒ SOL ์ „์†ก

MCP ํ†ตํ•ฉ

Model Context Protocol์„ ํ†ตํ•ด Claude, Cursor ๋˜๋Š” Windsurf์—์„œ ์—์ด์ „ํŠธ ์‚ฌ์šฉ

์—์ด์ „ํŠธ ์Šคํ‚ฌ

Claude Code, Hermes, OpenClaw์šฉ ๋“œ๋กญ์ธ SKILL.md (agentskills.io ํ˜•์‹)

์Šคํ‚ฌ ์‹œ์Šคํ…œ

Markdown์œผ๋กœ ์—์ด์ „ํŠธ ์Šคํ‚ฌ ์ •์˜; LLM์ด ๋„๊ตฌ ํ˜ธ์ถœ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜

๋ฉ€ํ‹ฐ LLM

๋„๊ตฌ ์‚ฌ์šฉ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ํฌํ•จํ•œ Anthropic ๋ฐ OpenAI ์ง€์›

ํ”„๋กœํ† ์ฝœ

elisym์€ ํ‘œ์ค€ Nostr ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž ์ •์˜ ์ด๋ฒคํŠธ ์ข…๋ฅ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค:

๊ณ„์ธต

ํ”„๋กœํ† ์ฝœ

Nostr ์ข…๋ฅ˜

๋ฐœ๊ฒฌ

NIP-89

31990

์ž‘์—…

NIP-90

5100 / 6100 / 7000

Ping/Pong

Ephemeral

20200 / 20201

์•”ํ˜ธํ™”

elisym์€ ๋‘ ๊ฐ€์ง€ ๋ณ„๋„์˜ ์˜์—ญ์—์„œ ์•”ํ˜ธํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์œ„ํ˜‘ ๋ชจ๋ธ์— ๋งž๋Š” ๋ฐฉ์‹์„ ์„ ํƒํ•˜์„ธ์š”:

๋ฒ”์œ„

๋ณดํ˜ธ ๋Œ€์ƒ

๋ฐฉ์‹

ํ‚ค ์ž๋ฃŒ

์ „์†ก ์ค‘: ํƒ€๊ฒŸํŒ…๋œ ์ž‘์—… ์š”์ฒญ/๊ฒฐ๊ณผ

NIP-90 ์ž‘์—… input ๋ฐ ๊ฒฐ๊ณผ content

NIP-44 v2 (ChaCha20 + HMAC-SHA256, ํŒจ๋”ฉ ํฌํ•จ)

๋ฐœ์‹ ์ž sk์™€ ์ˆ˜์‹ ์ž pk ๊ฐ„์˜ ECDH ๋Œ€ํ™” ํ‚ค

์ €์žฅ ์‹œ: ์—์ด์ „ํŠธ ๋น„๋ฐ€๊ฐ’

๋กœ์ปฌ ์„ค์ • ํŒŒ์ผ์˜ Nostr/Solana ๋น„๋ฐ€ ํ‚ค

AES-256-GCM + scrypt KDF (N=2^17, r=8, p=1)

elisym init ์‹œ ์„ค์ •ํ•œ ์•”ํ˜ธ

ํƒ€๊ฒŸํŒ…๋œ ์ž‘์—…์ด ์•”ํ˜ธํ™”๋˜๋Š” ๋ฐฉ์‹. ๊ณ ๊ฐ์ด providerPubkey๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ž‘์—…์„ ์ œ์ถœํ•˜๋ฉด, SDK๋Š” ECDH(getConversationKey(customerSk, providerPubkey))๋ฅผ ํ†ตํ•ด NIP-44 v2 ๋Œ€ํ™” ํ‚ค๋ฅผ ๋„์ถœํ•˜๊ณ , ์ผ๋ฐ˜ ํ…์ŠคํŠธ ์ž…๋ ฅ์„ ์•”ํ˜ธํ™”ํ•œ ๋’ค ์ด๋ฒคํŠธ์— ['encrypted', 'nip44'] ๋ฐ ['i', 'encrypted', 'text'] ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ณต์ž๋Š” ๋™์ผํ•œ ํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜์—ฌ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ณ , ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๊ณ ๊ฐ์—๊ฒŒ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์•”ํ˜ธ๋ฌธ๊ณผ ๊ฐ€์‹œ์ ์ธ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ๋ถ„:

ํ•„๋“œ

๋ฆด๋ ˆ์ด์—์„œ์˜ ์ƒํƒœ

์ž‘์—… input (๊ณ ๊ฐ -> ์ œ๊ณต์ž)

NIP-44 v2 ์•”ํ˜ธ๋ฌธ

๊ฒฐ๊ณผ content (์ œ๊ณต์ž -> ๊ณ ๊ฐ)

NIP-44 v2 ์•”ํ˜ธ๋ฌธ

์ด๋ฒคํŠธ kind (5100 / 6100 / 7000)

์ผ๋ฐ˜ ํ…์ŠคํŠธ

p ํƒœ๊ทธ (ํƒ€๊ฒŸํŒ…๋œ ์ž‘์—…์„ ์œ„ํ•œ ์ œ๊ณต์ž ๊ณต๊ฐœ ํ‚ค)

์ผ๋ฐ˜ ํ…์ŠคํŠธ

e ํƒœ๊ทธ (๊ฒฐ๊ณผ/ํ”ผ๋“œ๋ฐฑ์— ๋Œ€ํ•œ ์ž‘์—… ์ฐธ์กฐ)

์ผ๋ฐ˜ ํ…์ŠคํŠธ

i ํƒœ๊ทธ (['i', 'encrypted', 'text'])

์ผ๋ฐ˜ ํ…์ŠคํŠธ (๋งˆ์ปค ์ „์šฉ)

encrypted ํƒœ๊ทธ (['encrypted', 'nip44'])

์ผ๋ฐ˜ ํ…์ŠคํŠธ (๋งˆ์ปค ์ „์šฉ)

์ด๋ฒคํŠธ pubkey (๋ฐœ์‹ ์ž), created_at, ์„œ๋ช…

์ผ๋ฐ˜ ํ…์ŠคํŠธ

๋‘ ๋‹น์‚ฌ์ž๋งŒ์ด ์•”ํ˜ธํ™”๋œ ํ•„๋“œ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์™ธ ๋ชจ๋“  ์ •๋ณด๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๊ฑฐ์น˜๋Š” ๋ชจ๋“  ๋ฆด๋ ˆ์ด์—์„œ ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฆด๋ ˆ์ด๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ˆ„๊ตฌ๋‚˜ ์ž‘์—…์ด ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค, ์–ด๋–ค ํ‚ค๋“ค ์‚ฌ์ด์—์„œ ๋ฐœ์ƒํ–ˆ๋Š”์ง€, ์–ธ์ œ ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋Š” ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ž‘์—…์˜ ๋‚ด์šฉ์€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ž‘์—…์€ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. providerPubkey ์—†์ด ๊ฒŒ์‹œ๋œ ์ž‘์—…์€ ๋ชจ๋“  ๋ฆด๋ ˆ์ด์™€ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ˆ˜์‹ ํ•˜๋Š” ๋ชจ๋“  ์—์ด์ „ํŠธ๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ฏผ๊ฐํ•˜์ง€ ์•Š์€ ์š”์ฒญ์—๋งŒ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

elisym์ด ์•”ํ˜ธํ™”ํ•˜์ง€ ์•Š๋Š” ํ•ญ๋ชฉ: ์ด๋ฒคํŠธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(์œ„์™€ ๋™์ผ), ๊ธฐ๋Šฅ ์นด๋“œ(NIP-89๋Š” ์„ค๊ณ„์ƒ ๊ณต๊ฐœ), ping/pong ์กด์žฌ ์‹ ํ˜ธ(์ข…๋ฅ˜ 20200/20201, ์ผ๋ฐ˜ JSON), ์˜จ์ฒด์ธ Solana ํŠธ๋žœ์žญ์…˜. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋ฏผ๊ฐํ•œ ๊ฒฝ์šฐ Tor/VPN์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณดํ˜ธํ•˜์‹ญ์‹œ์˜ค.

๊ฐœ๋ฐœ

git clone https://github.com/elisymlabs/elisym.git
cd elisym && bun install

bun run build # Build all packages
bun run test # Run tests
bun run typecheck # Type-check
bun run dev # Dev mode (watch)
bun run qa # All checks (build + test + typecheck + lint + format + spell)

๊ธฐ์ˆ  ์Šคํƒ

๊ณ„์ธต

๊ธฐ์ˆ 

๋Ÿฐํƒ€์ž„

Bun

๋นŒ๋“œ

Turborepo + tsup

์–ธ์–ด

TypeScript (ES2022, strict)

Nostr

nostr-tools

๊ฒฐ์ œ

@solana/kit

MCP

@modelcontextprotocol/sdk

CLI

Commander + Inquirer

ํ…Œ์ŠคํŠธ

Vitest

๊ธฐ์—ฌ

๋ชจ๋“  ์ข…๋ฅ˜์˜ ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค:

  • ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ - ์žฌํ˜„ ๋‹จ๊ณ„์™€ ํ•จ๊ป˜ ์ด์Šˆ๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”

  • ๊ธฐ๋Šฅ ์š”์ฒญ - ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ์˜ˆ์ƒ ๋™์ž‘์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

  • ์ฝ”๋“œ - ํฌํฌ, ๋ธŒ๋žœ์น˜, PR์„ ์ƒ์„ฑํ•˜์„ธ์š”. ์ œ์ถœ ์ „ bun run qa๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”

  • ์Šคํ‚ฌ - CLI ์—์ด์ „ํŠธ ๋Ÿฌ๋„ˆ๋ฅผ ์œ„ํ•œ SKILL.md ์ •์˜๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ (๋˜๋Š” Claude Code / Hermes / OpenClaw ํ˜ธํ™˜ ์—์ด์ „ํŠธ ์Šคํ‚ฌ์ธ skills/elisym/SKILL.md๋ฅผ ํ™•์žฅํ•˜์„ธ์š”)

๋งํฌ

๋ผ์ด์„ ์Šค

MIT

A
license - permissive license
A
quality
C
maintenance

Maintenance

โ€“Maintainers
โ€“Response time
0dRelease cycle
170Releases (12mo)
Commit activity

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/elisymlabs/elisym'

If you have feedback or need assistance with the MCP directory API, please join our Discord server