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.
- package/LICENSE +21 -0
- package/README.md +860 -0
- package/dist/adapters/DatabaseAdapter.d.ts +141 -0
- package/dist/adapters/DatabaseAdapter.d.ts.map +1 -0
- package/dist/adapters/DatabaseAdapter.js +131 -0
- package/dist/adapters/DatabaseAdapter.js.map +1 -0
- package/dist/adapters/sqlite/SchemaManager.d.ts +58 -0
- package/dist/adapters/sqlite/SchemaManager.d.ts.map +1 -0
- package/dist/adapters/sqlite/SchemaManager.js +187 -0
- package/dist/adapters/sqlite/SchemaManager.js.map +1 -0
- package/dist/adapters/sqlite/SqliteAdapter.d.ts +161 -0
- package/dist/adapters/sqlite/SqliteAdapter.d.ts.map +1 -0
- package/dist/adapters/sqlite/SqliteAdapter.js +741 -0
- package/dist/adapters/sqlite/SqliteAdapter.js.map +1 -0
- package/dist/adapters/sqlite/index.d.ts +9 -0
- package/dist/adapters/sqlite/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/index.js +8 -0
- package/dist/adapters/sqlite/index.js.map +1 -0
- package/dist/adapters/sqlite/json-utils.d.ts +100 -0
- package/dist/adapters/sqlite/json-utils.d.ts.map +1 -0
- package/dist/adapters/sqlite/json-utils.js +274 -0
- package/dist/adapters/sqlite/json-utils.js.map +1 -0
- package/dist/adapters/sqlite/output-schemas.d.ts +1187 -0
- package/dist/adapters/sqlite/output-schemas.d.ts.map +1 -0
- package/dist/adapters/sqlite/output-schemas.js +1337 -0
- package/dist/adapters/sqlite/output-schemas.js.map +1 -0
- package/dist/adapters/sqlite/prompts.d.ts +13 -0
- package/dist/adapters/sqlite/prompts.d.ts.map +1 -0
- package/dist/adapters/sqlite/prompts.js +605 -0
- package/dist/adapters/sqlite/prompts.js.map +1 -0
- package/dist/adapters/sqlite/resources.d.ts +13 -0
- package/dist/adapters/sqlite/resources.d.ts.map +1 -0
- package/dist/adapters/sqlite/resources.js +251 -0
- package/dist/adapters/sqlite/resources.js.map +1 -0
- package/dist/adapters/sqlite/tools/admin.d.ts +14 -0
- package/dist/adapters/sqlite/tools/admin.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin.js +788 -0
- package/dist/adapters/sqlite/tools/admin.js.map +1 -0
- package/dist/adapters/sqlite/tools/core.d.ts +25 -0
- package/dist/adapters/sqlite/tools/core.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/core.js +359 -0
- package/dist/adapters/sqlite/tools/core.js.map +1 -0
- package/dist/adapters/sqlite/tools/fts.d.ts +13 -0
- package/dist/adapters/sqlite/tools/fts.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/fts.js +347 -0
- package/dist/adapters/sqlite/tools/fts.js.map +1 -0
- package/dist/adapters/sqlite/tools/geo.d.ts +14 -0
- package/dist/adapters/sqlite/tools/geo.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/geo.js +252 -0
- package/dist/adapters/sqlite/tools/geo.js.map +1 -0
- package/dist/adapters/sqlite/tools/index.d.ts +30 -0
- package/dist/adapters/sqlite/tools/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/index.js +61 -0
- package/dist/adapters/sqlite/tools/index.js.map +1 -0
- package/dist/adapters/sqlite/tools/json-helpers.d.ts +14 -0
- package/dist/adapters/sqlite/tools/json-helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-helpers.js +477 -0
- package/dist/adapters/sqlite/tools/json-helpers.js.map +1 -0
- package/dist/adapters/sqlite/tools/json-operations.d.ts +14 -0
- package/dist/adapters/sqlite/tools/json-operations.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-operations.js +839 -0
- package/dist/adapters/sqlite/tools/json-operations.js.map +1 -0
- package/dist/adapters/sqlite/tools/stats.d.ts +15 -0
- package/dist/adapters/sqlite/tools/stats.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/stats.js +1219 -0
- package/dist/adapters/sqlite/tools/stats.js.map +1 -0
- package/dist/adapters/sqlite/tools/text.d.ts +14 -0
- package/dist/adapters/sqlite/tools/text.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/text.js +1141 -0
- package/dist/adapters/sqlite/tools/text.js.map +1 -0
- package/dist/adapters/sqlite/tools/vector.d.ts +14 -0
- package/dist/adapters/sqlite/tools/vector.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/vector.js +613 -0
- package/dist/adapters/sqlite/tools/vector.js.map +1 -0
- package/dist/adapters/sqlite/tools/virtual.d.ts +13 -0
- package/dist/adapters/sqlite/tools/virtual.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/virtual.js +930 -0
- package/dist/adapters/sqlite/tools/virtual.js.map +1 -0
- package/dist/adapters/sqlite/types.d.ts +207 -0
- package/dist/adapters/sqlite/types.d.ts.map +1 -0
- package/dist/adapters/sqlite/types.js +186 -0
- package/dist/adapters/sqlite/types.js.map +1 -0
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts +163 -0
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.js +748 -0
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.js.map +1 -0
- package/dist/adapters/sqlite-native/index.d.ts +11 -0
- package/dist/adapters/sqlite-native/index.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/index.js +11 -0
- package/dist/adapters/sqlite-native/index.js.map +1 -0
- package/dist/adapters/sqlite-native/tools/spatialite.d.ts +19 -0
- package/dist/adapters/sqlite-native/tools/spatialite.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/spatialite.js +628 -0
- package/dist/adapters/sqlite-native/tools/spatialite.js.map +1 -0
- package/dist/adapters/sqlite-native/tools/transactions.d.ts +12 -0
- package/dist/adapters/sqlite-native/tools/transactions.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/transactions.js +255 -0
- package/dist/adapters/sqlite-native/tools/transactions.js.map +1 -0
- package/dist/adapters/sqlite-native/tools/window.d.ts +12 -0
- package/dist/adapters/sqlite-native/tools/window.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/window.js +370 -0
- package/dist/adapters/sqlite-native/tools/window.js.map +1 -0
- package/dist/auth/AuthorizationServerDiscovery.d.ts +90 -0
- package/dist/auth/AuthorizationServerDiscovery.d.ts.map +1 -0
- package/dist/auth/AuthorizationServerDiscovery.js +204 -0
- package/dist/auth/AuthorizationServerDiscovery.js.map +1 -0
- package/dist/auth/OAuthResourceServer.d.ts +65 -0
- package/dist/auth/OAuthResourceServer.d.ts.map +1 -0
- package/dist/auth/OAuthResourceServer.js +121 -0
- package/dist/auth/OAuthResourceServer.js.map +1 -0
- package/dist/auth/TokenValidator.d.ts +60 -0
- package/dist/auth/TokenValidator.d.ts.map +1 -0
- package/dist/auth/TokenValidator.js +235 -0
- package/dist/auth/TokenValidator.js.map +1 -0
- package/dist/auth/errors.d.ts +74 -0
- package/dist/auth/errors.d.ts.map +1 -0
- package/dist/auth/errors.js +133 -0
- package/dist/auth/errors.js.map +1 -0
- package/dist/auth/index.d.ts +13 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +15 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/middleware.d.ts +81 -0
- package/dist/auth/middleware.d.ts.map +1 -0
- package/dist/auth/middleware.js +291 -0
- package/dist/auth/middleware.js.map +1 -0
- package/dist/auth/scopes.d.ts +136 -0
- package/dist/auth/scopes.d.ts.map +1 -0
- package/dist/auth/scopes.js +349 -0
- package/dist/auth/scopes.js.map +1 -0
- package/dist/auth/types.d.ts +257 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +8 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +236 -0
- package/dist/cli.js.map +1 -0
- package/dist/constants/ServerInstructions.d.ts +45 -0
- package/dist/constants/ServerInstructions.d.ts.map +1 -0
- package/dist/constants/ServerInstructions.js +356 -0
- package/dist/constants/ServerInstructions.js.map +1 -0
- package/dist/filtering/ToolConstants.d.ts +34 -0
- package/dist/filtering/ToolConstants.d.ts.map +1 -0
- package/dist/filtering/ToolConstants.js +174 -0
- package/dist/filtering/ToolConstants.js.map +1 -0
- package/dist/filtering/ToolFilter.d.ts +82 -0
- package/dist/filtering/ToolFilter.d.ts.map +1 -0
- package/dist/filtering/ToolFilter.js +296 -0
- package/dist/filtering/ToolFilter.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/server/McpServer.d.ts +61 -0
- package/dist/server/McpServer.d.ts.map +1 -0
- package/dist/server/McpServer.js +270 -0
- package/dist/server/McpServer.js.map +1 -0
- package/dist/transports/http.d.ts +134 -0
- package/dist/transports/http.d.ts.map +1 -0
- package/dist/transports/http.js +516 -0
- package/dist/transports/http.js.map +1 -0
- package/dist/transports/index.d.ts +5 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/transports/index.js +5 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/types/index.d.ts +380 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +68 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/annotations.d.ts +44 -0
- package/dist/utils/annotations.d.ts.map +1 -0
- package/dist/utils/annotations.js +77 -0
- package/dist/utils/annotations.js.map +1 -0
- package/dist/utils/errors.d.ts +155 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +329 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/identifiers.d.ts +121 -0
- package/dist/utils/identifiers.d.ts.map +1 -0
- package/dist/utils/identifiers.js +319 -0
- package/dist/utils/identifiers.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/insightsManager.d.ts +39 -0
- package/dist/utils/insightsManager.d.ts.map +1 -0
- package/dist/utils/insightsManager.js +63 -0
- package/dist/utils/insightsManager.js.map +1 -0
- package/dist/utils/logger.d.ts +189 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +394 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/progress-utils.d.ts +54 -0
- package/dist/utils/progress-utils.d.ts.map +1 -0
- package/dist/utils/progress-utils.js +74 -0
- package/dist/utils/progress-utils.js.map +1 -0
- package/dist/utils/resourceAnnotations.d.ts +36 -0
- package/dist/utils/resourceAnnotations.d.ts.map +1 -0
- package/dist/utils/resourceAnnotations.js +57 -0
- package/dist/utils/resourceAnnotations.js.map +1 -0
- package/dist/utils/where-clause.d.ts +41 -0
- package/dist/utils/where-clause.d.ts.map +1 -0
- package/dist/utils/where-clause.js +116 -0
- package/dist/utils/where-clause.js.map +1 -0
- package/package.json +83 -0
- package/server.json +53 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* db-mcp - WHERE Clause Validation
|
|
3
|
+
*
|
|
4
|
+
* Validates WHERE clause parameters to prevent SQL injection.
|
|
5
|
+
* Uses a blocklist approach to reject dangerous patterns while
|
|
6
|
+
* allowing legitimate complex conditions.
|
|
7
|
+
*
|
|
8
|
+
* Adapted from postgres-mcp reference implementation for SQLite.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Error thrown when an unsafe WHERE clause is detected
|
|
12
|
+
*/
|
|
13
|
+
export declare class UnsafeWhereClauseError extends Error {
|
|
14
|
+
constructor(reason: string);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Validates a WHERE clause for dangerous SQL patterns.
|
|
18
|
+
*
|
|
19
|
+
* This function uses a blocklist approach to detect and reject
|
|
20
|
+
* common SQL injection patterns. It allows legitimate complex
|
|
21
|
+
* conditions while blocking obvious attack vectors.
|
|
22
|
+
*
|
|
23
|
+
* @param where - The WHERE clause to validate
|
|
24
|
+
* @throws UnsafeWhereClauseError if a dangerous pattern is detected
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* validateWhereClause("price > 10"); // OK
|
|
28
|
+
* validateWhereClause("status = 'active' AND id < 100"); // OK
|
|
29
|
+
* validateWhereClause("1=1; DROP TABLE users;--"); // Throws
|
|
30
|
+
* validateWhereClause("1=1 UNION SELECT * FROM sqlite_master"); // Throws
|
|
31
|
+
*/
|
|
32
|
+
export declare function validateWhereClause(where: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* Validates and returns a safe WHERE clause.
|
|
35
|
+
*
|
|
36
|
+
* @param where - The WHERE clause to sanitize
|
|
37
|
+
* @returns The validated WHERE clause (unchanged if safe)
|
|
38
|
+
* @throws UnsafeWhereClauseError if a dangerous pattern is detected
|
|
39
|
+
*/
|
|
40
|
+
export declare function sanitizeWhereClause(where: string): string;
|
|
41
|
+
//# sourceMappingURL=where-clause.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"where-clause.d.ts","sourceRoot":"","sources":["../../src/utils/where-clause.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,MAAM,EAAE,MAAM;CAI3B;AAgED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAUvD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGzD"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* db-mcp - WHERE Clause Validation
|
|
3
|
+
*
|
|
4
|
+
* Validates WHERE clause parameters to prevent SQL injection.
|
|
5
|
+
* Uses a blocklist approach to reject dangerous patterns while
|
|
6
|
+
* allowing legitimate complex conditions.
|
|
7
|
+
*
|
|
8
|
+
* Adapted from postgres-mcp reference implementation for SQLite.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Error thrown when an unsafe WHERE clause is detected
|
|
12
|
+
*/
|
|
13
|
+
export class UnsafeWhereClauseError extends Error {
|
|
14
|
+
constructor(reason) {
|
|
15
|
+
super(`Unsafe WHERE clause: ${reason}`);
|
|
16
|
+
this.name = "UnsafeWhereClauseError";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Dangerous SQL patterns that should never appear in WHERE clauses.
|
|
21
|
+
* These patterns indicate SQL injection attempts.
|
|
22
|
+
*/
|
|
23
|
+
const DANGEROUS_PATTERNS = [
|
|
24
|
+
// Statement terminators and new statements
|
|
25
|
+
{
|
|
26
|
+
pattern: /;\s*(DROP|DELETE|TRUNCATE|INSERT|UPDATE|CREATE|ALTER|ATTACH|DETACH)/i,
|
|
27
|
+
reason: "contains statement terminator followed by dangerous keyword",
|
|
28
|
+
},
|
|
29
|
+
// Trailing semicolons (potential statement injection)
|
|
30
|
+
{
|
|
31
|
+
pattern: /;\s*$/,
|
|
32
|
+
reason: "contains trailing semicolon",
|
|
33
|
+
},
|
|
34
|
+
// SQL comments (can be used to comment out security checks)
|
|
35
|
+
{
|
|
36
|
+
pattern: /--/,
|
|
37
|
+
reason: "contains SQL line comment",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
pattern: /\/\*/,
|
|
41
|
+
reason: "contains SQL block comment",
|
|
42
|
+
},
|
|
43
|
+
// UNION injection (data exfiltration)
|
|
44
|
+
{
|
|
45
|
+
pattern: /\bUNION\s+(ALL\s+)?SELECT\b/i,
|
|
46
|
+
reason: "contains UNION SELECT",
|
|
47
|
+
},
|
|
48
|
+
// SQLite-specific: Extension loading (code execution)
|
|
49
|
+
{
|
|
50
|
+
pattern: /\bload_extension\s*\(/i,
|
|
51
|
+
reason: "contains load_extension (code execution)",
|
|
52
|
+
},
|
|
53
|
+
// SQLite-specific: ATTACH database (file system access)
|
|
54
|
+
{
|
|
55
|
+
pattern: /\bATTACH\s+(DATABASE\s+)?['"`]/i,
|
|
56
|
+
reason: "contains ATTACH DATABASE (file system access)",
|
|
57
|
+
},
|
|
58
|
+
// SQLite-specific: Pragma manipulation
|
|
59
|
+
{
|
|
60
|
+
pattern: /\bPRAGMA\s+/i,
|
|
61
|
+
reason: "contains PRAGMA statement",
|
|
62
|
+
},
|
|
63
|
+
// SQLite-specific: writefile/readfile (if using fileio extension)
|
|
64
|
+
{
|
|
65
|
+
pattern: /\b(writefile|readfile)\s*\(/i,
|
|
66
|
+
reason: "contains file I/O function",
|
|
67
|
+
},
|
|
68
|
+
// SQLite-specific: fts3_tokenizer (potential code execution)
|
|
69
|
+
{
|
|
70
|
+
pattern: /\bfts3_tokenizer\s*\(/i,
|
|
71
|
+
reason: "contains FTS tokenizer function",
|
|
72
|
+
},
|
|
73
|
+
// Generic: Hexadecimal string injection
|
|
74
|
+
{
|
|
75
|
+
pattern: /\bX'[0-9A-Fa-f]+'/,
|
|
76
|
+
reason: "contains hex string literal (potential binary injection)",
|
|
77
|
+
},
|
|
78
|
+
];
|
|
79
|
+
/**
|
|
80
|
+
* Validates a WHERE clause for dangerous SQL patterns.
|
|
81
|
+
*
|
|
82
|
+
* This function uses a blocklist approach to detect and reject
|
|
83
|
+
* common SQL injection patterns. It allows legitimate complex
|
|
84
|
+
* conditions while blocking obvious attack vectors.
|
|
85
|
+
*
|
|
86
|
+
* @param where - The WHERE clause to validate
|
|
87
|
+
* @throws UnsafeWhereClauseError if a dangerous pattern is detected
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* validateWhereClause("price > 10"); // OK
|
|
91
|
+
* validateWhereClause("status = 'active' AND id < 100"); // OK
|
|
92
|
+
* validateWhereClause("1=1; DROP TABLE users;--"); // Throws
|
|
93
|
+
* validateWhereClause("1=1 UNION SELECT * FROM sqlite_master"); // Throws
|
|
94
|
+
*/
|
|
95
|
+
export function validateWhereClause(where) {
|
|
96
|
+
if (!where || typeof where !== "string") {
|
|
97
|
+
throw new UnsafeWhereClauseError("WHERE clause must be a non-empty string");
|
|
98
|
+
}
|
|
99
|
+
for (const { pattern, reason } of DANGEROUS_PATTERNS) {
|
|
100
|
+
if (pattern.test(where)) {
|
|
101
|
+
throw new UnsafeWhereClauseError(reason);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Validates and returns a safe WHERE clause.
|
|
107
|
+
*
|
|
108
|
+
* @param where - The WHERE clause to sanitize
|
|
109
|
+
* @returns The validated WHERE clause (unchanged if safe)
|
|
110
|
+
* @throws UnsafeWhereClauseError if a dangerous pattern is detected
|
|
111
|
+
*/
|
|
112
|
+
export function sanitizeWhereClause(where) {
|
|
113
|
+
validateWhereClause(where);
|
|
114
|
+
return where;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=where-clause.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"where-clause.js","sourceRoot":"","sources":["../../src/utils/where-clause.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,MAAc;QACxB,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,kBAAkB,GAA0C;IAChE,2CAA2C;IAC3C;QACE,OAAO,EACL,sEAAsE;QACxE,MAAM,EAAE,6DAA6D;KACtE;IACD,sDAAsD;IACtD;QACE,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,6BAA6B;KACtC;IACD,4DAA4D;IAC5D;QACE,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,2BAA2B;KACpC;IACD;QACE,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,4BAA4B;KACrC;IACD,sCAAsC;IACtC;QACE,OAAO,EAAE,8BAA8B;QACvC,MAAM,EAAE,uBAAuB;KAChC;IACD,sDAAsD;IACtD;QACE,OAAO,EAAE,wBAAwB;QACjC,MAAM,EAAE,0CAA0C;KACnD;IACD,wDAAwD;IACxD;QACE,OAAO,EAAE,iCAAiC;QAC1C,MAAM,EAAE,+CAA+C;KACxD;IACD,uCAAuC;IACvC;QACE,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,2BAA2B;KACpC;IACD,kEAAkE;IAClE;QACE,OAAO,EAAE,8BAA8B;QACvC,MAAM,EAAE,4BAA4B;KACrC;IACD,6DAA6D;IAC7D;QACE,OAAO,EAAE,wBAAwB;QACjC,MAAM,EAAE,iCAAiC;KAC1C;IACD,wCAAwC;IACxC;QACE,OAAO,EAAE,mBAAmB;QAC5B,MAAM,EAAE,0DAA0D;KACnE;CACF,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,sBAAsB,CAAC,yCAAyC,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,kBAAkB,EAAE,CAAC;QACrD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "db-mcp",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "SQLite MCP server with OAuth 2.1 authentication, HTTP/SSE transport, and smart tool filtering",
|
|
5
|
+
"mcpName": "io.github.neverinfamous/db-mcp",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"bin": {
|
|
10
|
+
"db-mcp": "./dist/cli.js"
|
|
11
|
+
},
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"dev": "tsx watch src/index.ts",
|
|
15
|
+
"start": "node dist/index.js",
|
|
16
|
+
"start:stdio": "node dist/cli.js --transport=stdio",
|
|
17
|
+
"start:http": "node dist/cli.js --transport=http",
|
|
18
|
+
"lint": "eslint .",
|
|
19
|
+
"lint:fix": "eslint . --fix",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"check": "npm run lint && npm run typecheck",
|
|
22
|
+
"test": "vitest run",
|
|
23
|
+
"test:watch": "vitest",
|
|
24
|
+
"test:coverage": "vitest run --coverage",
|
|
25
|
+
"clean": "rimraf dist",
|
|
26
|
+
"prepublishOnly": "npm run build"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"mcp",
|
|
30
|
+
"model-context-protocol",
|
|
31
|
+
"database",
|
|
32
|
+
"sqlite",
|
|
33
|
+
"oauth",
|
|
34
|
+
"ai",
|
|
35
|
+
"llm"
|
|
36
|
+
],
|
|
37
|
+
"author": "neverinfamous",
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"repository": {
|
|
40
|
+
"type": "git",
|
|
41
|
+
"url": "git+https://github.com/neverinfamous/db-mcp.git"
|
|
42
|
+
},
|
|
43
|
+
"bugs": {
|
|
44
|
+
"url": "https://github.com/neverinfamous/db-mcp/issues"
|
|
45
|
+
},
|
|
46
|
+
"homepage": "https://github.com/neverinfamous/db-mcp#readme",
|
|
47
|
+
"engines": {
|
|
48
|
+
"node": ">=24.0.0"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@modelcontextprotocol/sdk": "^1.25.2",
|
|
52
|
+
"cors": "^2.8.5",
|
|
53
|
+
"dotenv": "^17.2.3",
|
|
54
|
+
"express": "^5.2.1",
|
|
55
|
+
"jose": "^6.1.3",
|
|
56
|
+
"pg": "^8.18.0",
|
|
57
|
+
"sql.js": "^1.13.0",
|
|
58
|
+
"zod": "^3.25.0 || ^4.0.0"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@eslint/js": "^9.39.2",
|
|
62
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
63
|
+
"@types/cors": "^2.8.19",
|
|
64
|
+
"@types/express": "^5.0.6",
|
|
65
|
+
"@types/node": "^25.2.0",
|
|
66
|
+
"@types/pg": "^8.16.0",
|
|
67
|
+
"@types/sql.js": "^1.4.9",
|
|
68
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
69
|
+
"eslint": "^9.39.2",
|
|
70
|
+
"globals": "^17.3.0",
|
|
71
|
+
"rimraf": "^6.1.2",
|
|
72
|
+
"tsx": "^4.21.0",
|
|
73
|
+
"typescript": "^5.9.3",
|
|
74
|
+
"typescript-eslint": "^8.54.0",
|
|
75
|
+
"vitest": "^4.0.17"
|
|
76
|
+
},
|
|
77
|
+
"peerDependencies": {
|
|
78
|
+
"zod": "^3.25.0 || ^4.0.0"
|
|
79
|
+
},
|
|
80
|
+
"optionalDependencies": {
|
|
81
|
+
"better-sqlite3": "^12.6.2"
|
|
82
|
+
}
|
|
83
|
+
}
|
package/server.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
+
"name": "io.github.neverinfamous/db-mcp",
|
|
4
|
+
"title": "db-mcp (SQLite MCP Server)",
|
|
5
|
+
"description": "SQLite MCP server with OAuth 2.1, HTTP/SSE, 122 tools, and smart tool filtering",
|
|
6
|
+
"version": "1.0.1",
|
|
7
|
+
"packages": [
|
|
8
|
+
{
|
|
9
|
+
"registryType": "npm",
|
|
10
|
+
"identifier": "db-mcp",
|
|
11
|
+
"version": "1.0.1",
|
|
12
|
+
"transport": {
|
|
13
|
+
"type": "stdio"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"registryType": "oci",
|
|
18
|
+
"identifier": "docker.io/writenotenow/db-mcp:v1.0.1",
|
|
19
|
+
"version": "1.0.1",
|
|
20
|
+
"transport": {
|
|
21
|
+
"type": "stdio"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"keywords": [
|
|
26
|
+
"mcp",
|
|
27
|
+
"model-context-protocol",
|
|
28
|
+
"database",
|
|
29
|
+
"sqlite",
|
|
30
|
+
"sql",
|
|
31
|
+
"oauth",
|
|
32
|
+
"ai",
|
|
33
|
+
"llm",
|
|
34
|
+
"developer-tools",
|
|
35
|
+
"json",
|
|
36
|
+
"fts5",
|
|
37
|
+
"vector-search",
|
|
38
|
+
"geospatial",
|
|
39
|
+
"spatialite",
|
|
40
|
+
"statistical-analysis"
|
|
41
|
+
],
|
|
42
|
+
"author": {
|
|
43
|
+
"name": "Chris LeRoux",
|
|
44
|
+
"email": "writenotenow@gmail.com"
|
|
45
|
+
},
|
|
46
|
+
"homepage": "https://github.com/neverinfamous/db-mcp",
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "https://github.com/neverinfamous/db-mcp.git",
|
|
50
|
+
"source": "github"
|
|
51
|
+
},
|
|
52
|
+
"license": "MIT"
|
|
53
|
+
}
|