@cmd233/mcp-database-server 1.1.3 → 1.1.5

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.
@@ -192,7 +192,8 @@ export class MysqlAdapter {
192
192
  DATA_TYPE as type,
193
193
  CASE WHEN IS_NULLABLE = 'NO' THEN 1 ELSE 0 END as notnull,
194
194
  CASE WHEN COLUMN_KEY = 'PRI' THEN 1 ELSE 0 END as pk,
195
- COLUMN_DEFAULT as dflt_value
195
+ COLUMN_DEFAULT as dflt_value,
196
+ COLUMN_COMMENT as comment
196
197
  FROM
197
198
  INFORMATION_SCHEMA.COLUMNS
198
199
  WHERE
@@ -145,24 +145,34 @@ export class PostgresqlAdapter {
145
145
  */
146
146
  getDescribeTableQuery(tableName) {
147
147
  return `
148
- SELECT
148
+ SELECT
149
149
  c.column_name as name,
150
150
  c.data_type as type,
151
151
  CASE WHEN c.is_nullable = 'NO' THEN 1 ELSE 0 END as notnull,
152
152
  CASE WHEN pk.constraint_name IS NOT NULL THEN 1 ELSE 0 END as pk,
153
- c.column_default as dflt_value
154
- FROM
153
+ c.column_default as dflt_value,
154
+ pgd.description AS comment
155
+ FROM
155
156
  information_schema.columns c
156
- LEFT JOIN
157
- information_schema.key_column_usage kcu
157
+ LEFT JOIN
158
+ information_schema.key_column_usage kcu
158
159
  ON c.table_name = kcu.table_name AND c.column_name = kcu.column_name
159
- LEFT JOIN
160
- information_schema.table_constraints pk
160
+ LEFT JOIN
161
+ information_schema.table_constraints pk
161
162
  ON kcu.constraint_name = pk.constraint_name AND pk.constraint_type = 'PRIMARY KEY'
162
- WHERE
163
+ LEFT JOIN
164
+ pg_catalog.pg_class pgc
165
+ ON pgc.relname = c.table_name
166
+ LEFT JOIN
167
+ pg_catalog.pg_attribute pga
168
+ ON pga.attrelid = pgc.oid AND pga.attname = c.column_name
169
+ LEFT JOIN
170
+ pg_catalog.pg_description pgd
171
+ ON pgd.objoid = pgc.oid AND pgd.objsubid = pga.attnum
172
+ WHERE
163
173
  c.table_name = '${tableName}'
164
174
  AND c.table_schema = 'public'
165
- ORDER BY
175
+ ORDER BY
166
176
  c.ordinal_position
167
177
  `;
168
178
  }
@@ -129,6 +129,6 @@ export class SqliteAdapter {
129
129
  * @param tableName 表名
130
130
  */
131
131
  getDescribeTableQuery(tableName) {
132
- return `PRAGMA table_info(${tableName})`;
132
+ return `SELECT name, type, notnull, pk, dflt_value, NULL as comment FROM pragma_table_info('${tableName}')`;
133
133
  }
134
134
  }
@@ -255,23 +255,34 @@ export class SqlServerAdapter {
255
255
  * @param tableName 表名
256
256
  */
257
257
  getDescribeTableQuery(tableName) {
258
- return `
259
- SELECT
260
- c.COLUMN_NAME as name,
261
- c.DATA_TYPE as type,
262
- CASE WHEN c.IS_NULLABLE = 'NO' THEN 1 ELSE 0 END as notnull,
263
- CASE WHEN pk.CONSTRAINT_TYPE = 'PRIMARY KEY' THEN 1 ELSE 0 END as pk,
264
- c.COLUMN_DEFAULT as dflt_value
265
- FROM
266
- INFORMATION_SCHEMA.COLUMNS c
267
- LEFT JOIN
268
- INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu ON c.TABLE_NAME = kcu.TABLE_NAME AND c.COLUMN_NAME = kcu.COLUMN_NAME
269
- LEFT JOIN
270
- INFORMATION_SCHEMA.TABLE_CONSTRAINTS pk ON kcu.CONSTRAINT_NAME = pk.CONSTRAINT_NAME AND pk.CONSTRAINT_TYPE = 'PRIMARY KEY'
271
- WHERE
272
- c.TABLE_NAME = '${tableName}'
273
- ORDER BY
274
- c.ORDINAL_POSITION
258
+ return `
259
+ SELECT
260
+ c.COLUMN_NAME as name,
261
+ c.DATA_TYPE as type,
262
+ CASE WHEN c.IS_NULLABLE = 'NO' THEN 1 ELSE 0 END as notnull,
263
+ CASE WHEN pk.CONSTRAINT_TYPE = 'PRIMARY KEY' THEN 1 ELSE 0 END as pk,
264
+ c.COLUMN_DEFAULT as dflt_value,
265
+ ep.value AS comment
266
+ FROM
267
+ INFORMATION_SCHEMA.COLUMNS c
268
+ LEFT JOIN
269
+ INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu ON c.TABLE_NAME = kcu.TABLE_NAME AND c.COLUMN_NAME = kcu.COLUMN_NAME
270
+ LEFT JOIN
271
+ INFORMATION_SCHEMA.TABLE_CONSTRAINTS pk ON kcu.CONSTRAINT_NAME = pk.CONSTRAINT_NAME AND pk.CONSTRAINT_TYPE = 'PRIMARY KEY'
272
+ LEFT JOIN
273
+ sys.extended_properties ep
274
+ ON ep.major_id = (
275
+ SELECT t.object_id
276
+ FROM sys.tables t
277
+ INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
278
+ WHERE t.name = '${tableName}' AND s.name = c.TABLE_SCHEMA
279
+ )
280
+ AND ep.minor_id = c.ORDINAL_POSITION
281
+ AND ep.name = 'MS_Description'
282
+ WHERE
283
+ c.TABLE_NAME = '${tableName}'
284
+ ORDER BY
285
+ c.ORDINAL_POSITION
275
286
  `;
276
287
  }
277
288
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cmd233/mcp-database-server",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "description": "MCP server for interacting with SQLite, SQL Server, PostgreSQL and MySQL databases (Fixed nullable field detection)",
5
5
  "license": "MIT",
6
6
  "author": "cmd233",