onlymcp 0.10.0 → 0.12.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.
Files changed (63) hide show
  1. package/README.md +14 -11
  2. package/dist/apiBaseUrl.d.ts +12 -0
  3. package/dist/apiBaseUrl.js +28 -0
  4. package/dist/apiBaseUrl.js.map +1 -0
  5. package/dist/apiClient.d.ts +37 -2
  6. package/dist/apiClient.js +42 -4
  7. package/dist/apiClient.js.map +1 -1
  8. package/dist/bin/cli.js +189 -151
  9. package/dist/bin/cli.js.map +1 -1
  10. package/dist/bin/mcp.js +4 -2
  11. package/dist/bin/mcp.js.map +1 -1
  12. package/dist/deviceId.d.ts +2 -0
  13. package/dist/deviceId.js +97 -0
  14. package/dist/deviceId.js.map +1 -0
  15. package/dist/identity.d.ts +5 -1
  16. package/dist/identity.js +12 -2
  17. package/dist/identity.js.map +1 -1
  18. package/dist/import/secrets.js +1 -1
  19. package/dist/import/secrets.js.map +1 -1
  20. package/dist/import/upload.js +7 -1
  21. package/dist/import/upload.js.map +1 -1
  22. package/dist/install.d.ts +66 -12
  23. package/dist/install.js +137 -63
  24. package/dist/install.js.map +1 -1
  25. package/dist/instructions.js +2 -0
  26. package/dist/instructions.js.map +1 -1
  27. package/dist/paths.d.ts +2 -0
  28. package/dist/paths.js +4 -0
  29. package/dist/paths.js.map +1 -1
  30. package/dist/registry/caveats.d.ts +17 -0
  31. package/dist/registry/caveats.js +50 -0
  32. package/dist/registry/caveats.js.map +1 -0
  33. package/dist/registry/clients.d.ts +11 -0
  34. package/dist/registry/clients.js +333 -0
  35. package/dist/registry/clients.js.map +1 -0
  36. package/dist/registry/index.d.ts +5 -0
  37. package/dist/registry/index.js +6 -0
  38. package/dist/registry/index.js.map +1 -0
  39. package/dist/registry/serverInfo.d.ts +25 -0
  40. package/dist/registry/serverInfo.js +33 -0
  41. package/dist/registry/serverInfo.js.map +1 -0
  42. package/dist/registry/servers.d.ts +50 -0
  43. package/dist/registry/servers.js +225 -0
  44. package/dist/registry/servers.js.map +1 -0
  45. package/dist/registry/types.d.ts +60 -0
  46. package/dist/registry/types.js +6 -0
  47. package/dist/registry/types.js.map +1 -0
  48. package/dist/stubs.js +2 -2
  49. package/dist/tools/getAgentDefinition.js +5 -2
  50. package/dist/tools/getAgentDefinition.js.map +1 -1
  51. package/dist/tools/getSkill.js +1 -1
  52. package/dist/tools/getSkill.js.map +1 -1
  53. package/dist/tools/getSkillFile.js +3 -3
  54. package/dist/tools/getSkillFile.js.map +1 -1
  55. package/dist/tools/memoryGraph.js +16 -11
  56. package/dist/tools/memoryGraph.js.map +1 -1
  57. package/dist/tools/memoryRead.js +1 -1
  58. package/dist/tools/memoryRead.js.map +1 -1
  59. package/dist/tools/memoryWrite.js +4 -2
  60. package/dist/tools/memoryWrite.js.map +1 -1
  61. package/dist/tools/write.js +3 -3
  62. package/dist/tools/write.js.map +1 -1
  63. package/package.json +4 -4
@@ -0,0 +1,333 @@
1
+ // Every command below is verified, not remembered: see the "Done 2026-09-25"
2
+ // note under Task 1 Step 1 of
3
+ // docs/superpowers/plans/2026-09-12-onlymcp-v2-07-mcp-clients.md for the
4
+ // local `--help` runs (Claude Code, Codex, Gemini CLI) and the Continue
5
+ // source check. Docs for every other client are linked below in `docsUrl`,
6
+ // fetched and cross-checked on `verifiedOn`.
7
+ //
8
+ // Roo Code is excluded on purpose: its repository was archived on
9
+ // 2026-05-15, and overview §4.7 forbids claiming unverified or dead
10
+ // integrations.
11
+ function bash(text) {
12
+ return { language: 'bash', text };
13
+ }
14
+ function json(value, path) {
15
+ return { language: 'json', text: JSON.stringify(value, null, 2), path };
16
+ }
17
+ // -- Claude Code --------------------------------------------------------
18
+ // Verified locally: `claude mcp add --help` (Claude Code 2.1.281) has
19
+ // `-s, --scope <scope>` (default "local") and `-H, --header <header...>`.
20
+ // Docs: https://code.claude.com/docs/en/mcp-quickstart, confirms
21
+ // `--transport http`, `--scope user` and
22
+ // `--header "Authorization: Bearer <token>"` for servers that take a
23
+ // static token instead of OAuth.
24
+ const claudeCode = {
25
+ id: 'claude-code',
26
+ name: 'Claude Code',
27
+ category: 'coding',
28
+ brand: 'claudecode',
29
+ methods: ['remote-header', 'remote-oauth', 'stdio'],
30
+ docsUrl: 'https://code.claude.com/docs/en/mcp-quickstart',
31
+ verifiedOn: '2026-09-25',
32
+ caveats: [],
33
+ install: { configPath: '~/.claude.json', format: 'json', stubDir: null },
34
+ remote: (ctx) => [
35
+ bash(`claude mcp add --transport http --scope user onlymcp ${ctx.endpoint} --header "Authorization: Bearer ${ctx.token}"`),
36
+ ],
37
+ };
38
+ // -- Claude (claude.ai / Claude Desktop) ---------------------------------
39
+ // Docs: https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp
40
+ // Custom connectors are added at claude.ai/customize/connectors with a name
41
+ // and a URL; the page documents an OAuth Client ID/Secret in "Advanced
42
+ // settings" and does not document a static API key or header option, so
43
+ // the only connect method is OAuth.
44
+ const claudeApp = {
45
+ id: 'claude-app',
46
+ name: 'Claude',
47
+ category: 'chat',
48
+ brand: 'claude',
49
+ methods: ['remote-oauth'],
50
+ docsUrl: 'https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp',
51
+ verifiedOn: '2026-09-25',
52
+ caveats: ['clients.caveat.claudeHeaderBeta'],
53
+ install: null,
54
+ remote: () => null,
55
+ };
56
+ // -- ChatGPT --------------------------------------------------------------
57
+ // Brand 'openai': OpenAI publishes the blossom only, no mark of its own for ChatGPT or for Codex. Both are OpenAI
58
+ // services, so both show the official blossom files (web/public/brand/clients/SOURCES.md has the terms and conditions).
59
+ // Docs: https://help.openai.com/en/articles/12584461-developer-mode-and-mcp-apps-in-chatgpt
60
+ // Developer mode (where custom MCP connectors are built and tested) is
61
+ // available for ChatGPT Business and Enterprise/Edu customers on the web;
62
+ // only admins/owners can enable it. Connectors authorize through OAuth.
63
+ const chatgpt = {
64
+ id: 'chatgpt',
65
+ name: 'ChatGPT',
66
+ category: 'chat',
67
+ brand: 'openai',
68
+ methods: ['remote-oauth'],
69
+ docsUrl: 'https://help.openai.com/en/articles/12584461-developer-mode-and-mcp-apps-in-chatgpt',
70
+ verifiedOn: '2026-09-25',
71
+ caveats: ['clients.caveat.chatgptDeveloperMode'],
72
+ install: null,
73
+ remote: () => null,
74
+ };
75
+ // -- Codex ------------------------------------------------------------
76
+ // Verified locally: `codex mcp add --help` (codex-cli 0.154.0) has `--url`
77
+ // and `--bearer-token-env-var`, no header flag.
78
+ // Docs: https://learn.chatgpt.com/docs/extend/mcp?surface=cli (the current
79
+ // redirect target of developers.openai.com/codex/mcp) confirms
80
+ // `bearer_token_env_var` names an environment variable, read by Codex, not
81
+ // a literal token; `http_headers` and `env_http_headers` exist as separate,
82
+ // alternative fields for static/derived headers, never combined with
83
+ // `--header` (Codex has no such flag).
84
+ const codex = {
85
+ id: 'codex',
86
+ name: 'Codex',
87
+ category: 'coding',
88
+ brand: 'openai',
89
+ methods: ['remote-header', 'remote-oauth', 'stdio'],
90
+ docsUrl: 'https://learn.chatgpt.com/docs/extend/mcp?surface=cli',
91
+ verifiedOn: '2026-09-25',
92
+ // `bearer_token_env_var` stores only the environment variable's NAME in
93
+ // config.toml, never the token value: Codex must therefore read the
94
+ // variable itself at every startup, so the export belongs in the user's
95
+ // shell profile, not just the terminal session that ran `mcp add`.
96
+ caveats: ['clients.caveat.codexTokenEnv'],
97
+ install: { configPath: '~/.codex/config.toml', format: 'toml', stubDir: '~/.codex/skills' },
98
+ remote: (ctx) => [
99
+ bash([
100
+ `export ONLYMCP_TOKEN=${ctx.token}`,
101
+ `codex mcp add onlymcp --url ${ctx.endpoint} --bearer-token-env-var ONLYMCP_TOKEN`,
102
+ ].join('\n')),
103
+ ],
104
+ };
105
+ // -- Gemini CLI -------------------------------------------------------
106
+ // Verified locally: `npx @google/gemini-cli@0.61.0 mcp add --help` has
107
+ // `-s, --scope (user or project) [default: "project"]`, `-t, --transport`,
108
+ // `-H, --header`. Deviation from spec §3.4: without `--scope user` the
109
+ // server lands in the settings of whatever directory the command runs in,
110
+ // not in `~/.gemini/settings.json`, so `--scope user` is required here.
111
+ // Docs: https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md
112
+ const geminiCli = {
113
+ id: 'gemini-cli',
114
+ name: 'Gemini CLI',
115
+ category: 'coding',
116
+ brand: 'googlegemini',
117
+ methods: ['remote-header', 'remote-oauth', 'stdio'],
118
+ docsUrl: 'https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md',
119
+ verifiedOn: '2026-09-25',
120
+ caveats: [],
121
+ install: { configPath: '~/.gemini/settings.json', format: 'json', stubDir: null },
122
+ remote: (ctx) => [
123
+ bash(`gemini mcp add --transport http --scope user onlymcp ${ctx.endpoint} --header "Authorization: Bearer ${ctx.token}"`),
124
+ ],
125
+ };
126
+ // -- Gemini app (Gemini Spark) --------------------------------------------
127
+ // Docs: https://support.google.com/gemini/answer/17209137
128
+ // The page is live although a HEAD request says 404: support.google.com
129
+ // answers HEAD with 404 for every article and GET with 200 (checked
130
+ // 2026-10-05, also on answer/13695044), so a link check has to GET it.
131
+ // Custom connected apps take an MCP server URL and require a personal
132
+ // Google account that is 18+ and in the US, with Keep Activity on. On
133
+ // 2026-09-25 the page limited them to Gemini Spark tasks; since 2026-10-05
134
+ // it reads "workflows with Gemini Spark or take quick actions in chat".
135
+ // The caveat says that since 2026-10-10 (page read with GET that day).
136
+ const geminiApp = {
137
+ id: 'gemini-app',
138
+ name: 'Gemini',
139
+ category: 'chat',
140
+ brand: 'googlegemini',
141
+ methods: ['remote-oauth'],
142
+ docsUrl: 'https://support.google.com/gemini/answer/17209137',
143
+ verifiedOn: '2026-10-10',
144
+ caveats: ['clients.caveat.geminiAppSpark'],
145
+ install: null,
146
+ remote: () => null,
147
+ };
148
+ // -- GitHub Copilot in VS Code --------------------------------------------
149
+ // Docs: https://code.visualstudio.com/docs/agents/reference/mcp-configuration
150
+ // `.vscode/mcp.json` (workspace) with a top-level `servers` object, entries
151
+ // take `type: "http"`, `url`, `headers`. Copilot policy per
152
+ // https://docs.github.com/en/copilot/how-tos/provide-context/use-mcp-in-your-ide/set-up-the-github-mcp-server:
153
+ // Business/Enterprise tenants must enable "MCP servers in Copilot" first.
154
+ const copilotVscode = {
155
+ id: 'copilot-vscode',
156
+ name: 'GitHub Copilot (VS Code)',
157
+ category: 'ide',
158
+ brand: 'githubcopilot',
159
+ methods: ['remote-header', 'remote-oauth', 'stdio'],
160
+ docsUrl: 'https://code.visualstudio.com/docs/agents/reference/mcp-configuration',
161
+ verifiedOn: '2026-09-25',
162
+ caveats: ['clients.caveat.copilotPolicy'],
163
+ install: null,
164
+ remote: (ctx) => [
165
+ json({ servers: { onlymcp: { type: 'http', url: ctx.endpoint, headers: { Authorization: `Bearer ${ctx.token}` } } } }, '.vscode/mcp.json'),
166
+ ],
167
+ };
168
+ // -- Cursor ---------------------------------------------------------------
169
+ // Docs: https://cursor.com/docs/mcp - `~/.cursor/mcp.json` (global) or
170
+ // `.cursor/mcp.json` (project), top-level `mcpServers`, entries take `url`
171
+ // and `headers`.
172
+ const cursor = {
173
+ id: 'cursor',
174
+ name: 'Cursor',
175
+ category: 'ide',
176
+ brand: 'cursor',
177
+ methods: ['remote-header', 'remote-oauth', 'stdio'],
178
+ docsUrl: 'https://cursor.com/docs/mcp',
179
+ verifiedOn: '2026-09-25',
180
+ caveats: [],
181
+ install: null,
182
+ remote: (ctx) => [
183
+ json({ mcpServers: { onlymcp: { url: ctx.endpoint, headers: { Authorization: `Bearer ${ctx.token}` } } } }, '~/.cursor/mcp.json'),
184
+ ],
185
+ };
186
+ // -- Windsurf ---------------------------------------------------------
187
+ // Docs: https://docs.windsurf.com/windsurf/cascade/mcp -
188
+ // `~/.codeium/windsurf/mcp_config.json`, top-level `mcpServers`, entries
189
+ // take `serverUrl` and `headers`. The 2026 Cognition rebrand to "Devin
190
+ // Desktop" folds Cascade into "Devin Local", but the config path and MCP
191
+ // JSON keys are unchanged (corroborated by a second, independent search,
192
+ // since the docs.windsurf.com redirect briefly showed a Devin-only path).
193
+ // Admin allowlist: once a team allowlists even one server, every
194
+ // non-allowlisted server is blocked for that team.
195
+ const windsurf = {
196
+ id: 'windsurf',
197
+ name: 'Windsurf',
198
+ category: 'ide',
199
+ brand: 'windsurf',
200
+ methods: ['remote-header', 'stdio'],
201
+ docsUrl: 'https://docs.windsurf.com/windsurf/cascade/mcp',
202
+ verifiedOn: '2026-09-25',
203
+ caveats: ['clients.caveat.windsurfAllowlist'],
204
+ install: null,
205
+ remote: (ctx) => [
206
+ json({ mcpServers: { onlymcp: { serverUrl: ctx.endpoint, headers: { Authorization: `Bearer ${ctx.token}` } } } }, '~/.codeium/windsurf/mcp_config.json'),
207
+ ],
208
+ };
209
+ // -- Cline ------------------------------------------------------------
210
+ // Docs: https://docs.cline.bot/mcp/mcp-overview - the transport type must
211
+ // be the literal string "streamableHttp" (camelCase, no hyphen); "
212
+ // streamable-http" or an omitted type falls back to legacy SSE and a 405.
213
+ const cline = {
214
+ id: 'cline',
215
+ name: 'Cline',
216
+ category: 'ide',
217
+ brand: 'cline',
218
+ methods: ['remote-header', 'stdio'],
219
+ docsUrl: 'https://docs.cline.bot/mcp/mcp-overview',
220
+ verifiedOn: '2026-09-25',
221
+ caveats: [],
222
+ install: null,
223
+ remote: (ctx) => [
224
+ json({
225
+ mcpServers: {
226
+ onlymcp: { type: 'streamableHttp', url: ctx.endpoint, headers: { Authorization: `Bearer ${ctx.token}` } },
227
+ },
228
+ }, '~/.cline/mcp.json'),
229
+ ],
230
+ };
231
+ // -- Zed --------------------------------------------------------------
232
+ // Docs: https://zed.dev/docs/assistant/model-context-protocol - a remote
233
+ // server is keyed under `context_servers` with `url` and `headers`
234
+ // directly (no local proxy needed); an entry without an `Authorization`
235
+ // header triggers Zed's own OAuth prompt.
236
+ const zed = {
237
+ id: 'zed',
238
+ name: 'Zed',
239
+ category: 'ide',
240
+ brand: 'zedindustries',
241
+ methods: ['remote-header', 'remote-oauth', 'stdio'],
242
+ docsUrl: 'https://zed.dev/docs/assistant/model-context-protocol',
243
+ verifiedOn: '2026-09-25',
244
+ caveats: [],
245
+ install: null,
246
+ remote: (ctx) => [
247
+ json({ context_servers: { onlymcp: { url: ctx.endpoint, headers: { Authorization: `Bearer ${ctx.token}` } } } }, 'settings.json'),
248
+ ],
249
+ };
250
+ // -- Continue -----------------------------------------------------------
251
+ // No local binary to run `--help` against. Docs:
252
+ // https://docs.continue.dev/customize/deep-dives/mcp - `config.yaml`,
253
+ // `mcpServers` list entries take `type: streamable-http`, `url`, and
254
+ // `requestOptions.headers`; confirmed a third way in
255
+ // `core/context/mcp/MCPConnection.ts` on `main`, which builds the
256
+ // streamable-http transport's headers from `requestOptions?.headers`.
257
+ const continueClient = {
258
+ id: 'continue',
259
+ name: 'Continue',
260
+ category: 'ide',
261
+ brand: null,
262
+ methods: ['remote-header', 'stdio'],
263
+ docsUrl: 'https://docs.continue.dev/customize/deep-dives/mcp',
264
+ verifiedOn: '2026-09-25',
265
+ caveats: [],
266
+ install: null,
267
+ remote: (ctx) => [
268
+ {
269
+ language: 'yaml',
270
+ path: 'config.yaml',
271
+ text: [
272
+ 'mcpServers:',
273
+ ' - name: onlymcp',
274
+ ' type: streamable-http',
275
+ ` url: ${ctx.endpoint}`,
276
+ ' requestOptions:',
277
+ ' headers:',
278
+ ` Authorization: Bearer ${ctx.token}`,
279
+ ].join('\n'),
280
+ },
281
+ ],
282
+ };
283
+ // -- opencode -----------------------------------------------------------
284
+ // Docs: https://opencode.ai/docs/mcp-servers/ - `opencode.json`, servers
285
+ // live under `mcp`, a remote entry takes `type: "remote"`, `url`, and
286
+ // `headers`; OAuth is the default for a remote server unless `oauth:
287
+ // false` is set for a header/API-key-only server. OnlyMCP uses a bearer
288
+ // header here, so no `oauth` field is emitted.
289
+ const opencode = {
290
+ id: 'opencode',
291
+ name: 'opencode',
292
+ category: 'coding',
293
+ brand: 'opencode',
294
+ methods: ['remote-header', 'remote-oauth', 'stdio'],
295
+ docsUrl: 'https://opencode.ai/docs/mcp-servers/',
296
+ verifiedOn: '2026-09-25',
297
+ caveats: [],
298
+ install: null,
299
+ remote: (ctx) => [
300
+ json({ mcp: { onlymcp: { type: 'remote', url: ctx.endpoint, headers: { Authorization: `Bearer ${ctx.token}` } } } }, 'opencode.json'),
301
+ ],
302
+ };
303
+ export const CLIENTS = [
304
+ claudeCode,
305
+ claudeApp,
306
+ chatgpt,
307
+ codex,
308
+ geminiCli,
309
+ geminiApp,
310
+ copilotVscode,
311
+ cursor,
312
+ windsurf,
313
+ cline,
314
+ zed,
315
+ continueClient,
316
+ opencode,
317
+ ];
318
+ export function clientById(id) {
319
+ return CLIENTS.find((c) => c.id === id);
320
+ }
321
+ export function remoteSnippets(id, ctx) {
322
+ return clientById(id)?.remote(ctx) ?? null;
323
+ }
324
+ /**
325
+ * The local-install command for a client `npx onlymcp install` can set up,
326
+ * or null for every other one. Spec 07 §3.4: always with `npx`, always with
327
+ * `--client`, because the CLI without `--client` only lists the targets and
328
+ * exits 2.
329
+ */
330
+ export function installCommand(id) {
331
+ return clientById(id)?.install ? `npx onlymcp install --client ${id}` : null;
332
+ }
333
+ //# sourceMappingURL=clients.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clients.js","sourceRoot":"","sources":["../../src/registry/clients.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { CAVEATS, caveatText, type CaveatLanguage } from './caveats.js';
2
+ export { CLIENTS, clientById, installCommand, remoteSnippets } from './clients.js';
3
+ export { SERVERS } from './servers.js';
4
+ export { serverInfo } from './serverInfo.js';
5
+ export type { ClientCategory, ClientId, ClientInstall, ClientRecord, ConnectMethod, RemoteContext, ServerRecord, Snippet, SnippetLanguage, } from './types.js';
@@ -0,0 +1,6 @@
1
+ // Generated by scripts/sync-registry.mjs. Do not edit.
2
+ export { CAVEATS, caveatText } from './caveats.js';
3
+ export { CLIENTS, clientById, installCommand, remoteSnippets } from './clients.js';
4
+ export { SERVERS } from './servers.js';
5
+ export { serverInfo } from './serverInfo.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * What an MCP client shows for OnlyMCP in its connector list (spec 2025-11-25: `title`, `icons`, `websiteUrl`).
3
+ * One definition for the hosted server (api) and the stdio server (cli); the CLI gets it through the generated copy.
4
+ * Icon URLs are absolute because a stdio server has no origin of its own. The PNG is a full-bleed square (no
5
+ * transparent corners that a white list row turns into a tile on a white rectangle); the SVG is for clients that
6
+ * prefer vectors.
7
+ *
8
+ * The icons carry no `sizes`: it is optional, and absent means "any size". The spec and MCP TS SDK 1.19.1+ type it as
9
+ * an array, but 1.18.0 to 1.18.2 type it as a string and throw in `connect()` on an array, which would lock those
10
+ * clients out of OnlyMCP altogether.
11
+ *
12
+ * `origin` must be http(s) and is reduced to scheme, host and port: a path, a query or credentials in it (the CLI
13
+ * passes ONLYMCP_API_URL on as the user wrote it, after `apiBaseUrl` accepted it) must not end up in `websiteUrl` or
14
+ * the icon URLs.
15
+ */
16
+ export declare function serverInfo(origin: string, version: string): {
17
+ name: "onlymcp";
18
+ title: "OnlyMCP";
19
+ version: string;
20
+ websiteUrl: string;
21
+ icons: {
22
+ src: string;
23
+ mimeType: string;
24
+ }[];
25
+ };
@@ -0,0 +1,33 @@
1
+ // Generated by scripts/sync-registry.mjs. Do not edit.
2
+ /**
3
+ * What an MCP client shows for OnlyMCP in its connector list (spec 2025-11-25: `title`, `icons`, `websiteUrl`).
4
+ * One definition for the hosted server (api) and the stdio server (cli); the CLI gets it through the generated copy.
5
+ * Icon URLs are absolute because a stdio server has no origin of its own. The PNG is a full-bleed square (no
6
+ * transparent corners that a white list row turns into a tile on a white rectangle); the SVG is for clients that
7
+ * prefer vectors.
8
+ *
9
+ * The icons carry no `sizes`: it is optional, and absent means "any size". The spec and MCP TS SDK 1.19.1+ type it as
10
+ * an array, but 1.18.0 to 1.18.2 type it as a string and throw in `connect()` on an array, which would lock those
11
+ * clients out of OnlyMCP altogether.
12
+ *
13
+ * `origin` must be http(s) and is reduced to scheme, host and port: a path, a query or credentials in it (the CLI
14
+ * passes ONLYMCP_API_URL on as the user wrote it, after `apiBaseUrl` accepted it) must not end up in `websiteUrl` or
15
+ * the icon URLs.
16
+ */
17
+ export function serverInfo(origin, version) {
18
+ const url = new URL(origin);
19
+ if (url.protocol !== 'http:' && url.protocol !== 'https:')
20
+ throw new TypeError(`serverInfo: "${origin}" is not an http(s) origin`);
21
+ const base = url.origin;
22
+ return {
23
+ name: 'onlymcp',
24
+ title: 'OnlyMCP',
25
+ version,
26
+ websiteUrl: base,
27
+ icons: [
28
+ { src: `${base}/brand/connector-512.png`, mimeType: 'image/png' },
29
+ { src: `${base}/brand/favicon.svg`, mimeType: 'image/svg+xml' },
30
+ ],
31
+ };
32
+ }
33
+ //# sourceMappingURL=serverInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverInfo.js","sourceRoot":"","sources":["../../src/registry/serverInfo.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,OAAe;IACxD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAAE,MAAM,IAAI,SAAS,CAAC,gBAAgB,MAAM,4BAA4B,CAAC,CAAC;IACnI,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,OAAO;QACL,IAAI,EAAE,SAAkB;QACxB,KAAK,EAAE,SAAkB;QACzB,OAAO;QACP,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE;YACL,EAAE,GAAG,EAAE,GAAG,IAAI,0BAA0B,EAAE,QAAQ,EAAE,WAAW,EAAE;YACjE,EAAE,GAAG,EAAE,GAAG,IAAI,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE;SAChE;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { ServerRecord } from './types.js';
2
+ /**
3
+ * The picture the product is named after: many MCP servers behind one
4
+ * connection. This catalogue backs the rotating tiles in
5
+ * `packages/web/src/components/McpHub.tsx`, `/api/mcp-catalog`, and the
6
+ * "add a server" step of Connect.
7
+ *
8
+ * Every server in the pool was verified, not remembered. Originally
9
+ * (2026-09-05): each URL was pushed through this product's own
10
+ * POST /api/mcp-connections/test, and only the ones that completed an MCP
11
+ * handshake or answered UNAUTHORIZED (which means a real MCP server is
12
+ * there and wants credentials) were listed. Dropped on that evidence:
13
+ * GitLab (mcp.gitlab.com does not resolve), Figma, Google Drive, Slack.
14
+ * Dropped for want of a brand icon: Canva, monday.com.
15
+ *
16
+ * Re-verified 2026-09-25 for this registry, this time against each
17
+ * vendor's own documentation (`docsUrl` below) AND a fresh local probe: a
18
+ * scratch script POSTed an MCP `initialize` request, unauthenticated, to
19
+ * every URL below. All 17 answered `401` with a `WWW-Authenticate: Bearer`
20
+ * header naming an OAuth protected-resource metadata document (for
21
+ * example `resource_metadata="https://mcp.notion.com/.well-known/oauth-
22
+ * protected-resource/mcp"`), which is exactly what a live MCP server
23
+ * behind OAuth returns - confirming each URL is real and reachable, not
24
+ * only documented. The finer distinction of `auth` below (whether a
25
+ * static bearer token is ALSO accepted, alongside OAuth) came from each
26
+ * vendor's docs, because a 401 alone cannot tell OAuth-only apart from
27
+ * OAuth-or-bearer.
28
+ *
29
+ * One correction from the 2026-09-05 note: this pass found Linear's docs
30
+ * now document `Authorization: Bearer <token>` as an accepted alternative
31
+ * to the interactive OAuth flow. The original spec text (problem #6)
32
+ * called Linear OAuth-only as of that date; either that capability is new,
33
+ * or it was missed in the first pass. `auth` below reflects the current,
34
+ * re-verified state, and this comment records the discrepancy rather than
35
+ * silently overwriting it.
36
+ *
37
+ * The open MCP registry is not a usable source for this list, by the way -
38
+ * anyone may publish there, and a search for "github" returns community
39
+ * wrappers hosted by third parties, not GitHub's own server.
40
+ *
41
+ * `filesystem` and `postgres`, the textbook examples, are absent on purpose:
42
+ * they are local stdio processes, and OnlyMCP deliberately does not run those
43
+ * (a process we spawn on a user's behalf is code execution on our side, see
44
+ * docs/SECURITY.md).
45
+ *
46
+ * The prefixes are real. `github__create_issue` is exactly what a client
47
+ * sees, because the gateway namespaces every proxied tool with the
48
+ * connection's slug (packages/api/src/mcp/gateway.ts).
49
+ */
50
+ export declare const SERVERS: readonly ServerRecord[];