@nestr/mcp 0.1.27 → 0.1.29
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/build/api/client.d.ts +2 -2
- package/build/api/client.d.ts.map +1 -1
- package/build/api/client.js.map +1 -1
- package/build/apps/index.d.ts.map +1 -1
- package/build/apps/index.js +2 -3
- package/build/apps/index.js.map +1 -1
- package/build/server.d.ts.map +1 -1
- package/build/server.js +40 -6
- package/build/server.js.map +1 -1
- package/build/tools/index.d.ts +422 -0
- package/build/tools/index.d.ts.map +1 -1
- package/build/tools/index.js +84 -6
- package/build/tools/index.js.map +1 -1
- package/package.json +2 -2
- package/web/index.html +154 -5
- package/web/styles.css +33 -0
package/web/index.html
CHANGED
|
@@ -265,6 +265,7 @@
|
|
|
265
265
|
<button class="tab" data-tab="gemini">Gemini CLI</button>
|
|
266
266
|
<button class="tab" data-tab="cursor">Cursor</button>
|
|
267
267
|
<button class="tab" data-tab="copilot">VS Code</button>
|
|
268
|
+
<button class="tab" data-tab="openclaw">OpenClaw</button>
|
|
268
269
|
<button class="tab" data-tab="manual">Other / Manual</button>
|
|
269
270
|
</div>
|
|
270
271
|
|
|
@@ -338,38 +339,51 @@
|
|
|
338
339
|
</div>
|
|
339
340
|
|
|
340
341
|
<div class="tab-content" id="claude-code">
|
|
342
|
+
<div class="scope-selector">
|
|
343
|
+
<label for="claude-code-scope"><strong>Scope:</strong></label>
|
|
344
|
+
<select id="claude-code-scope" onchange="updateClaudeCodeCommands()">
|
|
345
|
+
<option value="user" selected>User (Recommended)</option>
|
|
346
|
+
<option value="project">Project</option>
|
|
347
|
+
<option value="local">Local</option>
|
|
348
|
+
</select>
|
|
349
|
+
<span class="scope-hint" id="scope-hint-text">Shared across all projects — one OAuth token for all sessions</span>
|
|
350
|
+
</div>
|
|
351
|
+
|
|
341
352
|
<div class="config-block hosted oauth active">
|
|
342
353
|
<div class="quickstart-box">
|
|
343
354
|
<h4>Quickstart (Recommended)</h4>
|
|
344
355
|
<p><strong>Step 1:</strong> Add the Nestr MCP server:</p>
|
|
345
|
-
<pre><code>claude mcp add nestr --transport http https://mcp.nestr.io/mcp</code></pre>
|
|
356
|
+
<pre><code class="cc-cmd cc-hosted-oauth">claude mcp add --scope user nestr --transport http https://mcp.nestr.io/mcp</code></pre>
|
|
346
357
|
<p><strong>Step 2:</strong> In Claude Code, run <code>/mcp</code> and click "Authenticate" next to Nestr. This will open your browser to log in with Nestr.</p>
|
|
347
358
|
<p class="quickstart-note">That's it! Once authenticated, Claude Code can access your Nestr workspace.</p>
|
|
348
359
|
</div>
|
|
349
360
|
<p>Or, if you already have a token, add it manually:</p>
|
|
350
|
-
<pre><code>claude mcp add nestr --transport http https://mcp.nestr.io/mcp \
|
|
361
|
+
<pre><code class="cc-cmd cc-hosted-oauth-manual">claude mcp add --scope user nestr --transport http https://mcp.nestr.io/mcp \
|
|
351
362
|
--header "Authorization: Bearer your-oauth-token-here"</code></pre>
|
|
352
363
|
</div>
|
|
353
364
|
|
|
354
365
|
<div class="config-block hosted apikey">
|
|
355
366
|
<p>Run this command in your terminal:</p>
|
|
356
|
-
<pre><code>claude mcp add nestr --transport http https://mcp.nestr.io/mcp \
|
|
367
|
+
<pre><code class="cc-cmd cc-hosted-apikey">claude mcp add --scope user nestr --transport http https://mcp.nestr.io/mcp \
|
|
357
368
|
--header "X-Nestr-API-Key: your-api-key-here"</code></pre>
|
|
358
369
|
</div>
|
|
359
370
|
|
|
360
371
|
<div class="config-block local oauth">
|
|
361
372
|
<p>Run this command in your terminal:</p>
|
|
362
|
-
<pre><code>claude mcp add nestr -- npx -y @nestr/mcp \
|
|
373
|
+
<pre><code class="cc-cmd cc-local-oauth">claude mcp add --scope user nestr -- npx -y @nestr/mcp \
|
|
363
374
|
--env NESTR_OAUTH_TOKEN=your-oauth-token-here</code></pre>
|
|
364
375
|
</div>
|
|
365
376
|
|
|
366
377
|
<div class="config-block local apikey">
|
|
367
378
|
<p>Run this command in your terminal:</p>
|
|
368
|
-
<pre><code>claude mcp add nestr -- npx -y @nestr/mcp \
|
|
379
|
+
<pre><code class="cc-cmd cc-local-apikey">claude mcp add --scope user nestr -- npx -y @nestr/mcp \
|
|
369
380
|
--env NESTR_API_KEY=your-api-key-here</code></pre>
|
|
370
381
|
</div>
|
|
371
382
|
|
|
372
383
|
<p>Run <code>/mcp</code> anytime to check connection status or re-authenticate.</p>
|
|
384
|
+
<p class="tip" style="margin-bottom: 0;">Already set up Nestr as a <strong>Claude.ai connector</strong>? You can reuse it in Claude Code by enabling the flag:<br>
|
|
385
|
+
<code>claude config set --global tengu_claudeai_mcp_connectors true</code><br>
|
|
386
|
+
This makes all your Claude.ai connectors available in Claude Code — no separate MCP setup needed.</p>
|
|
373
387
|
</div>
|
|
374
388
|
|
|
375
389
|
<div class="tab-content" id="cursor">
|
|
@@ -741,6 +755,100 @@
|
|
|
741
755
|
<p>Reload VS Code window after saving (<code>Cmd/Ctrl + Shift + P</code> → "Developer: Reload Window").</p>
|
|
742
756
|
</div>
|
|
743
757
|
|
|
758
|
+
<div class="tab-content" id="openclaw">
|
|
759
|
+
<p><a href="https://openclaw.ai" target="_blank">OpenClaw</a> (formerly ClawdBot / MoltBot) is an open-source AI assistant gateway. Add Nestr MCP to your <code>~/.openclaw/openclaw.json</code> config:</p>
|
|
760
|
+
|
|
761
|
+
<div class="config-block hosted oauth active">
|
|
762
|
+
<div class="token-section" id="openclaw-hosted-oauth-token">
|
|
763
|
+
<a href="/oauth/authorize" class="btn primary token-btn" onclick="saveStateBeforeOAuth('openclaw')">Get Your Token</a>
|
|
764
|
+
<span class="token-hint">Login with Nestr to get your OAuth token</span>
|
|
765
|
+
</div>
|
|
766
|
+
<div class="token-success" id="openclaw-hosted-oauth-success" style="display: none;">
|
|
767
|
+
<div class="token-success-header">Authentication Successful</div>
|
|
768
|
+
<p>Copy this token into the configuration below:</p>
|
|
769
|
+
<div class="token-display">
|
|
770
|
+
<input type="text" class="token-value" readonly>
|
|
771
|
+
<button class="btn primary" onclick="copyToken(this)">Copy</button>
|
|
772
|
+
</div>
|
|
773
|
+
<p class="copy-feedback" style="display: none;">Copied to clipboard!</p>
|
|
774
|
+
</div>
|
|
775
|
+
<pre><code>{
|
|
776
|
+
"provider": {
|
|
777
|
+
"mcpServers": {
|
|
778
|
+
"nestr": {
|
|
779
|
+
"url": "https://mcp.nestr.io/mcp",
|
|
780
|
+
"headers": {
|
|
781
|
+
"Authorization": "Bearer <span class="token-placeholder">your-oauth-token-here</span>"
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
}</code></pre>
|
|
787
|
+
</div>
|
|
788
|
+
|
|
789
|
+
<div class="config-block hosted apikey">
|
|
790
|
+
<pre><code>{
|
|
791
|
+
"provider": {
|
|
792
|
+
"mcpServers": {
|
|
793
|
+
"nestr": {
|
|
794
|
+
"url": "https://mcp.nestr.io/mcp",
|
|
795
|
+
"headers": {
|
|
796
|
+
"X-Nestr-API-Key": "your-api-key-here"
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
}</code></pre>
|
|
802
|
+
</div>
|
|
803
|
+
|
|
804
|
+
<div class="config-block local oauth">
|
|
805
|
+
<div class="token-section" id="openclaw-local-oauth-token">
|
|
806
|
+
<a href="/oauth/authorize" class="btn primary token-btn" onclick="saveStateBeforeOAuth('openclaw')">Get Your Token</a>
|
|
807
|
+
<span class="token-hint">Login with Nestr to get your OAuth token</span>
|
|
808
|
+
</div>
|
|
809
|
+
<div class="token-success" id="openclaw-local-oauth-success" style="display: none;">
|
|
810
|
+
<div class="token-success-header">Authentication Successful</div>
|
|
811
|
+
<p>Copy this token into the configuration below:</p>
|
|
812
|
+
<div class="token-display">
|
|
813
|
+
<input type="text" class="token-value" readonly>
|
|
814
|
+
<button class="btn primary" onclick="copyToken(this)">Copy</button>
|
|
815
|
+
</div>
|
|
816
|
+
<p class="copy-feedback" style="display: none;">Copied to clipboard!</p>
|
|
817
|
+
</div>
|
|
818
|
+
<pre><code>{
|
|
819
|
+
"provider": {
|
|
820
|
+
"mcpServers": {
|
|
821
|
+
"nestr": {
|
|
822
|
+
"command": "npx",
|
|
823
|
+
"args": ["-y", "@nestr/mcp"],
|
|
824
|
+
"env": {
|
|
825
|
+
"NESTR_OAUTH_TOKEN": "<span class="token-placeholder">your-oauth-token-here</span>"
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
}</code></pre>
|
|
831
|
+
</div>
|
|
832
|
+
|
|
833
|
+
<div class="config-block local apikey">
|
|
834
|
+
<pre><code>{
|
|
835
|
+
"provider": {
|
|
836
|
+
"mcpServers": {
|
|
837
|
+
"nestr": {
|
|
838
|
+
"command": "npx",
|
|
839
|
+
"args": ["-y", "@nestr/mcp"],
|
|
840
|
+
"env": {
|
|
841
|
+
"NESTR_API_KEY": "your-api-key-here"
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
}</code></pre>
|
|
847
|
+
</div>
|
|
848
|
+
|
|
849
|
+
<p>Restart the OpenClaw gateway after saving: <code>openclaw gateway restart</code></p>
|
|
850
|
+
</div>
|
|
851
|
+
|
|
744
852
|
<div class="tab-content" id="manual">
|
|
745
853
|
<p>For other MCP clients, use these configuration details:</p>
|
|
746
854
|
|
|
@@ -1295,6 +1403,47 @@
|
|
|
1295
1403
|
}, 1500);
|
|
1296
1404
|
}
|
|
1297
1405
|
|
|
1406
|
+
// Claude Code scope selector
|
|
1407
|
+
const scopeCommands = {
|
|
1408
|
+
user: {
|
|
1409
|
+
'cc-hosted-oauth': 'claude mcp add --scope user nestr --transport http https://mcp.nestr.io/mcp',
|
|
1410
|
+
'cc-hosted-oauth-manual': 'claude mcp add --scope user nestr --transport http https://mcp.nestr.io/mcp \\\n --header "Authorization: Bearer your-oauth-token-here"',
|
|
1411
|
+
'cc-hosted-apikey': 'claude mcp add --scope user nestr --transport http https://mcp.nestr.io/mcp \\\n --header "X-Nestr-API-Key: your-api-key-here"',
|
|
1412
|
+
'cc-local-oauth': 'claude mcp add --scope user nestr -- npx -y @nestr/mcp \\\n --env NESTR_OAUTH_TOKEN=your-oauth-token-here',
|
|
1413
|
+
'cc-local-apikey': 'claude mcp add --scope user nestr -- npx -y @nestr/mcp \\\n --env NESTR_API_KEY=your-api-key-here',
|
|
1414
|
+
hint: 'Shared across all projects \u2014 one OAuth token for all sessions'
|
|
1415
|
+
},
|
|
1416
|
+
project: {
|
|
1417
|
+
'cc-hosted-oauth': 'claude mcp add --scope project nestr --transport http https://mcp.nestr.io/mcp',
|
|
1418
|
+
'cc-hosted-oauth-manual': 'claude mcp add --scope project nestr --transport http https://mcp.nestr.io/mcp \\\n --header "Authorization: Bearer your-oauth-token-here"',
|
|
1419
|
+
'cc-hosted-apikey': 'claude mcp add --scope project nestr --transport http https://mcp.nestr.io/mcp \\\n --header "X-Nestr-API-Key: your-api-key-here"',
|
|
1420
|
+
'cc-local-oauth': 'claude mcp add --scope project nestr -- npx -y @nestr/mcp \\\n --env NESTR_OAUTH_TOKEN=your-oauth-token-here',
|
|
1421
|
+
'cc-local-apikey': 'claude mcp add --scope project nestr -- npx -y @nestr/mcp \\\n --env NESTR_API_KEY=your-api-key-here',
|
|
1422
|
+
hint: 'Shared with collaborators via .mcp.json \u2014 separate OAuth per project'
|
|
1423
|
+
},
|
|
1424
|
+
local: {
|
|
1425
|
+
'cc-hosted-oauth': 'claude mcp add nestr --transport http https://mcp.nestr.io/mcp',
|
|
1426
|
+
'cc-hosted-oauth-manual': 'claude mcp add nestr --transport http https://mcp.nestr.io/mcp \\\n --header "Authorization: Bearer your-oauth-token-here"',
|
|
1427
|
+
'cc-hosted-apikey': 'claude mcp add nestr --transport http https://mcp.nestr.io/mcp \\\n --header "X-Nestr-API-Key: your-api-key-here"',
|
|
1428
|
+
'cc-local-oauth': 'claude mcp add nestr -- npx -y @nestr/mcp \\\n --env NESTR_OAUTH_TOKEN=your-oauth-token-here',
|
|
1429
|
+
'cc-local-apikey': 'claude mcp add nestr -- npx -y @nestr/mcp \\\n --env NESTR_API_KEY=your-api-key-here',
|
|
1430
|
+
hint: 'Current directory only \u2014 each project gets its own OAuth token'
|
|
1431
|
+
}
|
|
1432
|
+
};
|
|
1433
|
+
|
|
1434
|
+
function updateClaudeCodeCommands() {
|
|
1435
|
+
const scope = document.getElementById('claude-code-scope').value;
|
|
1436
|
+
const cmds = scopeCommands[scope];
|
|
1437
|
+
document.querySelectorAll('.cc-cmd').forEach(el => {
|
|
1438
|
+
el.classList.forEach(cls => {
|
|
1439
|
+
if (cls !== 'cc-cmd' && cmds[cls]) {
|
|
1440
|
+
el.textContent = cmds[cls];
|
|
1441
|
+
}
|
|
1442
|
+
});
|
|
1443
|
+
});
|
|
1444
|
+
document.getElementById('scope-hint-text').textContent = cmds.hint;
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1298
1447
|
// Show manual configuration fallback
|
|
1299
1448
|
function showManualConfig(event, id) {
|
|
1300
1449
|
event.preventDefault();
|
package/web/styles.css
CHANGED
|
@@ -870,6 +870,39 @@ footer a {
|
|
|
870
870
|
color: var(--primary);
|
|
871
871
|
}
|
|
872
872
|
|
|
873
|
+
/* Scope selector (Claude Code) */
|
|
874
|
+
.scope-selector {
|
|
875
|
+
display: flex;
|
|
876
|
+
align-items: center;
|
|
877
|
+
gap: 10px;
|
|
878
|
+
margin-bottom: 16px;
|
|
879
|
+
padding: 12px 16px;
|
|
880
|
+
background: #f8fafc;
|
|
881
|
+
border: 1px solid var(--border);
|
|
882
|
+
border-radius: 8px;
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
.scope-selector label {
|
|
886
|
+
font-size: 0.9rem;
|
|
887
|
+
white-space: nowrap;
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
.scope-selector select {
|
|
891
|
+
padding: 6px 10px;
|
|
892
|
+
border: 1px solid var(--border);
|
|
893
|
+
border-radius: 6px;
|
|
894
|
+
font-family: inherit;
|
|
895
|
+
font-size: 0.9rem;
|
|
896
|
+
background: white;
|
|
897
|
+
color: var(--text);
|
|
898
|
+
cursor: pointer;
|
|
899
|
+
}
|
|
900
|
+
|
|
901
|
+
.scope-hint {
|
|
902
|
+
color: var(--text-muted);
|
|
903
|
+
font-size: 0.85rem;
|
|
904
|
+
}
|
|
905
|
+
|
|
873
906
|
/* Responsive */
|
|
874
907
|
@media (max-width: 768px) {
|
|
875
908
|
.hero {
|