db-mcp 1.0.1

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 (208) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +860 -0
  3. package/dist/adapters/DatabaseAdapter.d.ts +141 -0
  4. package/dist/adapters/DatabaseAdapter.d.ts.map +1 -0
  5. package/dist/adapters/DatabaseAdapter.js +131 -0
  6. package/dist/adapters/DatabaseAdapter.js.map +1 -0
  7. package/dist/adapters/sqlite/SchemaManager.d.ts +58 -0
  8. package/dist/adapters/sqlite/SchemaManager.d.ts.map +1 -0
  9. package/dist/adapters/sqlite/SchemaManager.js +187 -0
  10. package/dist/adapters/sqlite/SchemaManager.js.map +1 -0
  11. package/dist/adapters/sqlite/SqliteAdapter.d.ts +161 -0
  12. package/dist/adapters/sqlite/SqliteAdapter.d.ts.map +1 -0
  13. package/dist/adapters/sqlite/SqliteAdapter.js +741 -0
  14. package/dist/adapters/sqlite/SqliteAdapter.js.map +1 -0
  15. package/dist/adapters/sqlite/index.d.ts +9 -0
  16. package/dist/adapters/sqlite/index.d.ts.map +1 -0
  17. package/dist/adapters/sqlite/index.js +8 -0
  18. package/dist/adapters/sqlite/index.js.map +1 -0
  19. package/dist/adapters/sqlite/json-utils.d.ts +100 -0
  20. package/dist/adapters/sqlite/json-utils.d.ts.map +1 -0
  21. package/dist/adapters/sqlite/json-utils.js +274 -0
  22. package/dist/adapters/sqlite/json-utils.js.map +1 -0
  23. package/dist/adapters/sqlite/output-schemas.d.ts +1187 -0
  24. package/dist/adapters/sqlite/output-schemas.d.ts.map +1 -0
  25. package/dist/adapters/sqlite/output-schemas.js +1337 -0
  26. package/dist/adapters/sqlite/output-schemas.js.map +1 -0
  27. package/dist/adapters/sqlite/prompts.d.ts +13 -0
  28. package/dist/adapters/sqlite/prompts.d.ts.map +1 -0
  29. package/dist/adapters/sqlite/prompts.js +605 -0
  30. package/dist/adapters/sqlite/prompts.js.map +1 -0
  31. package/dist/adapters/sqlite/resources.d.ts +13 -0
  32. package/dist/adapters/sqlite/resources.d.ts.map +1 -0
  33. package/dist/adapters/sqlite/resources.js +251 -0
  34. package/dist/adapters/sqlite/resources.js.map +1 -0
  35. package/dist/adapters/sqlite/tools/admin.d.ts +14 -0
  36. package/dist/adapters/sqlite/tools/admin.d.ts.map +1 -0
  37. package/dist/adapters/sqlite/tools/admin.js +788 -0
  38. package/dist/adapters/sqlite/tools/admin.js.map +1 -0
  39. package/dist/adapters/sqlite/tools/core.d.ts +25 -0
  40. package/dist/adapters/sqlite/tools/core.d.ts.map +1 -0
  41. package/dist/adapters/sqlite/tools/core.js +359 -0
  42. package/dist/adapters/sqlite/tools/core.js.map +1 -0
  43. package/dist/adapters/sqlite/tools/fts.d.ts +13 -0
  44. package/dist/adapters/sqlite/tools/fts.d.ts.map +1 -0
  45. package/dist/adapters/sqlite/tools/fts.js +347 -0
  46. package/dist/adapters/sqlite/tools/fts.js.map +1 -0
  47. package/dist/adapters/sqlite/tools/geo.d.ts +14 -0
  48. package/dist/adapters/sqlite/tools/geo.d.ts.map +1 -0
  49. package/dist/adapters/sqlite/tools/geo.js +252 -0
  50. package/dist/adapters/sqlite/tools/geo.js.map +1 -0
  51. package/dist/adapters/sqlite/tools/index.d.ts +30 -0
  52. package/dist/adapters/sqlite/tools/index.d.ts.map +1 -0
  53. package/dist/adapters/sqlite/tools/index.js +61 -0
  54. package/dist/adapters/sqlite/tools/index.js.map +1 -0
  55. package/dist/adapters/sqlite/tools/json-helpers.d.ts +14 -0
  56. package/dist/adapters/sqlite/tools/json-helpers.d.ts.map +1 -0
  57. package/dist/adapters/sqlite/tools/json-helpers.js +477 -0
  58. package/dist/adapters/sqlite/tools/json-helpers.js.map +1 -0
  59. package/dist/adapters/sqlite/tools/json-operations.d.ts +14 -0
  60. package/dist/adapters/sqlite/tools/json-operations.d.ts.map +1 -0
  61. package/dist/adapters/sqlite/tools/json-operations.js +839 -0
  62. package/dist/adapters/sqlite/tools/json-operations.js.map +1 -0
  63. package/dist/adapters/sqlite/tools/stats.d.ts +15 -0
  64. package/dist/adapters/sqlite/tools/stats.d.ts.map +1 -0
  65. package/dist/adapters/sqlite/tools/stats.js +1219 -0
  66. package/dist/adapters/sqlite/tools/stats.js.map +1 -0
  67. package/dist/adapters/sqlite/tools/text.d.ts +14 -0
  68. package/dist/adapters/sqlite/tools/text.d.ts.map +1 -0
  69. package/dist/adapters/sqlite/tools/text.js +1141 -0
  70. package/dist/adapters/sqlite/tools/text.js.map +1 -0
  71. package/dist/adapters/sqlite/tools/vector.d.ts +14 -0
  72. package/dist/adapters/sqlite/tools/vector.d.ts.map +1 -0
  73. package/dist/adapters/sqlite/tools/vector.js +613 -0
  74. package/dist/adapters/sqlite/tools/vector.js.map +1 -0
  75. package/dist/adapters/sqlite/tools/virtual.d.ts +13 -0
  76. package/dist/adapters/sqlite/tools/virtual.d.ts.map +1 -0
  77. package/dist/adapters/sqlite/tools/virtual.js +930 -0
  78. package/dist/adapters/sqlite/tools/virtual.js.map +1 -0
  79. package/dist/adapters/sqlite/types.d.ts +207 -0
  80. package/dist/adapters/sqlite/types.d.ts.map +1 -0
  81. package/dist/adapters/sqlite/types.js +186 -0
  82. package/dist/adapters/sqlite/types.js.map +1 -0
  83. package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts +163 -0
  84. package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts.map +1 -0
  85. package/dist/adapters/sqlite-native/NativeSqliteAdapter.js +748 -0
  86. package/dist/adapters/sqlite-native/NativeSqliteAdapter.js.map +1 -0
  87. package/dist/adapters/sqlite-native/index.d.ts +11 -0
  88. package/dist/adapters/sqlite-native/index.d.ts.map +1 -0
  89. package/dist/adapters/sqlite-native/index.js +11 -0
  90. package/dist/adapters/sqlite-native/index.js.map +1 -0
  91. package/dist/adapters/sqlite-native/tools/spatialite.d.ts +19 -0
  92. package/dist/adapters/sqlite-native/tools/spatialite.d.ts.map +1 -0
  93. package/dist/adapters/sqlite-native/tools/spatialite.js +628 -0
  94. package/dist/adapters/sqlite-native/tools/spatialite.js.map +1 -0
  95. package/dist/adapters/sqlite-native/tools/transactions.d.ts +12 -0
  96. package/dist/adapters/sqlite-native/tools/transactions.d.ts.map +1 -0
  97. package/dist/adapters/sqlite-native/tools/transactions.js +255 -0
  98. package/dist/adapters/sqlite-native/tools/transactions.js.map +1 -0
  99. package/dist/adapters/sqlite-native/tools/window.d.ts +12 -0
  100. package/dist/adapters/sqlite-native/tools/window.d.ts.map +1 -0
  101. package/dist/adapters/sqlite-native/tools/window.js +370 -0
  102. package/dist/adapters/sqlite-native/tools/window.js.map +1 -0
  103. package/dist/auth/AuthorizationServerDiscovery.d.ts +90 -0
  104. package/dist/auth/AuthorizationServerDiscovery.d.ts.map +1 -0
  105. package/dist/auth/AuthorizationServerDiscovery.js +204 -0
  106. package/dist/auth/AuthorizationServerDiscovery.js.map +1 -0
  107. package/dist/auth/OAuthResourceServer.d.ts +65 -0
  108. package/dist/auth/OAuthResourceServer.d.ts.map +1 -0
  109. package/dist/auth/OAuthResourceServer.js +121 -0
  110. package/dist/auth/OAuthResourceServer.js.map +1 -0
  111. package/dist/auth/TokenValidator.d.ts +60 -0
  112. package/dist/auth/TokenValidator.d.ts.map +1 -0
  113. package/dist/auth/TokenValidator.js +235 -0
  114. package/dist/auth/TokenValidator.js.map +1 -0
  115. package/dist/auth/errors.d.ts +74 -0
  116. package/dist/auth/errors.d.ts.map +1 -0
  117. package/dist/auth/errors.js +133 -0
  118. package/dist/auth/errors.js.map +1 -0
  119. package/dist/auth/index.d.ts +13 -0
  120. package/dist/auth/index.d.ts.map +1 -0
  121. package/dist/auth/index.js +15 -0
  122. package/dist/auth/index.js.map +1 -0
  123. package/dist/auth/middleware.d.ts +81 -0
  124. package/dist/auth/middleware.d.ts.map +1 -0
  125. package/dist/auth/middleware.js +291 -0
  126. package/dist/auth/middleware.js.map +1 -0
  127. package/dist/auth/scopes.d.ts +136 -0
  128. package/dist/auth/scopes.d.ts.map +1 -0
  129. package/dist/auth/scopes.js +349 -0
  130. package/dist/auth/scopes.js.map +1 -0
  131. package/dist/auth/types.d.ts +257 -0
  132. package/dist/auth/types.d.ts.map +1 -0
  133. package/dist/auth/types.js +8 -0
  134. package/dist/auth/types.js.map +1 -0
  135. package/dist/cli.d.ts +8 -0
  136. package/dist/cli.d.ts.map +1 -0
  137. package/dist/cli.js +236 -0
  138. package/dist/cli.js.map +1 -0
  139. package/dist/constants/ServerInstructions.d.ts +45 -0
  140. package/dist/constants/ServerInstructions.d.ts.map +1 -0
  141. package/dist/constants/ServerInstructions.js +356 -0
  142. package/dist/constants/ServerInstructions.js.map +1 -0
  143. package/dist/filtering/ToolConstants.d.ts +34 -0
  144. package/dist/filtering/ToolConstants.d.ts.map +1 -0
  145. package/dist/filtering/ToolConstants.js +174 -0
  146. package/dist/filtering/ToolConstants.js.map +1 -0
  147. package/dist/filtering/ToolFilter.d.ts +82 -0
  148. package/dist/filtering/ToolFilter.d.ts.map +1 -0
  149. package/dist/filtering/ToolFilter.js +296 -0
  150. package/dist/filtering/ToolFilter.js.map +1 -0
  151. package/dist/index.d.ts +13 -0
  152. package/dist/index.d.ts.map +1 -0
  153. package/dist/index.js +17 -0
  154. package/dist/index.js.map +1 -0
  155. package/dist/server/McpServer.d.ts +61 -0
  156. package/dist/server/McpServer.d.ts.map +1 -0
  157. package/dist/server/McpServer.js +270 -0
  158. package/dist/server/McpServer.js.map +1 -0
  159. package/dist/transports/http.d.ts +134 -0
  160. package/dist/transports/http.d.ts.map +1 -0
  161. package/dist/transports/http.js +516 -0
  162. package/dist/transports/http.js.map +1 -0
  163. package/dist/transports/index.d.ts +5 -0
  164. package/dist/transports/index.d.ts.map +1 -0
  165. package/dist/transports/index.js +5 -0
  166. package/dist/transports/index.js.map +1 -0
  167. package/dist/types/index.d.ts +380 -0
  168. package/dist/types/index.d.ts.map +1 -0
  169. package/dist/types/index.js +68 -0
  170. package/dist/types/index.js.map +1 -0
  171. package/dist/utils/annotations.d.ts +44 -0
  172. package/dist/utils/annotations.d.ts.map +1 -0
  173. package/dist/utils/annotations.js +77 -0
  174. package/dist/utils/annotations.js.map +1 -0
  175. package/dist/utils/errors.d.ts +155 -0
  176. package/dist/utils/errors.d.ts.map +1 -0
  177. package/dist/utils/errors.js +329 -0
  178. package/dist/utils/errors.js.map +1 -0
  179. package/dist/utils/identifiers.d.ts +121 -0
  180. package/dist/utils/identifiers.d.ts.map +1 -0
  181. package/dist/utils/identifiers.js +319 -0
  182. package/dist/utils/identifiers.js.map +1 -0
  183. package/dist/utils/index.d.ts +7 -0
  184. package/dist/utils/index.d.ts.map +1 -0
  185. package/dist/utils/index.js +7 -0
  186. package/dist/utils/index.js.map +1 -0
  187. package/dist/utils/insightsManager.d.ts +39 -0
  188. package/dist/utils/insightsManager.d.ts.map +1 -0
  189. package/dist/utils/insightsManager.js +63 -0
  190. package/dist/utils/insightsManager.js.map +1 -0
  191. package/dist/utils/logger.d.ts +189 -0
  192. package/dist/utils/logger.d.ts.map +1 -0
  193. package/dist/utils/logger.js +394 -0
  194. package/dist/utils/logger.js.map +1 -0
  195. package/dist/utils/progress-utils.d.ts +54 -0
  196. package/dist/utils/progress-utils.d.ts.map +1 -0
  197. package/dist/utils/progress-utils.js +74 -0
  198. package/dist/utils/progress-utils.js.map +1 -0
  199. package/dist/utils/resourceAnnotations.d.ts +36 -0
  200. package/dist/utils/resourceAnnotations.d.ts.map +1 -0
  201. package/dist/utils/resourceAnnotations.js +57 -0
  202. package/dist/utils/resourceAnnotations.js.map +1 -0
  203. package/dist/utils/where-clause.d.ts +41 -0
  204. package/dist/utils/where-clause.d.ts.map +1 -0
  205. package/dist/utils/where-clause.js +116 -0
  206. package/dist/utils/where-clause.js.map +1 -0
  207. package/package.json +83 -0
  208. package/server.json +53 -0
@@ -0,0 +1,349 @@
1
+ /**
2
+ * db-mcp - OAuth Scopes
3
+ *
4
+ * Scope definitions and enforcement utilities for
5
+ * granular access control.
6
+ *
7
+ * Scope Patterns:
8
+ * - read : Read-only access to all databases
9
+ * - write : Read and write access to all databases
10
+ * - admin : Full administrative access
11
+ * - db:{name} : Access to specific database only
12
+ * - table:{db}:{table} : Access to specific table only
13
+ */
14
+ import { TOOL_GROUPS } from "../filtering/ToolFilter.js";
15
+ // =============================================================================
16
+ // Scope Constants
17
+ // =============================================================================
18
+ /**
19
+ * Base scopes supported by the server
20
+ */
21
+ export const BASE_SCOPES = ["read", "write", "admin"];
22
+ /**
23
+ * Scope patterns (regex patterns for validation)
24
+ */
25
+ export const SCOPE_PATTERNS = {
26
+ /** Read-only access */
27
+ READ: "read",
28
+ /** Read and write access */
29
+ WRITE: "write",
30
+ /** Full admin access */
31
+ ADMIN: "admin",
32
+ /** Database-specific access pattern */
33
+ DATABASE: /^db:([a-zA-Z0-9_-]+)$/,
34
+ /** Table-specific access pattern */
35
+ TABLE: /^table:([a-zA-Z0-9_-]+):([a-zA-Z0-9_-]+)$/,
36
+ };
37
+ /**
38
+ * All supported scope patterns for metadata
39
+ */
40
+ export const SUPPORTED_SCOPES = [
41
+ "read",
42
+ "write",
43
+ "admin",
44
+ "db:{database}",
45
+ "table:{database}:{table}",
46
+ ];
47
+ // =============================================================================
48
+ // Scope to Tool Group Mapping
49
+ // =============================================================================
50
+ /**
51
+ * Tool groups accessible with read scope (read-only operations)
52
+ */
53
+ export const READ_SCOPE_GROUPS = [
54
+ "core", // read_query, list_tables, describe_table, etc.
55
+ ];
56
+ /**
57
+ * Tool groups accessible with write scope (read + write operations)
58
+ */
59
+ export const WRITE_SCOPE_GROUPS = [
60
+ ...READ_SCOPE_GROUPS,
61
+ "json", // JSON operations
62
+ "text", // Text processing
63
+ "stats", // Statistical analysis
64
+ "vector", // Vector operations
65
+ ];
66
+ /**
67
+ * Tool groups accessible with admin scope (all operations)
68
+ */
69
+ export const ADMIN_SCOPE_GROUPS = [
70
+ ...WRITE_SCOPE_GROUPS,
71
+ "admin", // Administration
72
+ ];
73
+ /**
74
+ * Read-only tools within the core group
75
+ * (used when scope is 'read' to filter write operations)
76
+ */
77
+ export const READ_ONLY_TOOLS = new Set([
78
+ "execute_query", // If used with SELECT only
79
+ "read_query",
80
+ "list_tables",
81
+ "describe_table",
82
+ "list_schemas",
83
+ "get_schema",
84
+ "health_check",
85
+ "connection_status",
86
+ "database_stats",
87
+ "active_queries",
88
+ "resource_usage",
89
+ "analyze_query",
90
+ "explain_query",
91
+ "query_plan",
92
+ ]);
93
+ /**
94
+ * Write tools that require 'write' scope
95
+ */
96
+ export const WRITE_TOOLS = new Set([
97
+ "write_query",
98
+ "create_table",
99
+ "drop_table",
100
+ "json_insert",
101
+ "json_replace",
102
+ "json_remove",
103
+ "json_set",
104
+ "create_fts_index",
105
+ "create_vector_index",
106
+ "create_spatial_index",
107
+ "create_index",
108
+ "drop_index",
109
+ "reindex",
110
+ ]);
111
+ /**
112
+ * Admin tools that require 'admin' scope
113
+ */
114
+ export const ADMIN_TOOLS = new Set([
115
+ "vacuum_database",
116
+ "analyze_tables",
117
+ "pragma_get",
118
+ "pragma_set",
119
+ "extension_list",
120
+ "extension_install",
121
+ "optimize",
122
+ "backup_database",
123
+ "restore_database",
124
+ "backup_table",
125
+ "export_data",
126
+ ]);
127
+ // =============================================================================
128
+ // Scope Parsing
129
+ // =============================================================================
130
+ /**
131
+ * Parse a scope string (space-delimited) into an array
132
+ */
133
+ export function parseScopes(scopeString) {
134
+ return scopeString
135
+ .split(/\s+/)
136
+ .map((s) => s.trim())
137
+ .filter((s) => s.length > 0);
138
+ }
139
+ /**
140
+ * Parse a database-specific scope
141
+ * @returns The database name or null if not a database scope
142
+ */
143
+ export function parseDatabaseScope(scope) {
144
+ const match = SCOPE_PATTERNS.DATABASE.exec(scope);
145
+ return match?.[1] ?? null;
146
+ }
147
+ /**
148
+ * Parse a table-specific scope
149
+ * @returns Object with database and table names, or null if not a table scope
150
+ */
151
+ export function parseTableScope(scope) {
152
+ const match = SCOPE_PATTERNS.TABLE.exec(scope);
153
+ const database = match?.[1];
154
+ const table = match?.[2];
155
+ if (database !== undefined && table !== undefined) {
156
+ return { database, table };
157
+ }
158
+ return null;
159
+ }
160
+ // =============================================================================
161
+ // Scope Validation
162
+ // =============================================================================
163
+ /**
164
+ * Check if a scope is valid (matches known patterns)
165
+ */
166
+ export function isValidScope(scope) {
167
+ // Check base scopes
168
+ if (BASE_SCOPES.includes(scope)) {
169
+ return true;
170
+ }
171
+ // Check database pattern
172
+ if (SCOPE_PATTERNS.DATABASE.test(scope)) {
173
+ return true;
174
+ }
175
+ // Check table pattern
176
+ if (SCOPE_PATTERNS.TABLE.test(scope)) {
177
+ return true;
178
+ }
179
+ return false;
180
+ }
181
+ /**
182
+ * Check if scopes include admin access
183
+ */
184
+ export function hasAdminScope(scopes) {
185
+ return scopes.includes("admin");
186
+ }
187
+ /**
188
+ * Check if scopes include write access
189
+ */
190
+ export function hasWriteScope(scopes) {
191
+ return scopes.includes("write") || hasAdminScope(scopes);
192
+ }
193
+ /**
194
+ * Check if scopes include read access
195
+ */
196
+ export function hasReadScope(scopes) {
197
+ return scopes.includes("read") || hasWriteScope(scopes);
198
+ }
199
+ // =============================================================================
200
+ // Scope Enforcement
201
+ // =============================================================================
202
+ /**
203
+ * Check if a scope grants access to a specific tool
204
+ */
205
+ export function scopeGrantsToolAccess(scope, toolName) {
206
+ // Admin scope grants access to all tools
207
+ if (scope === "admin") {
208
+ return true;
209
+ }
210
+ // Write scope grants access to write tools and below
211
+ if (scope === "write") {
212
+ if (ADMIN_TOOLS.has(toolName)) {
213
+ return false;
214
+ }
215
+ return true;
216
+ }
217
+ // Read scope only grants read-only tools
218
+ if (scope === "read") {
219
+ return READ_ONLY_TOOLS.has(toolName);
220
+ }
221
+ // Database/table scopes don't directly affect tool access
222
+ // They are used for filtering data, not tools
223
+ return false;
224
+ }
225
+ /**
226
+ * Check if any of the scopes grants access to a tool
227
+ */
228
+ export function scopesGrantToolAccess(scopes, toolName) {
229
+ return scopes.some((scope) => scopeGrantsToolAccess(scope, toolName));
230
+ }
231
+ /**
232
+ * Check if a scope grants access to a specific database
233
+ */
234
+ export function scopeGrantsDatabaseAccess(scope, databaseName) {
235
+ // Admin and write scopes grant access to all databases
236
+ if (scope === "admin" || scope === "write" || scope === "read") {
237
+ return true;
238
+ }
239
+ // Check database-specific scope
240
+ const dbName = parseDatabaseScope(scope);
241
+ if (dbName && dbName === databaseName) {
242
+ return true;
243
+ }
244
+ // Check table scope (grants access to the database of the table)
245
+ const tableScope = parseTableScope(scope);
246
+ if (tableScope?.database === databaseName) {
247
+ return true;
248
+ }
249
+ return false;
250
+ }
251
+ /**
252
+ * Check if any of the scopes grants access to a database
253
+ */
254
+ export function scopesGrantDatabaseAccess(scopes, databaseName) {
255
+ return scopes.some((scope) => scopeGrantsDatabaseAccess(scope, databaseName));
256
+ }
257
+ /**
258
+ * Check if a scope grants access to a specific table
259
+ */
260
+ export function scopeGrantsTableAccess(scope, databaseName, tableName) {
261
+ // Admin and write scopes grant access to all tables
262
+ if (scope === "admin" || scope === "write" || scope === "read") {
263
+ return true;
264
+ }
265
+ // Database scope grants access to all tables in that database
266
+ const dbName = parseDatabaseScope(scope);
267
+ if (dbName && dbName === databaseName) {
268
+ return true;
269
+ }
270
+ // Check table-specific scope
271
+ const tableScope = parseTableScope(scope);
272
+ if (tableScope?.database === databaseName && tableScope.table === tableName) {
273
+ return true;
274
+ }
275
+ return false;
276
+ }
277
+ /**
278
+ * Check if any of the scopes grants access to a table
279
+ */
280
+ export function scopesGrantTableAccess(scopes, databaseName, tableName) {
281
+ return scopes.some((scope) => scopeGrantsTableAccess(scope, databaseName, tableName));
282
+ }
283
+ // =============================================================================
284
+ // Tool Group Utilities
285
+ // =============================================================================
286
+ /**
287
+ * Get the required minimum scope for a tool group
288
+ */
289
+ export function getRequiredScopeForGroup(group) {
290
+ if (ADMIN_SCOPE_GROUPS.includes(group) &&
291
+ !WRITE_SCOPE_GROUPS.includes(group)) {
292
+ return "admin";
293
+ }
294
+ if (WRITE_SCOPE_GROUPS.includes(group) &&
295
+ !READ_SCOPE_GROUPS.includes(group)) {
296
+ return "write";
297
+ }
298
+ return "read";
299
+ }
300
+ /**
301
+ * Get the required minimum scope for a tool
302
+ */
303
+ export function getRequiredScopeForTool(toolName) {
304
+ if (ADMIN_TOOLS.has(toolName)) {
305
+ return "admin";
306
+ }
307
+ if (WRITE_TOOLS.has(toolName)) {
308
+ return "write";
309
+ }
310
+ return "read";
311
+ }
312
+ /**
313
+ * Get tool groups accessible with given scopes
314
+ */
315
+ export function getAccessibleToolGroups(scopes) {
316
+ if (hasAdminScope(scopes)) {
317
+ return [...ADMIN_SCOPE_GROUPS];
318
+ }
319
+ if (hasWriteScope(scopes)) {
320
+ return [...WRITE_SCOPE_GROUPS];
321
+ }
322
+ if (hasReadScope(scopes)) {
323
+ return [...READ_SCOPE_GROUPS];
324
+ }
325
+ return [];
326
+ }
327
+ /**
328
+ * Get all tools accessible with given scopes
329
+ */
330
+ export function getAccessibleTools(scopes) {
331
+ const groups = getAccessibleToolGroups(scopes);
332
+ const allTools = [];
333
+ for (const group of groups) {
334
+ const groupTools = TOOL_GROUPS[group] ?? [];
335
+ for (const tool of groupTools) {
336
+ // For read scope, only include read-only tools
337
+ if (hasReadScope(scopes) && !hasWriteScope(scopes)) {
338
+ if (READ_ONLY_TOOLS.has(tool)) {
339
+ allTools.push(tool);
340
+ }
341
+ }
342
+ else {
343
+ allTools.push(tool);
344
+ }
345
+ }
346
+ }
347
+ return [...new Set(allTools)];
348
+ }
349
+ //# sourceMappingURL=scopes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../src/auth/scopes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,257 @@
1
+ /**
2
+ * db-mcp - OAuth Types
3
+ *
4
+ * Type definitions for OAuth 2.0 components including
5
+ * RFC 9728, RFC 8414, and RFC 7591 compliance.
6
+ */
7
+ /**
8
+ * OAuth 2.0 Protected Resource Metadata (RFC 9728)
9
+ *
10
+ * @see https://datatracker.ietf.org/doc/html/rfc9728
11
+ */
12
+ export interface ProtectedResourceMetadata {
13
+ /** Resource identifier (canonical URI) */
14
+ resource: string;
15
+ /** Authorization servers that can issue tokens for this resource */
16
+ authorization_servers?: string[];
17
+ /** JWKS URI for token verification (optional, usually from auth server) */
18
+ jwks_uri?: string;
19
+ /** Scopes supported by this resource */
20
+ scopes_supported?: string[];
21
+ /** Bearer token presentation methods supported */
22
+ bearer_methods_supported?: ("header" | "body" | "query")[];
23
+ /** Resource signing algorithms supported */
24
+ resource_signing_alg_values_supported?: string[];
25
+ /** Resource documentation URL */
26
+ resource_documentation?: string;
27
+ /** Resource policy URI */
28
+ resource_policy_uri?: string;
29
+ /** Resource terms of service URI */
30
+ resource_tos_uri?: string;
31
+ }
32
+ /**
33
+ * OAuth 2.0 Authorization Server Metadata (RFC 8414)
34
+ *
35
+ * @see https://datatracker.ietf.org/doc/html/rfc8414
36
+ */
37
+ export interface AuthorizationServerMetadata {
38
+ /** Authorization server issuer identifier */
39
+ issuer: string;
40
+ /** Authorization endpoint URL */
41
+ authorization_endpoint?: string;
42
+ /** Token endpoint URL */
43
+ token_endpoint: string;
44
+ /** JWKS URI */
45
+ jwks_uri?: string;
46
+ /** Registration endpoint (RFC 7591) */
47
+ registration_endpoint?: string;
48
+ /** Scopes supported */
49
+ scopes_supported?: string[];
50
+ /** Response types supported */
51
+ response_types_supported?: string[];
52
+ /** Response modes supported */
53
+ response_modes_supported?: string[];
54
+ /** Grant types supported */
55
+ grant_types_supported?: string[];
56
+ /** Token endpoint auth methods supported */
57
+ token_endpoint_auth_methods_supported?: string[];
58
+ /** Token endpoint auth signing algorithms */
59
+ token_endpoint_auth_signing_alg_values_supported?: string[];
60
+ /** Service documentation URL */
61
+ service_documentation?: string;
62
+ /** UI locales supported */
63
+ ui_locales_supported?: string[];
64
+ /** OP policy URI */
65
+ op_policy_uri?: string;
66
+ /** OP terms of service URI */
67
+ op_tos_uri?: string;
68
+ /** Revocation endpoint */
69
+ revocation_endpoint?: string;
70
+ /** Revocation endpoint auth methods */
71
+ revocation_endpoint_auth_methods_supported?: string[];
72
+ /** Introspection endpoint */
73
+ introspection_endpoint?: string;
74
+ /** Introspection endpoint auth methods */
75
+ introspection_endpoint_auth_methods_supported?: string[];
76
+ /** Code challenge methods supported (PKCE) */
77
+ code_challenge_methods_supported?: string[];
78
+ }
79
+ /**
80
+ * OAuth 2.0 Dynamic Client Registration Request (RFC 7591)
81
+ *
82
+ * @see https://datatracker.ietf.org/doc/html/rfc7591
83
+ */
84
+ export interface ClientRegistrationRequest {
85
+ /** Redirect URIs */
86
+ redirect_uris?: string[];
87
+ /** Token endpoint auth method */
88
+ token_endpoint_auth_method?: string;
89
+ /** Grant types requested */
90
+ grant_types?: string[];
91
+ /** Response types requested */
92
+ response_types?: string[];
93
+ /** Client name */
94
+ client_name?: string;
95
+ /** Client URI */
96
+ client_uri?: string;
97
+ /** Logo URI */
98
+ logo_uri?: string;
99
+ /** Scopes requested */
100
+ scope?: string;
101
+ /** Contacts */
102
+ contacts?: string[];
103
+ /** Terms of service URI */
104
+ tos_uri?: string;
105
+ /** Policy URI */
106
+ policy_uri?: string;
107
+ /** JWKS URI for client authentication */
108
+ jwks_uri?: string;
109
+ /** JWKS document for client authentication */
110
+ jwks?: JWKSDocument;
111
+ /** Software ID */
112
+ software_id?: string;
113
+ /** Software version */
114
+ software_version?: string;
115
+ /** Software statement (signed JWT) */
116
+ software_statement?: string;
117
+ }
118
+ /**
119
+ * OAuth 2.0 Dynamic Client Registration Response (RFC 7591)
120
+ */
121
+ export interface ClientRegistrationResponse {
122
+ /** Client identifier */
123
+ client_id: string;
124
+ /** Client secret (for confidential clients) */
125
+ client_secret?: string;
126
+ /** Client secret expiration timestamp */
127
+ client_secret_expires_at?: number;
128
+ /** Registration access token */
129
+ registration_access_token?: string;
130
+ /** Registration client URI */
131
+ registration_client_uri?: string;
132
+ /** Client ID issued at timestamp */
133
+ client_id_issued_at?: number;
134
+ /** All other fields from the request */
135
+ [key: string]: unknown;
136
+ }
137
+ /**
138
+ * JSON Web Key (JWK)
139
+ */
140
+ export interface JWK {
141
+ /** Key type (e.g., 'RSA', 'EC') */
142
+ kty: string;
143
+ /** Key use ('sig' for signature, 'enc' for encryption) */
144
+ use?: string;
145
+ /** Key operations */
146
+ key_ops?: string[];
147
+ /** Algorithm */
148
+ alg?: string;
149
+ /** Key ID */
150
+ kid?: string;
151
+ /** X.509 URL */
152
+ x5u?: string;
153
+ /** X.509 certificate chain */
154
+ x5c?: string[];
155
+ /** X.509 certificate SHA-1 thumbprint */
156
+ x5t?: string;
157
+ /** X.509 certificate SHA-256 thumbprint */
158
+ "x5t#S256"?: string;
159
+ /** RSA modulus */
160
+ n?: string;
161
+ /** RSA public exponent */
162
+ e?: string;
163
+ /** EC curve */
164
+ crv?: string;
165
+ /** EC x coordinate */
166
+ x?: string;
167
+ /** EC y coordinate */
168
+ y?: string;
169
+ }
170
+ /**
171
+ * JSON Web Key Set (JWKS)
172
+ */
173
+ export interface JWKSDocument {
174
+ /** Array of JWK keys */
175
+ keys: JWK[];
176
+ }
177
+ /**
178
+ * Result of token validation
179
+ */
180
+ export interface TokenValidationResult {
181
+ /** Whether the token is valid */
182
+ valid: boolean;
183
+ /** Validated claims (if valid) */
184
+ claims?: TokenClaims;
185
+ /** Error message (if invalid) */
186
+ error?: string;
187
+ /** Error code (if invalid) */
188
+ errorCode?: string;
189
+ }
190
+ /**
191
+ * Validated token claims
192
+ * Extended from the base TokenClaims in types/index.ts
193
+ */
194
+ export interface TokenClaims {
195
+ /** Subject (user ID) */
196
+ sub: string;
197
+ /** Granted scopes (parsed from space-delimited string) */
198
+ scopes: string[];
199
+ /** Token expiration time (Unix timestamp) */
200
+ exp: number;
201
+ /** Token issued at time (Unix timestamp) */
202
+ iat: number;
203
+ /** Token issuer */
204
+ iss?: string | undefined;
205
+ /** Token audience */
206
+ aud?: string | string[] | undefined;
207
+ /** Not before time (Unix timestamp) */
208
+ nbf?: number | undefined;
209
+ /** JWT ID */
210
+ jti?: string | undefined;
211
+ /** Client ID */
212
+ client_id?: string | undefined;
213
+ /** Additional claims */
214
+ [key: string]: unknown;
215
+ }
216
+ /**
217
+ * Resource server configuration
218
+ */
219
+ export interface ResourceServerConfig {
220
+ /** Resource identifier (canonical server URI) */
221
+ resource: string;
222
+ /** Authorization servers that can issue tokens */
223
+ authorizationServers: string[];
224
+ /** Scopes supported by this resource */
225
+ scopesSupported: string[];
226
+ /** Bearer token methods accepted (default: ['header']) */
227
+ bearerMethodsSupported?: ("header" | "body" | "query")[];
228
+ }
229
+ /**
230
+ * Token validator configuration
231
+ */
232
+ export interface TokenValidatorConfig {
233
+ /** JWKS URI for key discovery */
234
+ jwksUri: string;
235
+ /** Expected issuer */
236
+ issuer: string;
237
+ /** Expected audience */
238
+ audience: string;
239
+ /** Clock tolerance in seconds (default: 60) */
240
+ clockTolerance?: number | undefined;
241
+ /** JWKS cache TTL in seconds (default: 3600) */
242
+ jwksCacheTtl?: number | undefined;
243
+ /** Supported algorithms (default: ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512']) */
244
+ algorithms?: string[] | undefined;
245
+ }
246
+ /**
247
+ * Authorization server discovery configuration
248
+ */
249
+ export interface AuthServerDiscoveryConfig {
250
+ /** Authorization server URL (issuer) */
251
+ authServerUrl: string;
252
+ /** Cache TTL in seconds (default: 3600) */
253
+ cacheTtl?: number | undefined;
254
+ /** Request timeout in milliseconds (default: 5000) */
255
+ timeout?: number | undefined;
256
+ }
257
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * db-mcp - OAuth Types
3
+ *
4
+ * Type definitions for OAuth 2.0 components including
5
+ * RFC 9728, RFC 8414, and RFC 7591 compliance.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * db-mcp - Command Line Interface
4
+ *
5
+ * Entry point for running the db-mcp server from the command line.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG"}