mcp-dbutils 0.5.0__py3-none-any.whl → 0.6.0__py3-none-any.whl

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.
mcp_dbutils/base.py CHANGED
@@ -220,29 +220,55 @@ class DatabaseServer:
220
220
  },
221
221
  "required": ["database", "sql"]
222
222
  }
223
+ ),
224
+ types.Tool(
225
+ name="list_tables",
226
+ description="List all available tables in the specified database",
227
+ inputSchema={
228
+ "type": "object",
229
+ "properties": {
230
+ "database": {
231
+ "type": "string",
232
+ "description": "Database configuration name"
233
+ }
234
+ },
235
+ "required": ["database"]
236
+ }
223
237
  )
224
238
  ]
225
239
 
226
240
  @self.server.call_tool()
227
241
  async def handle_call_tool(name: str, arguments: dict) -> list[types.TextContent]:
228
- if name != "query":
229
- raise ConfigurationError(f"Unknown tool: {name}")
230
-
231
242
  if "database" not in arguments:
232
243
  raise ConfigurationError("Database configuration name must be specified")
233
244
 
234
- sql = arguments.get("sql", "").strip()
235
- if not sql:
236
- raise ConfigurationError("SQL query cannot be empty")
237
-
238
- # Only allow SELECT statements
239
- if not sql.lower().startswith("select"):
240
- raise ConfigurationError("Only SELECT queries are supported for security reasons")
241
-
242
245
  database = arguments["database"]
243
- async with self.get_handler(database) as handler:
244
- result = await handler.execute_query(sql)
245
- return [types.TextContent(type="text", text=result)]
246
+
247
+ if name == "list_tables":
248
+ async with self.get_handler(database) as handler:
249
+ tables = await handler.get_tables()
250
+ formatted_tables = "\n".join([
251
+ f"Table: {table.name}\n" +
252
+ f"URI: {table.uri}\n" +
253
+ (f"Description: {table.description}\n" if table.description else "") +
254
+ "---"
255
+ for table in tables
256
+ ])
257
+ return [types.TextContent(type="text", text=formatted_tables)]
258
+ elif name == "query":
259
+ sql = arguments.get("sql", "").strip()
260
+ if not sql:
261
+ raise ConfigurationError("SQL query cannot be empty")
262
+
263
+ # Only allow SELECT statements
264
+ if not sql.lower().startswith("select"):
265
+ raise ConfigurationError("Only SELECT queries are supported for security reasons")
266
+
267
+ async with self.get_handler(database) as handler:
268
+ result = await handler.execute_query(sql)
269
+ return [types.TextContent(type="text", text=result)]
270
+ else:
271
+ raise ConfigurationError(f"Unknown tool: {name}")
246
272
 
247
273
  async def run(self):
248
274
  """Run server"""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-dbutils
3
- Version: 0.5.0
3
+ Version: 0.6.0
4
4
  Summary: MCP Database Utilities Service
5
5
  Author: Dong Hao
6
6
  License-Expression: MIT
@@ -165,16 +165,31 @@ databases:
165
165
  user: postgres # Credentials must be provided separately
166
166
  password: secret # Not included in JDBC URL for security
167
167
 
168
- # SQLite example (when using Docker)
168
+ # SQLite standard configuration
169
169
  my_sqlite:
170
170
  type: sqlite
171
- path: /app/sqlite.db # Mapped path inside container
171
+ path: /app/sqlite.db # Database file path
172
172
  password: optional_password # optional
173
+
174
+ # SQLite with JDBC URL configuration
175
+ my_sqlite_jdbc:
176
+ type: sqlite
177
+ jdbc_url: jdbc:sqlite:/app/data.db?mode=ro&cache=shared # Supports query parameters
178
+ password: optional_password # Provided separately for security
173
179
  ```
174
180
 
175
- The configuration supports two formats for PostgreSQL:
181
+ The configuration supports JDBC URL format for both PostgreSQL and SQLite:
182
+
183
+ PostgreSQL:
176
184
  1. Standard configuration with individual parameters
177
- 2. JDBC URL configuration with separate credentials (recommended for better compatibility)
185
+ 2. JDBC URL configuration with separate credentials
186
+
187
+ SQLite:
188
+ 1. Standard configuration with path parameter
189
+ 2. JDBC URL configuration with query parameters support:
190
+ - mode=ro: Read-only mode
191
+ - cache=shared: Shared cache mode
192
+ - Other SQLite URI parameters
178
193
 
179
194
  ### Debug Mode
180
195
  Set environment variable `MCP_DEBUG=1` to enable debug mode for detailed logging output.
@@ -1,5 +1,5 @@
1
1
  mcp_dbutils/__init__.py,sha256=xcfE1spAaONAoxBYB1ZyDX8tw7nxV1PMqo_RwxLDp0A,1892
2
- mcp_dbutils/base.py,sha256=xdeLOKv9-dbMUzlIbD-BbRVbqAf1a3RjO25aw61vAzY,9691
2
+ mcp_dbutils/base.py,sha256=kKeTKW2BqiSu32VHElfDVBE1ziR9EvFw71AVbYf9Xq0,10919
3
3
  mcp_dbutils/config.py,sha256=EwnPNuQVCBKd5WOXQfROyDTM-YpM_Odp0GhCPRg8YwE,1863
4
4
  mcp_dbutils/log.py,sha256=fibVIwsb1HVU5zriGrDZTMEirKjgIuxuN_B_YTdAJ7I,996
5
5
  mcp_dbutils/stats.py,sha256=2hiKi_M8V4xhVHlH5FS-Df5GuMEpuzif12C8ik06Khs,2538
@@ -11,8 +11,8 @@ mcp_dbutils/sqlite/__init__.py,sha256=QV4th2ywzUmCCa3GHCcBf8blJ_E8OYy0dJ2fSf1TfS
11
11
  mcp_dbutils/sqlite/config.py,sha256=RTHT2Xx--g-osD73CpT8DrCk0VHpHfPil3D6YUzXD-g,4519
12
12
  mcp_dbutils/sqlite/handler.py,sha256=bf_k93rCcJn09zc7tsqrlbiTGUg3FspimfWKxK_JQTs,4970
13
13
  mcp_dbutils/sqlite/server.py,sha256=7Bbq9l7Ca_4dzkAbbdRcXxvHoO_NFLzZHwlhKB0HIJc,7724
14
- mcp_dbutils-0.5.0.dist-info/METADATA,sha256=g3WO-pqGFLsXxu1RcLQg9KjHEjVSG9ncrjqTzcgkm3A,9966
15
- mcp_dbutils-0.5.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
16
- mcp_dbutils-0.5.0.dist-info/entry_points.txt,sha256=XTjt0QmYRgKOJQT6skR9bp1EMUfIrgpHeZJPZ3CJffs,49
17
- mcp_dbutils-0.5.0.dist-info/licenses/LICENSE,sha256=1A_CwpWVlbjrKdVEYO77vYfnXlW7oxcilZ8FpA_BzCI,1065
18
- mcp_dbutils-0.5.0.dist-info/RECORD,,
14
+ mcp_dbutils-0.6.0.dist-info/METADATA,sha256=Dkyfy_4VUB4VO5tl6zKAljcvacBp-irM7xTxVzUjOIo,10390
15
+ mcp_dbutils-0.6.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
16
+ mcp_dbutils-0.6.0.dist-info/entry_points.txt,sha256=XTjt0QmYRgKOJQT6skR9bp1EMUfIrgpHeZJPZ3CJffs,49
17
+ mcp_dbutils-0.6.0.dist-info/licenses/LICENSE,sha256=1A_CwpWVlbjrKdVEYO77vYfnXlW7oxcilZ8FpA_BzCI,1065
18
+ mcp_dbutils-0.6.0.dist-info/RECORD,,