onlymcp 0.17.0 → 0.20.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 (126) hide show
  1. package/LICENSE +33 -17
  2. package/README.md +2 -1
  3. package/dist/bin/cli.js +68 -583
  4. package/dist/bin/mcp.js +45 -73
  5. package/package.json +7 -10
  6. package/dist/apiBaseUrl.d.ts +0 -12
  7. package/dist/apiBaseUrl.js +0 -28
  8. package/dist/apiBaseUrl.js.map +0 -1
  9. package/dist/apiClient.d.ts +0 -296
  10. package/dist/apiClient.js +0 -224
  11. package/dist/apiClient.js.map +0 -1
  12. package/dist/auth/deviceLogin.d.ts +0 -5
  13. package/dist/auth/deviceLogin.js +0 -40
  14. package/dist/auth/deviceLogin.js.map +0 -1
  15. package/dist/auth/keyring.d.ts +0 -16
  16. package/dist/auth/keyring.js +0 -33
  17. package/dist/auth/keyring.js.map +0 -1
  18. package/dist/bin/cli.d.ts +0 -2
  19. package/dist/bin/cli.js.map +0 -1
  20. package/dist/bin/mcp.d.ts +0 -2
  21. package/dist/bin/mcp.js.map +0 -1
  22. package/dist/cache.d.ts +0 -7
  23. package/dist/cache.js +0 -32
  24. package/dist/cache.js.map +0 -1
  25. package/dist/deviceId.d.ts +0 -2
  26. package/dist/deviceId.js +0 -97
  27. package/dist/deviceId.js.map +0 -1
  28. package/dist/export/unpack.d.ts +0 -33
  29. package/dist/export/unpack.js +0 -54
  30. package/dist/export/unpack.js.map +0 -1
  31. package/dist/identity.d.ts +0 -29
  32. package/dist/identity.js +0 -116
  33. package/dist/identity.js.map +0 -1
  34. package/dist/import/collect.d.ts +0 -25
  35. package/dist/import/collect.js +0 -101
  36. package/dist/import/collect.js.map +0 -1
  37. package/dist/import/frontmatter.d.ts +0 -44
  38. package/dist/import/frontmatter.js +0 -93
  39. package/dist/import/frontmatter.js.map +0 -1
  40. package/dist/import/plan.d.ts +0 -74
  41. package/dist/import/plan.js +0 -190
  42. package/dist/import/plan.js.map +0 -1
  43. package/dist/import/prune.d.ts +0 -46
  44. package/dist/import/prune.js +0 -61
  45. package/dist/import/prune.js.map +0 -1
  46. package/dist/import/secrets.d.ts +0 -7
  47. package/dist/import/secrets.js +0 -77
  48. package/dist/import/secrets.js.map +0 -1
  49. package/dist/import/upload.d.ts +0 -21
  50. package/dist/import/upload.js +0 -99
  51. package/dist/import/upload.js.map +0 -1
  52. package/dist/install.d.ts +0 -81
  53. package/dist/install.js +0 -168
  54. package/dist/install.js.map +0 -1
  55. package/dist/instructions.d.ts +0 -4
  56. package/dist/instructions.js +0 -67
  57. package/dist/instructions.js.map +0 -1
  58. package/dist/memoryPath.d.ts +0 -1
  59. package/dist/memoryPath.js +0 -13
  60. package/dist/memoryPath.js.map +0 -1
  61. package/dist/memorySync.d.ts +0 -28
  62. package/dist/memorySync.js +0 -56
  63. package/dist/memorySync.js.map +0 -1
  64. package/dist/paths.d.ts +0 -18
  65. package/dist/paths.js +0 -62
  66. package/dist/paths.js.map +0 -1
  67. package/dist/registry/caveats.d.ts +0 -17
  68. package/dist/registry/caveats.js +0 -74
  69. package/dist/registry/caveats.js.map +0 -1
  70. package/dist/registry/clients.d.ts +0 -17
  71. package/dist/registry/clients.js +0 -402
  72. package/dist/registry/clients.js.map +0 -1
  73. package/dist/registry/index.d.ts +0 -6
  74. package/dist/registry/index.js +0 -7
  75. package/dist/registry/index.js.map +0 -1
  76. package/dist/registry/serverInfo.d.ts +0 -25
  77. package/dist/registry/serverInfo.js +0 -33
  78. package/dist/registry/serverInfo.js.map +0 -1
  79. package/dist/registry/servers.d.ts +0 -58
  80. package/dist/registry/servers.js +0 -259
  81. package/dist/registry/servers.js.map +0 -1
  82. package/dist/registry/toolHints.d.ts +0 -29
  83. package/dist/registry/toolHints.js +0 -41
  84. package/dist/registry/toolHints.js.map +0 -1
  85. package/dist/registry/types.d.ts +0 -71
  86. package/dist/registry/types.js +0 -6
  87. package/dist/registry/types.js.map +0 -1
  88. package/dist/skillFilePath.d.ts +0 -1
  89. package/dist/skillFilePath.js +0 -29
  90. package/dist/skillFilePath.js.map +0 -1
  91. package/dist/stubIgnore.d.ts +0 -22
  92. package/dist/stubIgnore.js +0 -29
  93. package/dist/stubIgnore.js.map +0 -1
  94. package/dist/stubs.d.ts +0 -12
  95. package/dist/stubs.js +0 -188
  96. package/dist/stubs.js.map +0 -1
  97. package/dist/tools/connections.d.ts +0 -154
  98. package/dist/tools/connections.js +0 -164
  99. package/dist/tools/connections.js.map +0 -1
  100. package/dist/tools/getAgentDefinition.d.ts +0 -26
  101. package/dist/tools/getAgentDefinition.js +0 -29
  102. package/dist/tools/getAgentDefinition.js.map +0 -1
  103. package/dist/tools/getSkill.d.ts +0 -26
  104. package/dist/tools/getSkill.js +0 -26
  105. package/dist/tools/getSkill.js.map +0 -1
  106. package/dist/tools/getSkillFile.d.ts +0 -27
  107. package/dist/tools/getSkillFile.js +0 -39
  108. package/dist/tools/getSkillFile.js.map +0 -1
  109. package/dist/tools/index.d.ts +0 -263
  110. package/dist/tools/index.js +0 -69
  111. package/dist/tools/index.js.map +0 -1
  112. package/dist/tools/lists.d.ts +0 -38
  113. package/dist/tools/lists.js +0 -39
  114. package/dist/tools/lists.js.map +0 -1
  115. package/dist/tools/memoryGraph.d.ts +0 -69
  116. package/dist/tools/memoryGraph.js +0 -128
  117. package/dist/tools/memoryGraph.js.map +0 -1
  118. package/dist/tools/memoryRead.d.ts +0 -25
  119. package/dist/tools/memoryRead.js +0 -33
  120. package/dist/tools/memoryRead.js.map +0 -1
  121. package/dist/tools/memoryWrite.d.ts +0 -27
  122. package/dist/tools/memoryWrite.js +0 -34
  123. package/dist/tools/memoryWrite.js.map +0 -1
  124. package/dist/tools/write.d.ts +0 -166
  125. package/dist/tools/write.js +0 -193
  126. package/dist/tools/write.js.map +0 -1
@@ -1,259 +0,0 @@
1
- /**
2
- * The picture the product is named after: many MCP servers behind one
3
- * connection. This list backs the rotating tiles in
4
- * `packages/web/src/components/McpHub.tsx` and the docs page of connectable
5
- * servers. Since 2026-10-18 it also seeds the server catalogue table
6
- * (`packages/api/src/catalogue/store.ts`), which an admin edits and which
7
- * `/api/mcp-catalog` and the "add a server" step of Connect read; only the
8
- * addresses of this list are trusted for tool hints (api mcp/tool-hints.ts).
9
- *
10
- * Every server in the pool was verified, not remembered. Originally
11
- * (2026-09-05): each URL was pushed through this product's own
12
- * POST /api/mcp-connections/test, and only the ones that completed an MCP
13
- * handshake or answered UNAUTHORIZED (which means a real MCP server is
14
- * there and wants credentials) were listed. Dropped on that evidence:
15
- * GitLab (mcp.gitlab.com does not resolve), Figma, Google Drive, Slack.
16
- * Dropped for want of a brand icon: Canva, monday.com.
17
- * GitLab came back on 2026-10-18 at gitlab.com/api/v4/mcp: an unauthenticated
18
- * MCP initialize POST answered 401 with a `WWW-Authenticate: Bearer ...
19
- * resource_metadata=...` header, and the OAuth metadata names a registration
20
- * endpoint. Gamma joined the same day on the same evidence, with `brand: null`
21
- * (simple-icons has no Gamma mark; the catalogue draws a letter tile).
22
- *
23
- * Re-verified 2026-09-25 for this registry, this time against each
24
- * vendor's own documentation (`docsUrl` below) AND a fresh local probe: a
25
- * scratch script POSTed an MCP `initialize` request, unauthenticated, to
26
- * every URL below. All 17 answered `401` with a `WWW-Authenticate: Bearer`
27
- * header naming an OAuth protected-resource metadata document (for
28
- * example `resource_metadata="https://mcp.notion.com/.well-known/oauth-
29
- * protected-resource/mcp"`), which is exactly what a live MCP server
30
- * behind OAuth returns - confirming each URL is real and reachable, not
31
- * only documented. The finer distinction of `auth` below (whether a
32
- * static bearer token is ALSO accepted, alongside OAuth) came from each
33
- * vendor's docs, because a 401 alone cannot tell OAuth-only apart from
34
- * OAuth-or-bearer.
35
- *
36
- * One correction from the 2026-09-05 note: this pass found Linear's docs
37
- * now document `Authorization: Bearer <token>` as an accepted alternative
38
- * to the interactive OAuth flow. The original spec text (problem #6)
39
- * called Linear OAuth-only as of that date; either that capability is new,
40
- * or it was missed in the first pass. `auth` below reflects the current,
41
- * re-verified state, and this comment records the discrepancy rather than
42
- * silently overwriting it.
43
- *
44
- * The open MCP registry is not a usable source for this list, by the way -
45
- * anyone may publish there, and a search for "github" returns community
46
- * wrappers hosted by third parties, not GitHub's own server.
47
- *
48
- * `filesystem` and `postgres`, the textbook examples, are absent on purpose:
49
- * they are local stdio processes, and OnlyMCP deliberately does not run those
50
- * (a process we spawn on a user's behalf is code execution on our side, see
51
- * docs/SECURITY.md).
52
- *
53
- * The prefixes are real. `github__create_issue` is exactly what a client
54
- * sees, because the gateway namespaces every proxied tool with the
55
- * connection's slug (packages/api/src/mcp/gateway.ts).
56
- */
57
- export const SERVERS = [
58
- {
59
- id: 'github',
60
- name: 'GitHub',
61
- brand: 'github',
62
- url: 'https://api.githubcopilot.com/mcp/',
63
- auth: 'oauth-or-bearer',
64
- docsUrl: 'https://docs.github.com/en/copilot/how-tos/provide-context/use-mcp-in-your-ide/set-up-the-github-mcp-server',
65
- verifiedOn: '2026-09-25',
66
- suggestedSlug: 'github',
67
- },
68
- {
69
- id: 'linear',
70
- name: 'Linear',
71
- brand: 'linear',
72
- url: 'https://mcp.linear.app/mcp',
73
- auth: 'oauth-or-bearer',
74
- docsUrl: 'https://linear.app/docs/mcp',
75
- verifiedOn: '2026-09-25',
76
- suggestedSlug: 'linear',
77
- },
78
- {
79
- id: 'notion',
80
- name: 'Notion',
81
- brand: 'notion',
82
- url: 'https://mcp.notion.com/mcp',
83
- auth: 'oauth',
84
- docsUrl: 'https://developers.notion.com/guides/mcp/get-started-with-mcp',
85
- verifiedOn: '2026-09-25',
86
- suggestedSlug: 'notion',
87
- },
88
- {
89
- id: 'sentry',
90
- name: 'Sentry',
91
- brand: 'sentry',
92
- url: 'https://mcp.sentry.dev/mcp',
93
- auth: 'oauth',
94
- docsUrl: 'https://docs.sentry.io/product/mcp-servers/getting-started/',
95
- verifiedOn: '2026-09-25',
96
- suggestedSlug: 'sentry',
97
- },
98
- {
99
- id: 'stripe',
100
- name: 'Stripe',
101
- brand: 'stripe',
102
- url: 'https://mcp.stripe.com',
103
- auth: 'oauth-or-bearer',
104
- docsUrl: 'https://docs.stripe.com/mcp',
105
- verifiedOn: '2026-09-25',
106
- suggestedSlug: 'stripe',
107
- },
108
- {
109
- id: 'supabase',
110
- name: 'Supabase',
111
- brand: 'supabase',
112
- url: 'https://mcp.supabase.com/mcp',
113
- auth: 'oauth-or-bearer',
114
- docsUrl: 'https://supabase.com/docs/guides/ai-tools/mcp',
115
- verifiedOn: '2026-09-25',
116
- suggestedSlug: 'supabase',
117
- },
118
- {
119
- id: 'vercel',
120
- name: 'Vercel',
121
- brand: 'vercel',
122
- url: 'https://mcp.vercel.com',
123
- auth: 'oauth',
124
- docsUrl: 'https://vercel.com/docs/mcp/vercel-mcp',
125
- verifiedOn: '2026-09-25',
126
- suggestedSlug: 'vercel',
127
- },
128
- {
129
- id: 'atlassian',
130
- name: 'Atlassian',
131
- brand: 'atlassian',
132
- url: 'https://mcp.atlassian.com/v2/mcp',
133
- auth: 'oauth-or-bearer',
134
- docsUrl: 'https://support.atlassian.com/atlassian-rovo-mcp-server/docs/getting-started-with-the-atlassian-remote-mcp-server/',
135
- verifiedOn: '2026-09-25',
136
- suggestedSlug: 'atlassian',
137
- },
138
- {
139
- id: 'asana',
140
- name: 'Asana',
141
- brand: 'asana',
142
- // V2. The V1 Beta server (mcp.asana.com/sse) shut down 2026-08-05.
143
- url: 'https://mcp.asana.com/v2/mcp',
144
- auth: 'oauth',
145
- docsUrl: 'https://developers.asana.com/docs/integrating-with-asanas-mcp-server',
146
- verifiedOn: '2026-09-25',
147
- suggestedSlug: 'asana',
148
- },
149
- {
150
- id: 'cloudflare',
151
- name: 'Cloudflare',
152
- brand: 'cloudflare',
153
- // The general-purpose one: 2,500+ endpoints across DNS, Workers, R2,
154
- // Zero Trust. Cloudflare also hosts 16 narrower servers (docs,
155
- // bindings, observability, ...), not used here.
156
- url: 'https://mcp.cloudflare.com/mcp',
157
- auth: 'oauth',
158
- docsUrl: 'https://developers.cloudflare.com/agents/model-context-protocol/cloudflare/servers-for-cloudflare/',
159
- verifiedOn: '2026-09-25',
160
- suggestedSlug: 'cloudflare',
161
- },
162
- {
163
- id: 'intercom',
164
- name: 'Intercom',
165
- brand: 'intercom',
166
- url: 'https://mcp.intercom.com/mcp',
167
- auth: 'oauth-or-bearer',
168
- docsUrl: 'https://developers.intercom.com/docs/guides/mcp',
169
- verifiedOn: '2026-09-25',
170
- suggestedSlug: 'intercom',
171
- },
172
- {
173
- id: 'hubspot',
174
- name: 'HubSpot',
175
- brand: 'hubspot',
176
- url: 'https://mcp.hubspot.com',
177
- auth: 'oauth',
178
- docsUrl: 'https://developers.hubspot.com/docs/apps/developer-platform/build-apps/integrate-with-the-remote-hubspot-mcp-server',
179
- verifiedOn: '2026-09-25',
180
- suggestedSlug: 'hubspot',
181
- },
182
- {
183
- id: 'netlify',
184
- name: 'Netlify',
185
- brand: 'netlify',
186
- url: 'https://netlify-mcp.netlify.app/mcp',
187
- auth: 'oauth-or-bearer',
188
- docsUrl: 'https://docs.netlify.com/build/build-with-ai/netlify-mcp-server/',
189
- verifiedOn: '2026-09-25',
190
- suggestedSlug: 'netlify',
191
- },
192
- {
193
- id: 'neon',
194
- name: 'Neon',
195
- brand: 'neon',
196
- url: 'https://mcp.neon.tech/mcp',
197
- auth: 'oauth-or-bearer',
198
- docsUrl: 'https://neon.com/docs/ai/connect-mcp-clients-to-neon',
199
- verifiedOn: '2026-09-25',
200
- suggestedSlug: 'neon',
201
- },
202
- {
203
- id: 'zapier',
204
- name: 'Zapier',
205
- brand: 'zapier',
206
- url: 'https://mcp.zapier.com/api/v1/connect',
207
- auth: 'oauth-or-bearer',
208
- docsUrl: 'https://docs.zapier.com/mcp/overview/how-connections-work',
209
- verifiedOn: '2026-09-25',
210
- suggestedSlug: 'zapier',
211
- },
212
- {
213
- id: 'webflow',
214
- name: 'Webflow',
215
- brand: 'webflow',
216
- url: 'https://mcp.webflow.com/mcp',
217
- auth: 'oauth',
218
- docsUrl: 'https://developers.webflow.com/mcp/reference/getting-started',
219
- verifiedOn: '2026-09-25',
220
- suggestedSlug: 'webflow',
221
- },
222
- {
223
- id: 'wix',
224
- name: 'Wix',
225
- brand: 'wix',
226
- url: 'https://mcp.wix.com/mcp',
227
- auth: 'oauth-or-bearer',
228
- docsUrl: 'https://dev.wix.com/docs/overview/ai-the-wix-platform/the-wix-mcp',
229
- verifiedOn: '2026-09-25',
230
- suggestedSlug: 'wix',
231
- },
232
- {
233
- id: 'gitlab',
234
- name: 'GitLab',
235
- brand: 'gitlab',
236
- // GitLab.com. Self-managed and Dedicated serve the same at https://<host>/api/v4/mcp, which is why the address a
237
- // catalogue pick fills into the connection form stays editable (owner decision D3). The token is an OAuth one with
238
- // the `mcp` scope (dynamic client registration) or a fine-grained personal access token with the MCP tool resource;
239
- // legacy, project and group tokens are refused. On GitLab.com a group owner must allow MCP access for the top-level
240
- // group first.
241
- url: 'https://gitlab.com/api/v4/mcp',
242
- auth: 'oauth-or-bearer',
243
- docsUrl: 'https://docs.gitlab.com/user/model_context_protocol/mcp_server/',
244
- verifiedOn: '2026-10-18',
245
- suggestedSlug: 'gitlab',
246
- },
247
- {
248
- id: 'gamma',
249
- name: 'Gamma',
250
- brand: null,
251
- // "Uses OAuth with Dynamic Client Registration", on all plans.
252
- url: 'https://mcp.gamma.app/mcp',
253
- auth: 'oauth',
254
- docsUrl: 'https://developers.gamma.app/mcp/gamma-mcp-server',
255
- verifiedOn: '2026-10-18',
256
- suggestedSlug: 'gamma',
257
- },
258
- ];
259
- //# sourceMappingURL=servers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"servers.js","sourceRoot":"","sources":["../../src/registry/servers.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- /**
2
- * The title and the annotations (MCP `Tool.title`, `ToolAnnotations`) of OnlyMCP's own twenty-eight tools.
3
- *
4
- * One table for both ways in: the hosted endpoint sets the same values in its tool files (packages/api/src/mcp/tools,
5
- * pinned to this table by test/mcp-tool-annotations.spec.ts), and the stdio server lists straight from the copy of this
6
- * file in packages/mcp (scripts/sync-registry.mjs). A client that decides what to ask about by the hints must see the
7
- * same answer whichever way it connected. The last two entries, `connection_tool_schema` and `connection_call`, belong
8
- * to the hosted endpoint alone: they reach the tools of the account's gateway, which the stdio server does not have,
9
- * so it lists the other twenty-six.
10
- *
11
- * What the values say. `readOnlyHint: true` only for the fourteen tools that change nothing. The writers that replace
12
- * the whole file (`*_write`) are destructive and idempotent. `memory_move` and `connection_create` only add or move,
13
- * `connection_update` and `connection_tool_toggle` adjust and repeat harmlessly, every `*_delete` is destructive.
14
- * `connection_call` runs a tool of a foreign server, so it is not read-only, destructive (the callee is unknown) and
15
- * not idempotent. `openWorldHint` is false for all but `connection_create`, which probes a server of the caller's
16
- * choosing, and `connection_call`. The hints
17
- * are hints, not guarantees; the spec asks clients to weigh them by how far they trust the server, and this is that
18
- * server speaking about itself.
19
- */
20
- export interface ToolHint {
21
- title: string;
22
- annotations: {
23
- readOnlyHint: boolean;
24
- destructiveHint?: boolean;
25
- idempotentHint?: boolean;
26
- openWorldHint: boolean;
27
- };
28
- }
29
- export declare const TOOL_HINTS: Readonly<Record<string, ToolHint>>;
@@ -1,41 +0,0 @@
1
- const reads = (title) => ({ title, annotations: { readOnlyHint: true, openWorldHint: false } });
2
- const writes = (title, how) => ({
3
- title,
4
- annotations: {
5
- readOnlyHint: false,
6
- destructiveHint: how.destructive,
7
- idempotentHint: how.idempotent,
8
- openWorldHint: how.openWorld ?? false,
9
- },
10
- });
11
- export const TOOL_HINTS = {
12
- list_memory: reads('List memory files'),
13
- memory_read: reads('Read a memory file'),
14
- memory_write: writes('Write a memory file', { destructive: true, idempotent: true }),
15
- memory_delete: writes('Delete a memory file', { destructive: true, idempotent: false }),
16
- memory_search: reads('Search memory'),
17
- memory_tree: reads('Show the memory tree'),
18
- memory_move: writes('Move a memory file or folder', { destructive: false, idempotent: false }),
19
- memory_links: reads('Show memory links'),
20
- list_skills: reads('List skills'),
21
- get_skill: reads('Load a skill'),
22
- skill_write: writes('Write a skill', { destructive: true, idempotent: true }),
23
- skill_delete: writes('Delete a skill', { destructive: true, idempotent: false }),
24
- list_skill_files: reads('List skill files'),
25
- get_skill_file: reads('Read a skill file'),
26
- skill_file_write: writes('Write a skill file', { destructive: true, idempotent: true }),
27
- skill_file_delete: writes('Delete a skill file', { destructive: true, idempotent: false }),
28
- list_agents: reads('List agents'),
29
- get_agent_definition: reads('Load an agent definition'),
30
- agent_write: writes('Write an agent', { destructive: true, idempotent: true }),
31
- agent_delete: writes('Delete an agent', { destructive: true, idempotent: false }),
32
- list_connections: reads('List connections'),
33
- connection_create: writes('Add a connection', { destructive: false, idempotent: false, openWorld: true }),
34
- connection_update: writes('Update a connection', { destructive: false, idempotent: true }),
35
- connection_delete: writes('Delete a connection', { destructive: true, idempotent: false }),
36
- connection_tools: reads("List a connection's tools"),
37
- connection_tool_toggle: writes('Switch a connection tool on or off', { destructive: false, idempotent: true }),
38
- connection_tool_schema: reads("Show a connection tool's schema"),
39
- connection_call: writes('Call a connection tool', { destructive: true, idempotent: false, openWorld: true }),
40
- };
41
- //# sourceMappingURL=toolHints.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toolHints.js","sourceRoot":"","sources":["../../src/registry/toolHints.ts"],"names":[],"mappings":"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"}
@@ -1,71 +0,0 @@
1
- export type ClientId = 'claude-code' | 'claude-app' | 'chatgpt' | 'codex' | 'antigravity' | 'gemini-app' | 'grok' | 'copilot-vscode' | 'cursor' | 'windsurf' | 'cline' | 'zed' | 'continue' | 'gitlab-duo' | 'opencode';
2
- export type ClientCategory = 'chat' | 'coding' | 'ide';
3
- /** How this client can reach OnlyMCP. Order in the array is preference order. */
4
- export type ConnectMethod = 'remote-oauth' | 'remote-header' | 'stdio';
5
- export type SnippetLanguage = 'bash' | 'json' | 'toml' | 'yaml' | 'text';
6
- export interface Snippet {
7
- language: SnippetLanguage;
8
- /** Never translated, never localised, never contains a placeholder path. */
9
- text: string;
10
- /** Where the snippet goes, if it is a file. */
11
- path?: string;
12
- }
13
- /** Present only where `npx onlymcp install` can write the config itself. */
14
- export interface ClientInstall {
15
- configPath: string;
16
- format: 'json' | 'toml';
17
- stubDir: string | null;
18
- }
19
- export interface ClientRecord {
20
- id: ClientId;
21
- /**
22
- * Retired ids and spellings that still mean this client, so an old link (`?client=gemini-cli`) or an old command
23
- * (`install --client gemini-cli`) lands on the successor. An alias is never another record's id (snippets.spec.ts).
24
- */
25
- aliases?: readonly string[];
26
- name: string;
27
- category: ClientCategory;
28
- /**
29
- * simple-icons slug, or a key of `FILE_MARKS` in `web/src/components/BrandMark.tsx` (an owner's official file, shown
30
- * under their brand guidelines: `openai`, `antigravity`, `grok`), or null when no mark may be used.
31
- */
32
- brand: string | null;
33
- methods: ConnectMethod[];
34
- docsUrl: string;
35
- /** ISO date on which the facts below were checked against docsUrl. */
36
- verifiedOn: string;
37
- /** Keys into CAVEATS (caveats.ts) for restrictions that must be stated; empty when there are none. */
38
- caveats: string[];
39
- install: ClientInstall | null;
40
- /**
41
- * The hosts a web client's OAuth redirect_uri points at, as its docs name them or, where they name none, as its own
42
- * registrations on only-mcp.com show. The consent page shows this client's mark for a request whose code goes there:
43
- * the redirect is used, not claimed. Absent where nothing is verified.
44
- */
45
- oauthRedirectHosts?: readonly string[];
46
- /** Pure generator. Returns null when the remote-header method does not apply. */
47
- remote(ctx: RemoteContext): Snippet[] | null;
48
- }
49
- export interface RemoteContext {
50
- /** https://only-mcp.com/api/mcp */
51
- endpoint: string;
52
- /** Real token, or the literal placeholder 'omk_...'. */
53
- token: string;
54
- /** '~' on posix, '%USERPROFILE%' on windows. */
55
- homePlaceholder?: string;
56
- }
57
- export interface ServerRecord {
58
- id: string;
59
- name: string;
60
- /**
61
- * simple-icons slug, or a key of `FILE_MARKS` in `web/src/components/BrandMark.tsx` (an owner's official file, shown
62
- * under their brand guidelines: `openai`), or null when no mark may be used.
63
- */
64
- brand: string | null;
65
- url: string;
66
- auth: 'oauth' | 'bearer' | 'oauth-or-bearer' | 'none';
67
- docsUrl: string;
68
- verifiedOn: string;
69
- /** 'github' -> github__create_issue */
70
- suggestedSlug: string;
71
- }
@@ -1,6 +0,0 @@
1
- // Generated by scripts/sync-registry.mjs. Do not edit.
2
- // Types for the client and server registry. Zero runtime dependencies, no
3
- // Node API, no DOM, no React: this package is imported by the API (server),
4
- // the web app (browser) and, as a generated copy, the published CLI.
5
- export {};
6
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,0EAA0E;AAC1E,4EAA4E;AAC5E,qEAAqE"}
@@ -1 +0,0 @@
1
- export declare function isSafeSkillFilePath(path: string): boolean;
@@ -1,29 +0,0 @@
1
- // Client-seitige Kopie der Server-Regel (packages/api/src/skills/files.ts,
2
- // skillFilePath). Dasselbe Muster wie memoryPath.ts, und aus zwei Gruenden:
3
- //
4
- // Beim Schreiben (stubs.ts) ist es eine Sicherheitspruefung - aus einem Pfad,
5
- // den der Server geschickt hat, wird ein echter Schreibvorgang auf einer
6
- // echten Platte, und die muss auch dann halten, wenn jede andere Pruefung
7
- // versagt hat.
8
- //
9
- // Beim Planen (import/plan.ts) ist es Hoeflichkeit: der Bericht soll
10
- // "uebersprungen, ungueltiger Pfad" sagen koennen, statt dass jemand 307
11
- // Uploads zuschaut und einen 400 am Ende. Gemessen an einem echten Setup war
12
- // das genau eine Datei, `ui-styling/scripts/.coverage` - ein Segment darf
13
- // nicht mit einem Punkt beginnen.
14
- const SEGMENT = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
15
- const MAX_SEGMENTS = 8;
16
- const MAX_LENGTH = 200;
17
- export function isSafeSkillFilePath(path) {
18
- if (path.length === 0 || path.length > MAX_LENGTH)
19
- return false;
20
- // SKILL.md ist der Inhalt des Skills selbst und keine Begleitdatei. Der
21
- // Server lehnt sie ab, damit es nicht zwei Orte fuer denselben Text gibt.
22
- if (path === 'SKILL.md')
23
- return false;
24
- const parts = path.split('/');
25
- if (parts.length > MAX_SEGMENTS)
26
- return false;
27
- return parts.every((seg) => SEGMENT.test(seg) && seg !== '..' && seg !== '.');
28
- }
29
- //# sourceMappingURL=skillFilePath.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skillFilePath.js","sourceRoot":"","sources":["../src/skillFilePath.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,4EAA4E;AAC5E,EAAE;AACF,8EAA8E;AAC9E,yEAAyE;AACzE,0EAA0E;AAC1E,eAAe;AACf,EAAE;AACF,qEAAqE;AACrE,yEAAyE;AACzE,6EAA6E;AAC7E,0EAA0E;AAC1E,kCAAkC;AAClC,MAAM,OAAO,GAAG,8BAA8B,CAAC;AAC/C,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU;QAAE,OAAO,KAAK,CAAC;IAChE,wEAAwE;IACxE,0EAA0E;IAC1E,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;AAChF,CAAC"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Says whether a skill or agent name is left out of the stubs.
3
- *
4
- * Every stub costs context in every session, because a client reads the
5
- * frontmatter of each one at start. Whoever keeps only some skills and agents
6
- * on disk lists the rest in the stub-ignore file, and `login`, `sync` and the
7
- * bridge write no stub for them, but take back the stubs they wrote earlier.
8
- * The rest stays reachable through get_skill and get_agent_definition. Before
9
- * the file existed, every login wrote all of them again: on 2026-10-19 that was
10
- * 205 agents and 15 skills the owner had moved out of ~/.claude.
11
- *
12
- * One pattern a line. `*` matches any run of characters, a line starting with
13
- * `#` is a comment, and a lone `*` means no stubs at all.
14
- */
15
- export type StubIgnore = (name: string) => boolean;
16
- export declare const ignoreNothing: StubIgnore;
17
- export declare function parseStubIgnore(text: string): StubIgnore;
18
- /**
19
- * A missing file leaves out nothing. Any other read error throws: writing every
20
- * stub then would be the very thing the file is there to stop.
21
- */
22
- export declare function readStubIgnore(path?: string): Promise<StubIgnore>;
@@ -1,29 +0,0 @@
1
- import { readFile } from 'node:fs/promises';
2
- import { stubIgnoreFile } from './paths.js';
3
- export const ignoreNothing = () => false;
4
- function escapeRegExp(text) {
5
- return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
6
- }
7
- export function parseStubIgnore(text) {
8
- const patterns = text
9
- .split(/\r?\n/)
10
- .map((line) => line.trim())
11
- .filter((line) => line !== '' && !line.startsWith('#'))
12
- .map((line) => new RegExp(`^${line.split('*').map(escapeRegExp).join('.*')}$`));
13
- return (name) => patterns.some((p) => p.test(name));
14
- }
15
- /**
16
- * A missing file leaves out nothing. Any other read error throws: writing every
17
- * stub then would be the very thing the file is there to stop.
18
- */
19
- export async function readStubIgnore(path = stubIgnoreFile()) {
20
- try {
21
- return parseStubIgnore(await readFile(path, 'utf8'));
22
- }
23
- catch (e) {
24
- if (e.code === 'ENOENT')
25
- return ignoreNothing;
26
- throw e;
27
- }
28
- }
29
- //# sourceMappingURL=stubIgnore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stubIgnore.js","sourceRoot":"","sources":["../src/stubIgnore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkB5C,MAAM,CAAC,MAAM,aAAa,GAAe,GAAG,EAAE,CAAC,KAAK,CAAC;AAErD,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,QAAQ,GAAG,IAAI;SAClB,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACtD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAI,GAAG,cAAc,EAAE;IAC1D,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,aAAa,CAAC;QACzE,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
package/dist/stubs.d.ts DELETED
@@ -1,12 +0,0 @@
1
- import type { ApiClient } from './apiClient.js';
2
- import { type StubIgnore } from './stubIgnore.js';
3
- export declare function writeStubs(api: ApiClient, dir: string, opts?: {
4
- ignore?: StubIgnore;
5
- }): Promise<{
6
- skills: number;
7
- agents: number;
8
- files: number;
9
- kept: string[];
10
- ignored: string[];
11
- removed: number;
12
- }>;