@ibm/ibmi-mcp-server 0.3.2 → 0.4.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 (139) hide show
  1. package/README.md +36 -24
  2. package/dist/cli/commands/columns.d.ts +7 -0
  3. package/dist/cli/commands/columns.d.ts.map +1 -0
  4. package/dist/cli/commands/columns.js +29 -0
  5. package/dist/cli/commands/columns.js.map +1 -0
  6. package/dist/cli/commands/completion.d.ts +10 -0
  7. package/dist/cli/commands/completion.d.ts.map +1 -0
  8. package/dist/cli/commands/completion.js +225 -0
  9. package/dist/cli/commands/completion.js.map +1 -0
  10. package/dist/cli/commands/related.d.ts +7 -0
  11. package/dist/cli/commands/related.d.ts.map +1 -0
  12. package/dist/cli/commands/related.js +32 -0
  13. package/dist/cli/commands/related.js.map +1 -0
  14. package/dist/cli/commands/schemas.d.ts +7 -0
  15. package/dist/cli/commands/schemas.d.ts.map +1 -0
  16. package/dist/cli/commands/schemas.js +49 -0
  17. package/dist/cli/commands/schemas.js.map +1 -0
  18. package/dist/cli/commands/sql.d.ts +8 -0
  19. package/dist/cli/commands/sql.d.ts.map +1 -0
  20. package/dist/cli/commands/sql.js +106 -0
  21. package/dist/cli/commands/sql.js.map +1 -0
  22. package/dist/cli/commands/system.d.ts +11 -0
  23. package/dist/cli/commands/system.d.ts.map +1 -0
  24. package/dist/cli/commands/system.js +263 -0
  25. package/dist/cli/commands/system.js.map +1 -0
  26. package/dist/cli/commands/tables.d.ts +7 -0
  27. package/dist/cli/commands/tables.d.ts.map +1 -0
  28. package/dist/cli/commands/tables.js +48 -0
  29. package/dist/cli/commands/tables.js.map +1 -0
  30. package/dist/cli/commands/tool.d.ts +18 -0
  31. package/dist/cli/commands/tool.d.ts.map +1 -0
  32. package/dist/cli/commands/tool.js +194 -0
  33. package/dist/cli/commands/tool.js.map +1 -0
  34. package/dist/cli/commands/tools-list.d.ts +20 -0
  35. package/dist/cli/commands/tools-list.d.ts.map +1 -0
  36. package/dist/cli/commands/tools-list.js +209 -0
  37. package/dist/cli/commands/tools-list.js.map +1 -0
  38. package/dist/cli/commands/validate.d.ts +7 -0
  39. package/dist/cli/commands/validate.d.ts.map +1 -0
  40. package/dist/cli/commands/validate.js +77 -0
  41. package/dist/cli/commands/validate.js.map +1 -0
  42. package/dist/cli/config/credentials.d.ts +21 -0
  43. package/dist/cli/config/credentials.d.ts.map +1 -0
  44. package/dist/cli/config/credentials.js +96 -0
  45. package/dist/cli/config/credentials.js.map +1 -0
  46. package/dist/cli/config/index.d.ts +10 -0
  47. package/dist/cli/config/index.d.ts.map +1 -0
  48. package/dist/cli/config/index.js +9 -0
  49. package/dist/cli/config/index.js.map +1 -0
  50. package/dist/cli/config/loader.d.ts +36 -0
  51. package/dist/cli/config/loader.d.ts.map +1 -0
  52. package/dist/cli/config/loader.js +206 -0
  53. package/dist/cli/config/loader.js.map +1 -0
  54. package/dist/cli/config/resolver.d.ts +26 -0
  55. package/dist/cli/config/resolver.d.ts.map +1 -0
  56. package/dist/cli/config/resolver.js +102 -0
  57. package/dist/cli/config/resolver.js.map +1 -0
  58. package/dist/cli/config/schema.d.ts +128 -0
  59. package/dist/cli/config/schema.d.ts.map +1 -0
  60. package/dist/cli/config/schema.js +37 -0
  61. package/dist/cli/config/schema.js.map +1 -0
  62. package/dist/cli/config/types.d.ts +59 -0
  63. package/dist/cli/config/types.d.ts.map +1 -0
  64. package/dist/cli/config/types.js +6 -0
  65. package/dist/cli/config/types.js.map +1 -0
  66. package/dist/cli/formatters/output.d.ts +60 -0
  67. package/dist/cli/formatters/output.d.ts.map +1 -0
  68. package/dist/cli/formatters/output.js +190 -0
  69. package/dist/cli/formatters/output.js.map +1 -0
  70. package/dist/cli/index.d.ts +13 -0
  71. package/dist/cli/index.d.ts.map +1 -0
  72. package/dist/cli/index.js +98 -0
  73. package/dist/cli/index.js.map +1 -0
  74. package/dist/cli/utils/command-helpers.d.ts +47 -0
  75. package/dist/cli/utils/command-helpers.d.ts.map +1 -0
  76. package/dist/cli/utils/command-helpers.js +211 -0
  77. package/dist/cli/utils/command-helpers.js.map +1 -0
  78. package/dist/cli/utils/connection.d.ts +20 -0
  79. package/dist/cli/utils/connection.d.ts.map +1 -0
  80. package/dist/cli/utils/connection.js +37 -0
  81. package/dist/cli/utils/connection.js.map +1 -0
  82. package/dist/cli/utils/exit-codes.d.ts +48 -0
  83. package/dist/cli/utils/exit-codes.d.ts.map +1 -0
  84. package/dist/cli/utils/exit-codes.js +111 -0
  85. package/dist/cli/utils/exit-codes.js.map +1 -0
  86. package/dist/cli/utils/yaml-loader.d.ts +69 -0
  87. package/dist/cli/utils/yaml-loader.d.ts.map +1 -0
  88. package/dist/cli/utils/yaml-loader.js +135 -0
  89. package/dist/cli/utils/yaml-loader.js.map +1 -0
  90. package/dist/cli/utils/yaml-to-commander.d.ts +26 -0
  91. package/dist/cli/utils/yaml-to-commander.d.ts.map +1 -0
  92. package/dist/cli/utils/yaml-to-commander.js +156 -0
  93. package/dist/cli/utils/yaml-to-commander.js.map +1 -0
  94. package/dist/config/index.d.ts +1 -0
  95. package/dist/config/index.d.ts.map +1 -1
  96. package/dist/config/index.js +9 -10
  97. package/dist/config/index.js.map +1 -1
  98. package/dist/config/resolver.d.ts.map +1 -1
  99. package/dist/config/resolver.js +6 -0
  100. package/dist/config/resolver.js.map +1 -1
  101. package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts.map +1 -1
  102. package/dist/ibmi-mcp-server/tools/executeSql.tool.js +6 -2
  103. package/dist/ibmi-mcp-server/tools/executeSql.tool.js.map +1 -1
  104. package/dist/ibmi-mcp-server/tools/generateSql.tool.js +1 -1
  105. package/dist/ibmi-mcp-server/tools/generateSql.tool.js.map +1 -1
  106. package/dist/ibmi-mcp-server/tools/getRelatedObjects.tool.d.ts +93 -0
  107. package/dist/ibmi-mcp-server/tools/getRelatedObjects.tool.d.ts.map +1 -0
  108. package/dist/ibmi-mcp-server/tools/getRelatedObjects.tool.js +198 -0
  109. package/dist/ibmi-mcp-server/tools/getRelatedObjects.tool.js.map +1 -0
  110. package/dist/ibmi-mcp-server/tools/getTableColumns.tool.d.ts +87 -0
  111. package/dist/ibmi-mcp-server/tools/getTableColumns.tool.d.ts.map +1 -0
  112. package/dist/ibmi-mcp-server/tools/getTableColumns.tool.js +163 -0
  113. package/dist/ibmi-mcp-server/tools/getTableColumns.tool.js.map +1 -0
  114. package/dist/ibmi-mcp-server/tools/index.d.ts +175 -0
  115. package/dist/ibmi-mcp-server/tools/index.d.ts.map +1 -1
  116. package/dist/ibmi-mcp-server/tools/index.js +27 -1
  117. package/dist/ibmi-mcp-server/tools/index.js.map +1 -1
  118. package/dist/ibmi-mcp-server/tools/listSchemas.tool.d.ts +107 -0
  119. package/dist/ibmi-mcp-server/tools/listSchemas.tool.d.ts.map +1 -0
  120. package/dist/ibmi-mcp-server/tools/listSchemas.tool.js +195 -0
  121. package/dist/ibmi-mcp-server/tools/listSchemas.tool.js.map +1 -0
  122. package/dist/ibmi-mcp-server/tools/listTablesInSchema.tool.d.ts +107 -0
  123. package/dist/ibmi-mcp-server/tools/listTablesInSchema.tool.d.ts.map +1 -0
  124. package/dist/ibmi-mcp-server/tools/listTablesInSchema.tool.js +198 -0
  125. package/dist/ibmi-mcp-server/tools/listTablesInSchema.tool.js.map +1 -0
  126. package/dist/ibmi-mcp-server/tools/validateQuery.tool.d.ts +229 -0
  127. package/dist/ibmi-mcp-server/tools/validateQuery.tool.d.ts.map +1 -0
  128. package/dist/ibmi-mcp-server/tools/validateQuery.tool.js +401 -0
  129. package/dist/ibmi-mcp-server/tools/validateQuery.tool.js.map +1 -0
  130. package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts +2 -0
  131. package/dist/ibmi-mcp-server/utils/cli/argumentParser.d.ts.map +1 -1
  132. package/dist/ibmi-mcp-server/utils/cli/argumentParser.js +21 -7
  133. package/dist/ibmi-mcp-server/utils/cli/argumentParser.js.map +1 -1
  134. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js +1 -1
  135. package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js.map +1 -1
  136. package/dist/mcp-server/tools/index.d.ts.map +1 -1
  137. package/dist/mcp-server/tools/index.js +5 -3
  138. package/dist/mcp-server/tools/index.js.map +1 -1
  139. package/package.json +6 -4
package/README.md CHANGED
@@ -315,24 +315,31 @@ npx -y @ibm/ibmi-mcp-server@latest [options]
315
315
  | `--toolsets <list>` | Comma-separated list of toolsets to load |
316
316
  | `--list-toolsets` | List all available toolsets and exit |
317
317
  | `--transport <type>` | Transport type: `stdio` (default) or `http` |
318
+ | `--builtin-tools` | Enable built-in schema discovery tools (`list_schemas`, `list_tables_in_schema`, `get_table_columns`, `get_related_objects`, `validate_query`) |
319
+ | `--execute-sql` | Enable the `execute_sql` tool for ad-hoc queries |
318
320
  | `--help` | Show help message |
319
321
 
320
322
  <details>
321
323
  <summary><strong>Common Examples</strong></summary>
322
324
 
323
- **Run server with stdio transport (for MCP clients):**
325
+ **Full text-to-SQL workflow (schema discovery + query execution):**
324
326
  ```bash
325
- npx -y @ibm/ibmi-mcp-server@latest --transport stdio --tools ./tools
327
+ npx -y @ibm/ibmi-mcp-server@latest --builtin-tools --execute-sql --transport http
326
328
  ```
327
329
 
328
- **Run HTTP server for testing:**
330
+ **Schema discovery only (agents explore but can't run arbitrary SQL):**
331
+ ```bash
332
+ npx -y @ibm/ibmi-mcp-server@latest --builtin-tools --tools ./tools
333
+ ```
334
+
335
+ **Run server with YAML tools only:**
329
336
  ```bash
330
337
  npx -y @ibm/ibmi-mcp-server@latest --transport http --tools ./tools
331
338
  ```
332
339
 
333
340
  **Load specific toolsets only:**
334
341
  ```bash
335
- npx -y @ibm/ibmi-mcp-server@latest --toolsets performance,security
342
+ npx -y @ibm/ibmi-mcp-server@latest --toolsets performance,security --tools ./tools
336
343
  ```
337
344
 
338
345
  **List available toolsets:**
@@ -340,11 +347,6 @@ npx -y @ibm/ibmi-mcp-server@latest --toolsets performance,security
340
347
  npx -y @ibm/ibmi-mcp-server@latest --list-toolsets --tools ./tools
341
348
  ```
342
349
 
343
- **Use custom tools directory:**
344
- ```bash
345
- npx -y @ibm/ibmi-mcp-server@latest --tools /absolute/path/to/custom-tools
346
- ```
347
-
348
350
  </details>
349
351
 
350
352
  ---
@@ -1605,12 +1607,19 @@ Settings for controlling built-in MCP tools compiled into the server. These are
1605
1607
 
1606
1608
  ## Built-in Tools Overview
1607
1609
 
1608
- The IBM i MCP Server includes two built-in tools for database operations:
1610
+ The IBM i MCP Server includes built-in tools for schema discovery, query validation, and SQL execution. All built-in tools are **disabled by default** (except `describe_sql_object`) and must be explicitly enabled via CLI flags or environment variables.
1611
+
1612
+ | Tool | Status | Purpose | CLI Flag | Env Variable |
1613
+ |------|--------|---------|----------|-------------|
1614
+ | `describe_sql_object` | ✅ Always enabled | Generate DDL for database objects | — | — |
1615
+ | `list_schemas` | Disabled by default | List available schemas/libraries | `--builtin-tools` | `IBMI_ENABLE_DEFAULT_TOOLS` |
1616
+ | `list_tables_in_schema` | Disabled by default | List tables, views, physical files in a schema | `--builtin-tools` | `IBMI_ENABLE_DEFAULT_TOOLS` |
1617
+ | `get_table_columns` | Disabled by default | Get column metadata for a table | `--builtin-tools` | `IBMI_ENABLE_DEFAULT_TOOLS` |
1618
+ | `get_related_objects` | Disabled by default | Find dependent objects for impact analysis | `--builtin-tools` | `IBMI_ENABLE_DEFAULT_TOOLS` |
1619
+ | `validate_query` | Disabled by default | Validate SQL syntax and verify referenced objects | `--builtin-tools` | `IBMI_ENABLE_DEFAULT_TOOLS` |
1620
+ | `execute_sql` | ⚠️ Disabled by default | Execute ad-hoc SQL queries (readonly by default) | `--execute-sql` | `IBMI_ENABLE_EXECUTE_SQL` |
1609
1621
 
1610
- | Tool | Status | Purpose | Configuration |
1611
- |------|--------|---------|---------------|
1612
- | `describe_sql_object` | ✅ Always enabled | Generate DDL for database objects | None (always available) |
1613
- | `execute_sql` | ⚠️ Disabled by default | Execute ad-hoc SQL queries (readonly by default) | `IBMI_ENABLE_EXECUTE_SQL`<br/>`IBMI_EXECUTE_SQL_READONLY` |
1622
+ > **Tip:** Use `--builtin-tools --execute-sql` together for the full text-to-SQL workflow. Use `--builtin-tools` alone to let agents discover schema while routing queries through curated YAML tools.
1614
1623
 
1615
1624
  ---
1616
1625
 
@@ -1661,6 +1670,8 @@ CREATE TABLE SALES.CUSTOMER (
1661
1670
 
1662
1671
  The `execute_sql` tool allows MCP clients to run ad-hoc SQL queries against your IBM i Db2 database. This tool is **disabled by default** for security reasons.
1663
1672
 
1673
+ Enable via CLI flag `--execute-sql` or environment variables:
1674
+
1664
1675
  | Variable | Description | Type | Default | Required |
1665
1676
  |----------|-------------|------|---------|----------|
1666
1677
  | `IBMI_ENABLE_EXECUTE_SQL` | Enable the built-in `execute_sql` tool | boolean | `false` | No |
@@ -1688,23 +1699,23 @@ The execute_sql tool includes multiple layers of protection:
1688
1699
  **Examples:**
1689
1700
 
1690
1701
  ```bash
1691
- # Development: Enable ad-hoc SELECT queries (readonly mode)
1702
+ # Via CLI flags (recommended for development)
1703
+ npx -y @ibm/ibmi-mcp-server@latest --execute-sql --transport http
1704
+ npx -y @ibm/ibmi-mcp-server@latest --builtin-tools --execute-sql --transport http
1705
+
1706
+ # Via environment variables
1692
1707
  IBMI_ENABLE_EXECUTE_SQL=true
1693
1708
  IBMI_EXECUTE_SQL_READONLY=true # Default - only SELECT queries allowed
1694
1709
  DB2i_HOST=ibmi-dev.local
1695
1710
  DB2i_USER=DEVUSER
1696
1711
  DB2i_PASS=devpass
1697
1712
 
1698
- # Development: Enable write operations (INSERT/UPDATE/DELETE)
1713
+ # Enable write operations (INSERT/UPDATE/DELETE)
1699
1714
  IBMI_ENABLE_EXECUTE_SQL=true
1700
1715
  IBMI_EXECUTE_SQL_READONLY=false # Allow write operations
1701
- DB2i_HOST=ibmi-dev.local
1702
- DB2i_USER=DEVUSER
1703
- DB2i_PASS=devpass
1704
1716
 
1705
1717
  # Production: Use YAML tools instead (more controlled)
1706
- IBMI_ENABLE_EXECUTE_SQL=false
1707
- TOOLS_YAML_PATH=/opt/mcp-tools/production.yaml
1718
+ npx -y @ibm/ibmi-mcp-server@latest --tools /opt/mcp-tools/production.yaml
1708
1719
  ```
1709
1720
 
1710
1721
  > **⚠️ Security Recommendation:** Keep `IBMI_EXECUTE_SQL_READONLY=true` (default) unless you explicitly need write operations. For production use cases requiring write access, consider using YAML-defined tools with parameterized queries instead of ad-hoc SQL.
@@ -1721,12 +1732,13 @@ TOOLS_YAML_PATH=/opt/mcp-tools/production.yaml
1721
1732
  | **Security** | PARSE_STATEMENT + AST/Regex validation | Explicit whitelist of queries |
1722
1733
  | **Use Case** | Development & exploration | Production & controlled access |
1723
1734
  | **Configuration** | Environment variables | `TOOLS_YAML_PATH` |
1724
- | **Examples** | `execute_sql`, `describe_sql_object` | Custom performance monitoring, security checks |
1735
+ | **Examples** | `list_schemas`, `get_table_columns`, `execute_sql`, `describe_sql_object` | Custom performance monitoring, security checks |
1725
1736
 
1726
1737
  **Recommendation:**
1727
- - Use **`describe_sql_object`** freely - it's safe and helps AI understand your database schema
1728
- - Use **`execute_sql`** in development for quick exploration
1738
+ - Use **`--builtin-tools`** for schema discovery safe, read-only catalog queries that help AI understand your database
1739
+ - Use **`--execute-sql`** in development for quick ad-hoc query exploration
1729
1740
  - Use **YAML tools** in production for controlled, curated query access
1741
+ - Combine **`--builtin-tools` + YAML tools** to let agents discover schema while executing only curated queries
1730
1742
 
1731
1743
  YAML tools allow you to:
1732
1744
  - Curate specific queries with documentation
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @fileoverview `ibmi columns <schema> <table>` command — get column metadata.
3
+ * @module cli/commands/columns
4
+ */
5
+ import { Command } from "commander";
6
+ export declare function registerColumnsCommand(program: Command): void;
7
+ //# sourceMappingURL=columns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/columns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+B7D"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @fileoverview `ibmi columns <schema> <table>` command — get column metadata.
3
+ * @module cli/commands/columns
4
+ */
5
+ import { withConnection } from "../utils/command-helpers.js";
6
+ export function registerColumnsCommand(program) {
7
+ program
8
+ .command("columns <schema> <table>")
9
+ .description("Get column metadata for a table")
10
+ .action(async (schema, table, _opts, cmd) => {
11
+ await withConnection(cmd, "get_table_columns", async (_resolved, ctx) => {
12
+ const { getTableColumnsLogic } = await import("../../ibmi-mcp-server/tools/getTableColumns.tool.js");
13
+ const result = await getTableColumnsLogic({
14
+ schema_name: schema,
15
+ table_name: table,
16
+ }, ctx, {});
17
+ if (!result.success) {
18
+ throw new Error(result.error?.message ?? "Failed to get table columns");
19
+ }
20
+ return {
21
+ data: (result.data ?? []),
22
+ meta: {
23
+ rowCount: result.rowCount ?? 0,
24
+ },
25
+ };
26
+ });
27
+ });
28
+ }
29
+ //# sourceMappingURL=columns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns.js","sourceRoot":"","sources":["../../../src/cli/commands/columns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,0BAA0B,CAAC;SACnC,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,KAAa,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;QACnE,MAAM,cAAc,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE;YACtE,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAC3C,qDAAqD,CACtD,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC;gBACE,WAAW,EAAE,MAAM;gBACnB,UAAU,EAAE,KAAK;aAClB,EACD,GAAG,EACH,EAAgB,CACjB,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,6BAA6B,CAAC,CAAC;YAC1E,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAA8B;gBACtD,IAAI,EAAE;oBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;iBAC/B;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @fileoverview `ibmi completion bash|zsh|fish` — generate shell completion scripts.
3
+ * @module cli/commands/completion
4
+ */
5
+ import { Command } from "commander";
6
+ /**
7
+ * Register `ibmi completion bash|zsh|fish`.
8
+ */
9
+ export declare function registerCompletionCommand(program: Command): void;
10
+ //# sourceMappingURL=completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/completion.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkNpC;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwBhE"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * @fileoverview `ibmi completion bash|zsh|fish` — generate shell completion scripts.
3
+ * @module cli/commands/completion
4
+ */
5
+ import { ExitCode } from "../utils/exit-codes.js";
6
+ /** Top-level commands. */
7
+ const COMMANDS = [
8
+ "system",
9
+ "schemas",
10
+ "tables",
11
+ "columns",
12
+ "related",
13
+ "validate",
14
+ "sql",
15
+ "tool",
16
+ "tools",
17
+ "toolsets",
18
+ "completion",
19
+ ];
20
+ /** System subcommands. */
21
+ const SYSTEM_SUBCOMMANDS = [
22
+ "list",
23
+ "show",
24
+ "add",
25
+ "remove",
26
+ "default",
27
+ "test",
28
+ "config-path",
29
+ ];
30
+ /** Global options. */
31
+ const GLOBAL_OPTIONS = [
32
+ "--system",
33
+ "--format",
34
+ "--raw",
35
+ "--stream",
36
+ "--tools",
37
+ "--output",
38
+ "--watch",
39
+ "--no-color",
40
+ "--version",
41
+ "--help",
42
+ ];
43
+ /** Format choices. */
44
+ const FORMAT_CHOICES = ["table", "json", "csv", "markdown"];
45
+ /**
46
+ * Generate a bash completion script.
47
+ */
48
+ function generateBash() {
49
+ return `# bash completion for ibmi
50
+ # Add to ~/.bashrc: eval "$(ibmi completion bash)"
51
+
52
+ _ibmi_completions() {
53
+ local cur prev commands system_commands global_opts format_choices
54
+ COMPREPLY=()
55
+ cur="\${COMP_WORDS[COMP_CWORD]}"
56
+ prev="\${COMP_WORDS[COMP_CWORD-1]}"
57
+
58
+ commands="${COMMANDS.join(" ")}"
59
+ system_commands="${SYSTEM_SUBCOMMANDS.join(" ")}"
60
+ global_opts="${GLOBAL_OPTIONS.join(" ")}"
61
+ format_choices="${FORMAT_CHOICES.join(" ")}"
62
+
63
+ # Complete --format values
64
+ if [[ "\${prev}" == "--format" ]]; then
65
+ COMPREPLY=( $(compgen -W "\${format_choices}" -- "\${cur}") )
66
+ return 0
67
+ fi
68
+
69
+ # Complete --system from config
70
+ if [[ "\${prev}" == "--system" ]]; then
71
+ local systems
72
+ if command -v yq &>/dev/null && [[ -f ~/.ibmi/config.yaml ]]; then
73
+ systems=$(yq -r '.systems | keys | .[]' ~/.ibmi/config.yaml 2>/dev/null)
74
+ elif command -v python3 &>/dev/null && [[ -f ~/.ibmi/config.yaml ]]; then
75
+ systems=$(python3 -c "import yaml; c=yaml.safe_load(open('$HOME/.ibmi/config.yaml')); print(' '.join(c.get('systems',{}).keys()))" 2>/dev/null)
76
+ fi
77
+ COMPREPLY=( $(compgen -W "\${systems}" -- "\${cur}") )
78
+ return 0
79
+ fi
80
+
81
+ # Complete file paths for --file, --tools, --output
82
+ if [[ "\${prev}" == "--file" || "\${prev}" == "--tools" || "\${prev}" == "--output" ]]; then
83
+ COMPREPLY=( $(compgen -f -- "\${cur}") )
84
+ return 0
85
+ fi
86
+
87
+ # Complete system subcommands
88
+ if [[ "\${COMP_WORDS[1]}" == "system" && \${COMP_CWORD} -eq 2 ]]; then
89
+ COMPREPLY=( $(compgen -W "\${system_commands}" -- "\${cur}") )
90
+ return 0
91
+ fi
92
+
93
+ # Complete top-level commands
94
+ if [[ \${COMP_CWORD} -eq 1 ]]; then
95
+ COMPREPLY=( $(compgen -W "\${commands}" -- "\${cur}") )
96
+ return 0
97
+ fi
98
+
99
+ # Complete global options
100
+ if [[ "\${cur}" == -* ]]; then
101
+ COMPREPLY=( $(compgen -W "\${global_opts}" -- "\${cur}") )
102
+ return 0
103
+ fi
104
+ }
105
+
106
+ complete -F _ibmi_completions ibmi
107
+ `;
108
+ }
109
+ /**
110
+ * Generate a zsh completion script.
111
+ */
112
+ function generateZsh() {
113
+ return `#compdef ibmi
114
+ # zsh completion for ibmi
115
+ # Add to ~/.zshrc: eval "$(ibmi completion zsh)"
116
+
117
+ _ibmi() {
118
+ local -a commands system_commands format_choices global_opts
119
+
120
+ commands=(
121
+ ${COMMANDS.map((c) => ` '${c}:${c} command'`).join("\n")}
122
+ )
123
+
124
+ system_commands=(
125
+ ${SYSTEM_SUBCOMMANDS.map((c) => ` '${c}:${c}'`).join("\n")}
126
+ )
127
+
128
+ format_choices=(table json csv markdown)
129
+
130
+ global_opts=(
131
+ '--system[Target system name]:system name:'
132
+ '--format[Output format]:format:(table json csv markdown)'
133
+ '--raw[Output as JSON]'
134
+ '--stream[Stream results as NDJSON]'
135
+ '--tools[Path to YAML tool files]:file:_files'
136
+ '--output[Write output to file]:file:_files'
137
+ '--watch[Re-run at interval]:seconds:'
138
+ '--no-color[Disable colored output]'
139
+ '--help[Show help]'
140
+ '--version[Show version]'
141
+ )
142
+
143
+ _arguments -C \\
144
+ $global_opts \\
145
+ '1:command:->command' \\
146
+ '*::arg:->args'
147
+
148
+ case $state in
149
+ command)
150
+ _describe -t commands 'ibmi commands' commands
151
+ ;;
152
+ args)
153
+ case $words[1] in
154
+ system)
155
+ _describe -t system_commands 'system subcommands' system_commands
156
+ ;;
157
+ esac
158
+ ;;
159
+ esac
160
+ }
161
+
162
+ _ibmi "$@"
163
+ `;
164
+ }
165
+ /**
166
+ * Generate a fish completion script.
167
+ */
168
+ function generateFish() {
169
+ const lines = [
170
+ "# fish completion for ibmi",
171
+ "# Add to fish config: ibmi completion fish | source",
172
+ "",
173
+ "# Disable file completions by default",
174
+ "complete -c ibmi -f",
175
+ "",
176
+ "# Top-level commands",
177
+ ];
178
+ for (const cmd of COMMANDS) {
179
+ lines.push(`complete -c ibmi -n '__fish_use_subcommand' -a '${cmd}' -d '${cmd} command'`);
180
+ }
181
+ lines.push("", "# System subcommands");
182
+ for (const sub of SYSTEM_SUBCOMMANDS) {
183
+ lines.push(`complete -c ibmi -n '__fish_seen_subcommand_from system' -a '${sub}' -d '${sub}'`);
184
+ }
185
+ lines.push("", "# Global options");
186
+ lines.push("complete -c ibmi -l system -d 'Target system name' -x", "complete -c ibmi -l format -d 'Output format' -x -a 'table json csv markdown'", "complete -c ibmi -l raw -d 'Output as JSON'", "complete -c ibmi -l stream -d 'Stream results as NDJSON'", "complete -c ibmi -l tools -d 'Path to YAML tool files' -r -F", "complete -c ibmi -l output -d 'Write output to file' -r -F", "complete -c ibmi -l watch -d 'Re-run at interval (seconds)' -x", "complete -c ibmi -l no-color -d 'Disable colored output'");
187
+ return lines.join("\n") + "\n";
188
+ }
189
+ /**
190
+ * Register `ibmi completion bash|zsh|fish`.
191
+ */
192
+ export function registerCompletionCommand(program) {
193
+ program
194
+ .command("completion [shell]")
195
+ .description("Generate shell completion script (bash, zsh, fish)")
196
+ .action((shell) => {
197
+ const target = shell?.toLowerCase() ?? detectShell();
198
+ switch (target) {
199
+ case "bash":
200
+ process.stdout.write(generateBash());
201
+ break;
202
+ case "zsh":
203
+ process.stdout.write(generateZsh());
204
+ break;
205
+ case "fish":
206
+ process.stdout.write(generateFish());
207
+ break;
208
+ default:
209
+ process.stderr.write(`Unknown shell: ${target}. Supported: bash, zsh, fish\n`);
210
+ process.exitCode = ExitCode.USAGE;
211
+ }
212
+ });
213
+ }
214
+ /**
215
+ * Auto-detect the current shell from the SHELL environment variable.
216
+ */
217
+ function detectShell() {
218
+ const shell = process.env.SHELL ?? "";
219
+ if (shell.includes("zsh"))
220
+ return "zsh";
221
+ if (shell.includes("fish"))
222
+ return "fish";
223
+ return "bash";
224
+ }
225
+ //# sourceMappingURL=completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../../src/cli/commands/completion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @fileoverview `ibmi related <library> <object>` command — find dependent objects.
3
+ * @module cli/commands/related
4
+ */
5
+ import { Command } from "commander";
6
+ export declare function registerRelatedCommand(program: Command): void;
7
+ //# sourceMappingURL=related.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"related.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/related.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqC7D"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @fileoverview `ibmi related <library> <object>` command — find dependent objects.
3
+ * @module cli/commands/related
4
+ */
5
+ import { withConnection } from "../utils/command-helpers.js";
6
+ export function registerRelatedCommand(program) {
7
+ program
8
+ .command("related <library> <object>")
9
+ .description("Find objects that depend on a database file")
10
+ .option("--type <type>", "Filter by object type (e.g. INDEX, VIEW, TRIGGER, FOREIGN KEY)")
11
+ .action(async (library, object, opts, cmd) => {
12
+ await withConnection(cmd, "get_related_objects", async (_resolved, ctx) => {
13
+ const { getRelatedObjectsLogic } = await import("../../ibmi-mcp-server/tools/getRelatedObjects.tool.js");
14
+ const result = await getRelatedObjectsLogic({
15
+ library_name: library,
16
+ file_name: object,
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+ object_type_filter: opts["type"],
19
+ }, ctx, {});
20
+ if (!result.success) {
21
+ throw new Error(result.error?.message ?? "Failed to get related objects");
22
+ }
23
+ return {
24
+ data: (result.data ?? []),
25
+ meta: {
26
+ rowCount: result.rowCount ?? 0,
27
+ },
28
+ };
29
+ });
30
+ });
31
+ }
32
+ //# sourceMappingURL=related.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"related.js","sourceRoot":"","sources":["../../../src/cli/commands/related.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,4BAA4B,CAAC;SACrC,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CACL,eAAe,EACf,gEAAgE,CACjE;SACA,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,MAAc,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;QACpE,MAAM,cAAc,CAAC,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE;YACxE,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAC7C,uDAAuD,CACxD,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC;gBACE,YAAY,EAAE,OAAO;gBACrB,SAAS,EAAE,MAAM;gBACjB,8DAA8D;gBAC9D,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAQ;aACxC,EACD,GAAG,EACH,EAAgB,CACjB,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,+BAA+B,CAAC,CAAC;YAC5E,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAA8B;gBACtD,IAAI,EAAE;oBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;iBAC/B;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @fileoverview `ibmi schemas` command — list available schemas/libraries.
3
+ * @module cli/commands/schemas
4
+ */
5
+ import { Command } from "commander";
6
+ export declare function registerSchemasCommand(program: Command): void;
7
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmD7D"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @fileoverview `ibmi schemas` command — list available schemas/libraries.
3
+ * @module cli/commands/schemas
4
+ */
5
+ import { withConnection } from "../utils/command-helpers.js";
6
+ import { ExitCode } from "../utils/exit-codes.js";
7
+ export function registerSchemasCommand(program) {
8
+ program
9
+ .command("schemas")
10
+ .description("List schemas/libraries on the target system")
11
+ .option("--filter <pattern>", "Filter by schema name (SQL LIKE pattern, e.g. 'MY%')")
12
+ .option("--system-schemas", "Include system schemas (Q* and SYS*)", false)
13
+ .option("--limit <n>", "Maximum rows to return", "50")
14
+ .option("--offset <n>", "Rows to skip for pagination", "0")
15
+ .action(async (opts, cmd) => {
16
+ const limit = parseInt(opts["limit"], 10);
17
+ const offset = parseInt(opts["offset"], 10);
18
+ if (isNaN(limit) || limit < 0) {
19
+ process.stderr.write(`Error: Invalid --limit value: "${opts["limit"]}". Must be a positive integer.\n`);
20
+ process.exitCode = ExitCode.USAGE;
21
+ return;
22
+ }
23
+ if (isNaN(offset) || offset < 0) {
24
+ process.stderr.write(`Error: Invalid --offset value: "${opts["offset"]}". Must be a non-negative integer.\n`);
25
+ process.exitCode = ExitCode.USAGE;
26
+ return;
27
+ }
28
+ await withConnection(cmd, "list_schemas", async (_resolved, ctx) => {
29
+ const { listSchemasLogic } = await import("../../ibmi-mcp-server/tools/listSchemas.tool.js");
30
+ const result = await listSchemasLogic({
31
+ filter: opts["filter"],
32
+ include_system: opts["systemSchemas"],
33
+ limit,
34
+ offset,
35
+ }, ctx, {});
36
+ if (!result.success) {
37
+ throw new Error(result.error?.message ?? "Failed to list schemas");
38
+ }
39
+ return {
40
+ data: (result.data ?? []),
41
+ meta: {
42
+ rowCount: result.rowCount ?? 0,
43
+ hasMore: result.hasMore,
44
+ },
45
+ };
46
+ });
47
+ });
48
+ }
49
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/cli/commands/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,oBAAoB,EAAE,sDAAsD,CAAC;SACpF,MAAM,CAAC,kBAAkB,EAAE,sCAAsC,EAAE,KAAK,CAAC;SACzE,MAAM,CAAC,aAAa,EAAE,wBAAwB,EAAE,IAAI,CAAC;SACrD,MAAM,CAAC,cAAc,EAAE,6BAA6B,EAAE,GAAG,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAY,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAW,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAW,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;YACxG,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;YAClC,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,IAAI,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CAAC;YAC9G,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE;YACjE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CACvC,iDAAiD,CAClD,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC;gBACE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAuB;gBAC5C,cAAc,EAAE,IAAI,CAAC,eAAe,CAAY;gBAChD,KAAK;gBACL,MAAM;aACP,EACD,GAAG,EACH,EAAgB,CACjB,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,wBAAwB,CAAC,CAAC;YACrE,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAA8B;gBACtD,IAAI,EAAE;oBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;oBAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @fileoverview `ibmi sql "<sql>"` command — execute SQL queries.
3
+ * Supports inline SQL, --file, and stdin piping.
4
+ * @module cli/commands/sql
5
+ */
6
+ import { Command } from "commander";
7
+ export declare function registerSqlCommand(program: Command): void;
8
+ //# sourceMappingURL=sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sql.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgHzD"}