@prampta/sdk 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/mcp.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":""}
package/dist/mcp.js ADDED
@@ -0,0 +1,273 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import { z } from 'zod';
5
+ // --- Config ---
6
+ const API_URL = (process.env.PRAMPTA_API_URL || 'https://prampta.com').replace(/\/+$/, '');
7
+ const API_KEY = process.env.PRAMPTA_API_KEY || '';
8
+ const TIMEOUT_MS = 30_000;
9
+ const MAX_RETRIES = 3;
10
+ const RETRY_DELAY_MS = 1000;
11
+ const VERSION = '0.3.0';
12
+ function validateConfig() {
13
+ if (!API_KEY) {
14
+ process.stderr.write('Error: PRAMPTA_API_KEY environment variable is required.\n' +
15
+ 'Get your key at https://prampta.com (Profile → API Keys).\n');
16
+ process.exit(1);
17
+ }
18
+ if (!API_KEY.startsWith('pk_')) {
19
+ process.stderr.write('Error: PRAMPTA_API_KEY must start with "pk_".\n' +
20
+ 'Get a valid key at https://prampta.com (Profile → API Keys).\n');
21
+ process.exit(1);
22
+ }
23
+ }
24
+ validateConfig();
25
+ // --- Logging ---
26
+ function log(level, message, data) {
27
+ const entry = { timestamp: new Date().toISOString(), level, message, ...data };
28
+ process.stderr.write(JSON.stringify(entry) + '\n');
29
+ }
30
+ // --- API client ---
31
+ function sanitizeErrorMessage(msg) {
32
+ return msg
33
+ .replace(/pk_[a-zA-Z0-9_-]+/g, 'pk_***')
34
+ .replace(/Bearer\s+\S+/gi, 'Bearer ***');
35
+ }
36
+ async function sleep(ms) {
37
+ return new Promise(resolve => setTimeout(resolve, ms));
38
+ }
39
+ async function api(method, path, body, options) {
40
+ const retries = options?.retries ?? MAX_RETRIES;
41
+ let lastError = null;
42
+ for (let attempt = 0; attempt <= retries; attempt++) {
43
+ const headers = {
44
+ 'User-Agent': `prampta-sdk/${VERSION}`,
45
+ 'Accept': 'application/json',
46
+ };
47
+ if (!options?.noAuth)
48
+ headers['Authorization'] = `Bearer ${API_KEY}`;
49
+ if (body)
50
+ headers['Content-Type'] = 'application/json';
51
+ const controller = new AbortController();
52
+ const timeout = setTimeout(() => controller.abort(), TIMEOUT_MS);
53
+ try {
54
+ const res = await fetch(`${API_URL}${path}`, {
55
+ method,
56
+ headers,
57
+ body: body ? JSON.stringify(body) : undefined,
58
+ signal: controller.signal,
59
+ });
60
+ clearTimeout(timeout);
61
+ if (res.status === 204)
62
+ return {};
63
+ if (res.status === 429) {
64
+ const retryAfter = res.headers.get('Retry-After');
65
+ const waitMs = retryAfter ? parseInt(retryAfter, 10) * 1000 : RETRY_DELAY_MS * (attempt + 1);
66
+ if (attempt < retries) {
67
+ log('warn', 'Rate limited, retrying', { attempt, waitMs });
68
+ await sleep(waitMs);
69
+ continue;
70
+ }
71
+ throw new Error('Rate limit exceeded. Try again later.');
72
+ }
73
+ if (res.status >= 500 && attempt < retries) {
74
+ log('warn', 'Server error, retrying', { status: res.status, attempt });
75
+ await sleep(RETRY_DELAY_MS * (attempt + 1));
76
+ continue;
77
+ }
78
+ let data;
79
+ try {
80
+ data = await res.json();
81
+ }
82
+ catch {
83
+ throw new Error(`API returned non-JSON response (${res.status})`);
84
+ }
85
+ if (!res.ok) {
86
+ const errMsg = (data && typeof data === 'object' && 'error' in data)
87
+ ? String(data.error)
88
+ : `API error ${res.status}`;
89
+ throw new Error(sanitizeErrorMessage(errMsg));
90
+ }
91
+ return data;
92
+ }
93
+ catch (e) {
94
+ clearTimeout(timeout);
95
+ if (e instanceof Error) {
96
+ if (e.name === 'AbortError' || e.message.includes('fetch')) {
97
+ lastError = new Error(sanitizeErrorMessage(`Request failed: ${e.message}`));
98
+ if (attempt < retries) {
99
+ log('warn', 'Network error, retrying', { error: e.message, attempt });
100
+ await sleep(RETRY_DELAY_MS * (attempt + 1));
101
+ continue;
102
+ }
103
+ }
104
+ else {
105
+ throw e;
106
+ }
107
+ }
108
+ else {
109
+ lastError = new Error('Unknown error occurred');
110
+ }
111
+ }
112
+ }
113
+ throw lastError ?? new Error('Request failed after retries');
114
+ }
115
+ function formatPromptText(p, includeContent = true) {
116
+ const lines = [
117
+ `${p.ppCode} ${p.title}`,
118
+ `${p.category} · ${(p.tags || []).join(', ')}`,
119
+ `${p.uses} uses · ${p.likes} likes${p.authorName ? ` · by ${p.authorName}` : ''}`,
120
+ ];
121
+ if (p.version && p.version > 1)
122
+ lines[0] += ` (V${p.version})`;
123
+ if (p.branch)
124
+ lines[0] += ` (B:${p.branch})`;
125
+ if (includeContent && p.content)
126
+ lines.push('', p.content);
127
+ if (p.media && Object.keys(p.media).length > 0)
128
+ lines.push('', `[${Object.keys(p.media).length} media attachment(s)]`);
129
+ return lines.join('\n');
130
+ }
131
+ function buildContentBlocks(p, includeContent = true) {
132
+ const blocks = [{ type: 'text', text: formatPromptText(p, includeContent) }];
133
+ if (p.media) {
134
+ for (const [hash, dataUrl] of Object.entries(p.media)) {
135
+ const match = dataUrl.match(/^data:([^;]+);base64,(.+)$/);
136
+ if (match && match[1].startsWith('image/')) {
137
+ blocks.push({ type: 'image', data: match[2], mimeType: match[1] });
138
+ }
139
+ else {
140
+ blocks.push({ type: 'text', text: `[Attachment ${hash}: non-image file]` });
141
+ }
142
+ }
143
+ }
144
+ return blocks;
145
+ }
146
+ const ok = (text) => ({ content: [{ type: 'text', text }] });
147
+ const okB = (blocks) => ({ content: blocks });
148
+ const err = (text) => ({ content: [{ type: 'text', text }], isError: true });
149
+ // --- MCP Server ---
150
+ const server = new McpServer({ name: 'prampta', version: VERSION });
151
+ server.tool('prampta_decode', "Get a prompt's full content from PRAMPTA by its PP code. Returns images inline if attached.", { code: z.string().min(5).max(80).describe('PP code (e.g. PP-3YGBM5V0HN-4)') }, async ({ code }) => {
152
+ try {
153
+ const data = await api('GET', `/api/decode?code=${encodeURIComponent(code)}`);
154
+ return okB(buildContentBlocks(data));
155
+ }
156
+ catch (e) {
157
+ return err(`Could not decode ${code}: ${e.message}`);
158
+ }
159
+ });
160
+ server.tool('prampta_lookup', 'Get prompt metadata from PRAMPTA without the full content', { code: z.string().min(5).max(80).describe('PP code to look up') }, async ({ code }) => {
161
+ try {
162
+ const data = await api('GET', `/api/lookup?code=${encodeURIComponent(code)}`);
163
+ return ok(formatPromptText(data, false));
164
+ }
165
+ catch (e) {
166
+ return err(`Could not look up ${code}: ${e.message}`);
167
+ }
168
+ });
169
+ server.tool('prampta_search', 'Search the PRAMPTA prompt library', {
170
+ query: z.string().optional().describe('Search text'),
171
+ category: z.enum(['development', 'design', 'marketing', 'data', 'writing', 'business']).optional().describe('Filter by category'),
172
+ limit: z.number().min(1).max(50).optional().describe('Max results (default 10)'),
173
+ }, async ({ query, category, limit }) => {
174
+ try {
175
+ const params = new URLSearchParams();
176
+ if (query)
177
+ params.set('search', query);
178
+ if (category)
179
+ params.set('category', category);
180
+ params.set('limit', String(limit || 10));
181
+ const qs = params.toString();
182
+ const data = await api('GET', `/api/search${qs ? `?${qs}` : ''}`);
183
+ const prompts = Array.isArray(data) ? data : (data.prompts ?? []);
184
+ const total = Array.isArray(data) ? data.length : (data.total ?? prompts.length);
185
+ if (prompts.length === 0)
186
+ return ok('No prompts found.');
187
+ const lines = prompts.map((p, i) => `${i + 1}. ${formatPromptText(p, false)}`);
188
+ lines.push('', `${total} total results`);
189
+ return ok(lines.join('\n\n'));
190
+ }
191
+ catch (e) {
192
+ return err(`Search failed: ${e.message}`);
193
+ }
194
+ });
195
+ server.tool('prampta_create', 'Create a new prompt on PRAMPTA and get its PP code. Supports text and media attachments.', {
196
+ content: z.string().min(10).max(50000).describe('Prompt text (10-50,000 chars)'),
197
+ title: z.string().max(200).optional().describe('Optional title'),
198
+ media: z.record(z.string(), z.string()).optional().describe('Media attachments: { "img1": "data:image/png;base64,..." }'),
199
+ }, async ({ content, title, media }) => {
200
+ try {
201
+ const body = { content, title };
202
+ if (media && Object.keys(media).length > 0)
203
+ body.media = media;
204
+ const data = await api('POST', '/api/create', body);
205
+ const lines = [`Created: ${data.ppCode}`, `Title: ${data.title}`, `Category: ${data.category}`, `Tags: ${(data.tags ?? []).join(', ')}`];
206
+ if (media && Object.keys(media).length > 0)
207
+ lines.push(`Media: ${Object.keys(media).length} attachment(s) included`);
208
+ return ok(lines.join('\n'));
209
+ }
210
+ catch (e) {
211
+ return err(`Failed to create prompt: ${e.message}`);
212
+ }
213
+ });
214
+ server.tool('prampta_my_prompts', 'List your own prompts on PRAMPTA (first 20 shown)', {}, async () => {
215
+ try {
216
+ const data = await api('GET', '/api/mine');
217
+ const prompts = Array.isArray(data) ? data : [];
218
+ if (prompts.length === 0)
219
+ return ok('No prompts yet.');
220
+ const lines = prompts.slice(0, 20).map((p, i) => `${i + 1}. ${formatPromptText(p, false)}`);
221
+ if (prompts.length > 20)
222
+ lines.push(`\n... and ${prompts.length - 20} more`);
223
+ return ok(lines.join('\n\n'));
224
+ }
225
+ catch (e) {
226
+ return err(`Failed to list prompts: ${e.message}`);
227
+ }
228
+ });
229
+ server.tool('prampta_health', 'Check PRAMPTA API connectivity and authentication status', {}, async () => {
230
+ try {
231
+ const start = Date.now();
232
+ await api('GET', '/health', undefined, { noAuth: true, retries: 1 });
233
+ const latency = Date.now() - start;
234
+ try {
235
+ await api('GET', '/api/mine', undefined, { retries: 1 });
236
+ return ok(`PRAMPTA API is healthy\nLatency: ${latency}ms\nAuthentication: Valid`);
237
+ }
238
+ catch (authErr) {
239
+ return ok(`PRAMPTA API is reachable\nLatency: ${latency}ms\nAuthentication: Failed - ${authErr.message}`);
240
+ }
241
+ }
242
+ catch (e) {
243
+ return err(`PRAMPTA API unreachable: ${e.message}`);
244
+ }
245
+ });
246
+ // --- Graceful shutdown ---
247
+ let isShuttingDown = false;
248
+ function shutdown(signal) {
249
+ if (isShuttingDown)
250
+ return;
251
+ isShuttingDown = true;
252
+ log('info', 'Shutting down', { signal });
253
+ process.exit(0);
254
+ }
255
+ process.on('SIGTERM', () => shutdown('SIGTERM'));
256
+ process.on('SIGINT', () => shutdown('SIGINT'));
257
+ process.on('uncaughtException', (e) => { log('error', 'Uncaught exception', { error: e.message, stack: e.stack }); process.exit(1); });
258
+ process.on('unhandledRejection', (r) => { log('error', 'Unhandled rejection', { reason: String(r) }); });
259
+ // --- Start ---
260
+ async function main() {
261
+ try {
262
+ log('info', 'Starting PRAMPTA MCP server', { version: VERSION, apiUrl: API_URL });
263
+ const transport = new StdioServerTransport();
264
+ await server.connect(transport);
265
+ log('info', 'PRAMPTA MCP server connected');
266
+ }
267
+ catch (e) {
268
+ log('error', 'Failed to start server', { error: e instanceof Error ? e.message : String(e) });
269
+ process.exit(1);
270
+ }
271
+ }
272
+ main();
273
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,15 +1,22 @@
1
1
  {
2
2
  "name": "@prampta/sdk",
3
- "version": "0.2.1",
4
- "description": "Official Node.js client for the PRAMPTA API — create, search, and manage AI prompts with retry logic and TypeScript support",
3
+ "version": "0.3.0",
4
+ "description": "Official Node.js SDK for PRAMPTA — create, search, and manage AI prompts. Includes built-in MCP server for Claude, Cursor and other AI assistants.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
+ "bin": {
9
+ "prampta-mcp": "./dist/mcp.js"
10
+ },
8
11
  "exports": {
9
12
  ".": {
10
13
  "import": "./dist/index.js",
11
14
  "types": "./dist/index.d.ts",
12
15
  "require": "./dist/index.cjs"
16
+ },
17
+ "./mcp": {
18
+ "import": "./dist/mcp.js",
19
+ "types": "./dist/mcp.d.ts"
13
20
  }
14
21
  },
15
22
  "files": [
@@ -28,6 +35,10 @@
28
35
  "pp-code",
29
36
  "ai",
30
37
  "llm",
38
+ "mcp",
39
+ "model-context-protocol",
40
+ "claude",
41
+ "cursor",
31
42
  "prompt-engineering",
32
43
  "ai-prompts",
33
44
  "sdk"
@@ -45,6 +56,10 @@
45
56
  "engines": {
46
57
  "node": ">=18"
47
58
  },
59
+ "dependencies": {
60
+ "@modelcontextprotocol/sdk": "^1.12.1",
61
+ "zod": "^3.24.2"
62
+ },
48
63
  "devDependencies": {
49
64
  "tsx": "^4.21.0",
50
65
  "typescript": "^5.7.0"