opencode-puter-auth 1.0.60 → 1.1.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/README.md CHANGED
@@ -314,6 +314,92 @@ You can use ANY model from [OpenRouter's catalog](https://openrouter.ai/models)
314
314
 
315
315
  Note: Non-free models will consume your Puter credits based on OpenRouter pricing.
316
316
 
317
+ ## MCP Server Mode (Zed IDE, Claude Desktop, etc.)
318
+
319
+ This plugin includes a built-in MCP (Model Context Protocol) server, allowing you to use Puter AI models in any MCP-compatible application like **Zed IDE**, **Claude Desktop**, **Continue**, and more.
320
+
321
+ ### Quick Setup
322
+
323
+ 1. **Authenticate with Puter first:**
324
+
325
+ ```bash
326
+ npx opencode-puter-auth login
327
+ ```
328
+
329
+ 2. **Add to your MCP client configuration:**
330
+
331
+ **For Zed IDE** (`~/.config/zed/settings.json`):
332
+
333
+ ```json
334
+ {
335
+ "context_servers": {
336
+ "puter": {
337
+ "command": {
338
+ "path": "npx",
339
+ "args": ["opencode-puter-auth", "serve", "--mcp"]
340
+ }
341
+ }
342
+ }
343
+ }
344
+ ```
345
+
346
+ **For Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
347
+
348
+ ```json
349
+ {
350
+ "mcpServers": {
351
+ "puter": {
352
+ "command": "npx",
353
+ "args": ["opencode-puter-auth", "serve", "--mcp"]
354
+ }
355
+ }
356
+ }
357
+ ```
358
+
359
+ **For other MCP clients**, use the command:
360
+ ```bash
361
+ npx opencode-puter-auth serve --mcp
362
+ ```
363
+
364
+ Or if installed globally:
365
+ ```bash
366
+ puter-mcp
367
+ ```
368
+
369
+ ### Available MCP Tools
370
+
371
+ After setup, you'll have access to these tools:
372
+
373
+ | Tool | Description |
374
+ |------|-------------|
375
+ | **puter-chat** | Chat with 500+ AI models (Claude, GPT, Gemini, etc.). Supports system prompts, temperature, and max_tokens. |
376
+ | **puter-models** | List all available AI models. Filter by provider (anthropic, openai, google). |
377
+ | **puter-account** | Show account info including username and remaining credits. |
378
+
379
+ ### Example Usage in Zed
380
+
381
+ Once configured, you can use the tools in Zed's Agent Panel:
382
+
383
+ ```
384
+ Use puter-chat to ask Claude Opus 4.5 to explain this code
385
+ ```
386
+
387
+ ```
388
+ Use puter-models to list all available Anthropic models
389
+ ```
390
+
391
+ ```
392
+ Use puter-account to check my remaining credits
393
+ ```
394
+
395
+ ### Why Use Puter MCP?
396
+
397
+ - **500+ AI Models** - Access Claude Opus 4.5, GPT-5.2, Gemini 2.5 Pro, DeepSeek R1, and more
398
+ - **No API Keys** - Just sign in with your Puter account
399
+ - **Free Tier** - Try before you buy with Puter's free credits
400
+ - **400+ FREE OpenRouter Models** - Use `:free` models with no cost
401
+ - **Works Everywhere** - Any MCP-compatible client (Zed, Claude Desktop, Continue, etc.)
402
+
317
403
  ## AI SDK Provider (Standalone Usage)
318
404
 
319
405
  You can also use the Puter AI SDK provider directly in your own applications:
package/dist/cli.d.ts CHANGED
@@ -5,10 +5,11 @@
5
5
  * Provides command-line authentication management for the Puter.com provider.
6
6
  *
7
7
  * Usage:
8
- * puter-auth login - Authenticate with Puter.com
9
- * puter-auth logout - Remove all stored credentials
10
- * puter-auth status - Show current authentication status
11
- * puter-auth --help - Show this help message
8
+ * puter-auth login - Authenticate with Puter.com
9
+ * puter-auth logout - Remove all stored credentials
10
+ * puter-auth status - Show current authentication status
11
+ * puter-auth serve --mcp - Start MCP server for Zed/Claude Desktop
12
+ * puter-auth --help - Show this help message
12
13
  */
13
14
  export {};
14
15
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}
package/dist/cli.js CHANGED
@@ -5,10 +5,11 @@
5
5
  * Provides command-line authentication management for the Puter.com provider.
6
6
  *
7
7
  * Usage:
8
- * puter-auth login - Authenticate with Puter.com
9
- * puter-auth logout - Remove all stored credentials
10
- * puter-auth status - Show current authentication status
11
- * puter-auth --help - Show this help message
8
+ * puter-auth login - Authenticate with Puter.com
9
+ * puter-auth logout - Remove all stored credentials
10
+ * puter-auth status - Show current authentication status
11
+ * puter-auth serve --mcp - Start MCP server for Zed/Claude Desktop
12
+ * puter-auth --help - Show this help message
12
13
  */
13
14
  import { createPuterAuthManager } from './auth.js';
14
15
  import { homedir } from 'os';
@@ -18,23 +19,39 @@ const HELP = `
18
19
  puter-auth - Puter.com Authentication for OpenCode
19
20
 
20
21
  USAGE:
21
- puter-auth <command>
22
+ puter-auth <command> [options]
22
23
 
23
24
  COMMANDS:
24
- login Authenticate with Puter.com (opens browser)
25
- logout Remove all stored Puter credentials
26
- status Show current authentication status
27
- help Show this help message
25
+ login Authenticate with Puter.com (opens browser)
26
+ logout Remove all stored Puter credentials
27
+ status Show current authentication status
28
+ serve Start a server (use with --mcp for MCP protocol)
29
+ help Show this help message
30
+
31
+ OPTIONS:
32
+ --mcp Start as MCP (Model Context Protocol) server for Zed/Claude Desktop
28
33
 
29
34
  EXAMPLES:
30
- puter-auth login # Start browser authentication
31
- puter-auth status # Check if authenticated
32
- puter-auth logout # Clear credentials
35
+ puter-auth login # Start browser authentication
36
+ puter-auth status # Check if authenticated
37
+ puter-auth logout # Clear credentials
38
+ puter-auth serve --mcp # Start MCP server for Zed IDE
33
39
 
34
40
  After authenticating, use Puter models in OpenCode:
35
41
  opencode -m puter/claude-sonnet-4-5 "Your prompt"
36
42
  opencode models puter # List available models
37
43
 
44
+ MCP Integration (Zed IDE, Claude Desktop):
45
+ Add to your MCP config:
46
+ {
47
+ "mcpServers": {
48
+ "puter": {
49
+ "command": "npx",
50
+ "args": ["opencode-puter-auth", "serve", "--mcp"]
51
+ }
52
+ }
53
+ }
54
+
38
55
  For more info: https://github.com/Mihai-Codes/opencode-puter-auth
39
56
  `;
40
57
  async function main() {
@@ -92,6 +109,20 @@ async function main() {
92
109
  }
93
110
  break;
94
111
  }
112
+ case 'serve': {
113
+ const isMcp = args.includes('--mcp');
114
+ if (isMcp) {
115
+ // Start MCP server
116
+ const { startMcpServer } = await import('./mcp-server.js');
117
+ await startMcpServer();
118
+ }
119
+ else {
120
+ console.error('Unknown serve mode. Use --mcp for MCP server.');
121
+ console.log('Example: puter-auth serve --mcp');
122
+ process.exit(1);
123
+ }
124
+ break;
125
+ }
95
126
  default:
96
127
  console.error(`Unknown command: ${command}`);
97
128
  console.log(HELP);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Puter MCP Server for OpenCode
4
+ *
5
+ * Model Context Protocol server that exposes Puter.com AI models to MCP clients
6
+ * like Zed IDE, Claude Desktop, and other MCP-compatible applications.
7
+ *
8
+ * This server provides three tools:
9
+ * - puter-chat: Chat with AI models (Claude, GPT, Gemini, etc.)
10
+ * - puter-models: List all available models
11
+ * - puter-account: Show account info and credit usage
12
+ *
13
+ * Usage:
14
+ * npx opencode-puter-auth serve --mcp
15
+ * # or directly:
16
+ * node dist/mcp-server.js
17
+ *
18
+ * IMPORTANT: This server uses stdio transport. All logging MUST go to stderr,
19
+ * never to stdout, as stdout is reserved for JSON-RPC messages.
20
+ *
21
+ * @module mcp-server
22
+ */
23
+ /**
24
+ * Start the MCP server
25
+ */
26
+ export declare function startMcpServer(): Promise<void>;
27
+ //# sourceMappingURL=mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;GAoBG;AAwUH;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBpD"}
@@ -0,0 +1,334 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Puter MCP Server for OpenCode
4
+ *
5
+ * Model Context Protocol server that exposes Puter.com AI models to MCP clients
6
+ * like Zed IDE, Claude Desktop, and other MCP-compatible applications.
7
+ *
8
+ * This server provides three tools:
9
+ * - puter-chat: Chat with AI models (Claude, GPT, Gemini, etc.)
10
+ * - puter-models: List all available models
11
+ * - puter-account: Show account info and credit usage
12
+ *
13
+ * Usage:
14
+ * npx opencode-puter-auth serve --mcp
15
+ * # or directly:
16
+ * node dist/mcp-server.js
17
+ *
18
+ * IMPORTANT: This server uses stdio transport. All logging MUST go to stderr,
19
+ * never to stdout, as stdout is reserved for JSON-RPC messages.
20
+ *
21
+ * @module mcp-server
22
+ */
23
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
24
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
25
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
26
+ import { z } from 'zod';
27
+ import { createPuterAuthManager } from './auth.js';
28
+ import { PuterClient } from './client.js';
29
+ import { homedir } from 'os';
30
+ import { join } from 'path';
31
+ // Configuration
32
+ const CONFIG_DIR = join(homedir(), '.config', 'opencode');
33
+ const SERVER_NAME = 'puter-mcp';
34
+ const SERVER_VERSION = '1.1.0';
35
+ // Logger that writes to stderr (never stdout!)
36
+ const log = {
37
+ info: (msg, data) => {
38
+ console.error(`[${SERVER_NAME}] ${msg}`, data ? JSON.stringify(data) : '');
39
+ },
40
+ error: (msg, error) => {
41
+ console.error(`[${SERVER_NAME}] ERROR: ${msg}`, error instanceof Error ? error.message : error);
42
+ },
43
+ debug: (msg, data) => {
44
+ if (process.env.DEBUG) {
45
+ console.error(`[${SERVER_NAME}] DEBUG: ${msg}`, data ? JSON.stringify(data) : '');
46
+ }
47
+ },
48
+ };
49
+ // Tool definitions
50
+ const TOOLS = [
51
+ {
52
+ name: 'puter-chat',
53
+ description: 'Chat with AI models through Puter.com. Supports Claude, GPT, Gemini, and 500+ other models. Returns the model\'s response.',
54
+ inputSchema: {
55
+ type: 'object',
56
+ properties: {
57
+ message: {
58
+ type: 'string',
59
+ description: 'The message to send to the AI model',
60
+ },
61
+ model: {
62
+ type: 'string',
63
+ description: 'Model ID to use (e.g., "claude-sonnet-4-5", "gpt-4o", "gemini-2.5-pro"). Defaults to "gpt-4o".',
64
+ },
65
+ system: {
66
+ type: 'string',
67
+ description: 'Optional system prompt to set the AI\'s behavior',
68
+ },
69
+ temperature: {
70
+ type: 'number',
71
+ description: 'Sampling temperature (0-2). Lower = more focused, higher = more creative. Default: 0.7',
72
+ },
73
+ max_tokens: {
74
+ type: 'number',
75
+ description: 'Maximum tokens in the response. Default: 4096',
76
+ },
77
+ },
78
+ required: ['message'],
79
+ },
80
+ },
81
+ {
82
+ name: 'puter-models',
83
+ description: 'List all available AI models from Puter.com. Returns model IDs, names, providers, and capabilities.',
84
+ inputSchema: {
85
+ type: 'object',
86
+ properties: {
87
+ provider: {
88
+ type: 'string',
89
+ description: 'Filter by provider (e.g., "anthropic", "openai", "google")',
90
+ },
91
+ },
92
+ },
93
+ },
94
+ {
95
+ name: 'puter-account',
96
+ description: 'Show Puter.com account information including username and credit usage.',
97
+ inputSchema: {
98
+ type: 'object',
99
+ properties: {},
100
+ },
101
+ },
102
+ ];
103
+ // Input schemas for validation
104
+ const ChatInputSchema = z.object({
105
+ message: z.string().min(1, 'Message is required'),
106
+ model: z.string().optional().default('gpt-4o'),
107
+ system: z.string().optional(),
108
+ temperature: z.number().min(0).max(2).optional(),
109
+ max_tokens: z.number().positive().optional(),
110
+ });
111
+ const ModelsInputSchema = z.object({
112
+ provider: z.string().optional(),
113
+ });
114
+ /**
115
+ * Initialize and get the Puter client
116
+ */
117
+ async function getPuterClient() {
118
+ try {
119
+ const authManager = createPuterAuthManager(CONFIG_DIR);
120
+ await authManager.init();
121
+ const account = authManager.getActiveAccount();
122
+ if (!account) {
123
+ return null;
124
+ }
125
+ const client = new PuterClient(account.authToken);
126
+ return { client, username: account.username };
127
+ }
128
+ catch (error) {
129
+ log.error('Failed to initialize Puter client', error);
130
+ return null;
131
+ }
132
+ }
133
+ /**
134
+ * Handle the puter-chat tool
135
+ */
136
+ async function handleChat(args) {
137
+ const input = ChatInputSchema.parse(args);
138
+ const puter = await getPuterClient();
139
+ if (!puter) {
140
+ return JSON.stringify({
141
+ error: 'Not authenticated with Puter. Run "npx opencode-puter-auth login" first.',
142
+ });
143
+ }
144
+ log.info(`Chat request: model=${input.model}, message length=${input.message.length}`);
145
+ try {
146
+ const messages = [];
147
+ if (input.system) {
148
+ messages.push({ role: 'system', content: input.system });
149
+ }
150
+ messages.push({ role: 'user', content: input.message });
151
+ const response = await puter.client.chat(messages, {
152
+ model: input.model,
153
+ temperature: input.temperature,
154
+ max_tokens: input.max_tokens || 4096,
155
+ });
156
+ const content = response.message?.content || '';
157
+ log.info(`Chat response: ${content.length} chars`);
158
+ return content;
159
+ }
160
+ catch (error) {
161
+ log.error('Chat failed', error);
162
+ return JSON.stringify({
163
+ error: error instanceof Error ? error.message : 'Chat request failed',
164
+ });
165
+ }
166
+ }
167
+ /**
168
+ * Handle the puter-models tool
169
+ */
170
+ async function handleModels(args) {
171
+ const input = ModelsInputSchema.parse(args);
172
+ const puter = await getPuterClient();
173
+ if (!puter) {
174
+ return JSON.stringify({
175
+ error: 'Not authenticated with Puter. Run "npx opencode-puter-auth login" first.',
176
+ });
177
+ }
178
+ log.info('Fetching models list');
179
+ try {
180
+ let models = await puter.client.listModels();
181
+ // Filter by provider if specified
182
+ if (input.provider) {
183
+ const providerLower = input.provider.toLowerCase();
184
+ models = models.filter(m => m.provider?.toLowerCase() === providerLower ||
185
+ m.id.toLowerCase().includes(providerLower));
186
+ }
187
+ log.info(`Found ${models.length} models`);
188
+ // Format output
189
+ const formatted = models.map(m => ({
190
+ id: m.id,
191
+ name: m.name,
192
+ provider: m.provider,
193
+ context_window: m.context_window,
194
+ max_output_tokens: m.max_output_tokens,
195
+ supports_streaming: m.supports_streaming,
196
+ supports_tools: m.supports_tools,
197
+ supports_vision: m.supports_vision,
198
+ }));
199
+ return JSON.stringify(formatted, null, 2);
200
+ }
201
+ catch (error) {
202
+ log.error('Failed to fetch models', error);
203
+ return JSON.stringify({
204
+ error: error instanceof Error ? error.message : 'Failed to fetch models',
205
+ });
206
+ }
207
+ }
208
+ /**
209
+ * Handle the puter-account tool
210
+ */
211
+ async function handleAccount() {
212
+ const puter = await getPuterClient();
213
+ if (!puter) {
214
+ return JSON.stringify({
215
+ error: 'Not authenticated with Puter. Run "npx opencode-puter-auth login" first.',
216
+ });
217
+ }
218
+ log.info('Fetching account info');
219
+ try {
220
+ const usage = await puter.client.getMonthlyUsage();
221
+ // Format credit amounts (Puter uses 8 decimal places / microcents)
222
+ const formatCredits = (amount) => {
223
+ return `$${(amount / 100000000).toFixed(2)}`;
224
+ };
225
+ const allowance = usage.allowanceInfo?.monthUsageAllowance || 0;
226
+ const remaining = usage.allowanceInfo?.remaining || 0;
227
+ const used = allowance - remaining;
228
+ const result = {
229
+ username: puter.username,
230
+ monthly_allowance: formatCredits(allowance),
231
+ used: formatCredits(used),
232
+ remaining: formatCredits(remaining),
233
+ };
234
+ log.info(`Account: ${puter.username}, remaining: ${result.remaining}`);
235
+ return JSON.stringify(result, null, 2);
236
+ }
237
+ catch (error) {
238
+ log.error('Failed to fetch account info', error);
239
+ // Return basic info even if usage fetch fails
240
+ return JSON.stringify({
241
+ username: puter.username,
242
+ error: 'Could not fetch usage details: ' + (error instanceof Error ? error.message : 'Unknown error'),
243
+ }, null, 2);
244
+ }
245
+ }
246
+ /**
247
+ * Create and configure the MCP server
248
+ */
249
+ function createServer() {
250
+ const server = new Server({
251
+ name: SERVER_NAME,
252
+ version: SERVER_VERSION,
253
+ }, {
254
+ capabilities: {
255
+ tools: {},
256
+ },
257
+ });
258
+ // Handle tool listing
259
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
260
+ log.debug('Tools list requested');
261
+ return { tools: TOOLS };
262
+ });
263
+ // Handle tool calls
264
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
265
+ const { name, arguments: args } = request.params;
266
+ log.info(`Tool called: ${name}`);
267
+ try {
268
+ let result;
269
+ switch (name) {
270
+ case 'puter-chat':
271
+ result = await handleChat(args);
272
+ break;
273
+ case 'puter-models':
274
+ result = await handleModels(args);
275
+ break;
276
+ case 'puter-account':
277
+ result = await handleAccount();
278
+ break;
279
+ default:
280
+ return {
281
+ content: [{ type: 'text', text: `Unknown tool: ${name}` }],
282
+ isError: true,
283
+ };
284
+ }
285
+ return {
286
+ content: [{ type: 'text', text: result }],
287
+ };
288
+ }
289
+ catch (error) {
290
+ log.error(`Tool ${name} failed`, error);
291
+ return {
292
+ content: [
293
+ {
294
+ type: 'text',
295
+ text: `Error: ${error instanceof Error ? error.message : 'Unknown error'}`,
296
+ },
297
+ ],
298
+ isError: true,
299
+ };
300
+ }
301
+ });
302
+ return server;
303
+ }
304
+ /**
305
+ * Start the MCP server
306
+ */
307
+ export async function startMcpServer() {
308
+ log.info('Starting Puter MCP server...');
309
+ const server = createServer();
310
+ const transport = new StdioServerTransport();
311
+ // Handle graceful shutdown
312
+ process.on('SIGINT', async () => {
313
+ log.info('Shutting down...');
314
+ await server.close();
315
+ process.exit(0);
316
+ });
317
+ process.on('SIGTERM', async () => {
318
+ log.info('Shutting down...');
319
+ await server.close();
320
+ process.exit(0);
321
+ });
322
+ // Connect and run
323
+ await server.connect(transport);
324
+ log.info('Server connected on stdio');
325
+ }
326
+ // Run if executed directly
327
+ const isMainModule = import.meta.url === `file://${process.argv[1]}`;
328
+ if (isMainModule) {
329
+ startMcpServer().catch((error) => {
330
+ log.error('Failed to start server', error);
331
+ process.exit(1);
332
+ });
333
+ }
334
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "opencode-puter-auth",
3
- "version": "1.0.60",
3
+ "version": "1.1.0",
4
4
  "description": "Puter.com OAuth plugin for OpenCode - Easy access to Claude, GPT, Gemini & 500+ AI models. No API keys needed, credit-based usage.",
5
5
  "bin": {
6
- "puter-auth": "dist/cli.js"
6
+ "puter-auth": "dist/cli.js",
7
+ "puter-mcp": "dist/mcp-server.js"
7
8
  },
8
9
  "main": "./dist/index.js",
9
10
  "types": "./dist/index.d.ts",
@@ -51,7 +52,11 @@
51
52
  "coding",
52
53
  "llm",
53
54
  "no-api-key",
54
- "easy-setup"
55
+ "easy-setup",
56
+ "mcp",
57
+ "model-context-protocol",
58
+ "zed",
59
+ "claude-desktop"
55
60
  ],
56
61
  "engines": {
57
62
  "node": ">=20.0.0"
@@ -88,6 +93,7 @@
88
93
  "@ai-sdk/provider": "^3.0.3",
89
94
  "@ai-sdk/provider-utils": "^4.0.7",
90
95
  "@heyputer/puter.js": "^2.2.5",
96
+ "@modelcontextprotocol/sdk": "^1.26.0",
91
97
  "ai": "^6.0.57",
92
98
  "open": "^11.0.0",
93
99
  "xdg-basedir": "^5.1.0",