mcp-server-db2i 2.0.0 → 2.2.0
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/README.md +11 -0
- package/dist/config.d.ts +104 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +273 -5
- package/dist/config.js.map +1 -1
- package/dist/customTools/context.d.ts +27 -0
- package/dist/customTools/context.d.ts.map +1 -0
- package/dist/customTools/context.js +35 -0
- package/dist/customTools/context.js.map +1 -0
- package/dist/customTools/execute.d.ts +22 -0
- package/dist/customTools/execute.d.ts.map +1 -0
- package/dist/customTools/execute.js +134 -0
- package/dist/customTools/execute.js.map +1 -0
- package/dist/customTools/loader.d.ts +56 -0
- package/dist/customTools/loader.d.ts.map +1 -0
- package/dist/customTools/loader.js +213 -0
- package/dist/customTools/loader.js.map +1 -0
- package/dist/customTools/params.d.ts +23 -0
- package/dist/customTools/params.d.ts.map +1 -0
- package/dist/customTools/params.js +93 -0
- package/dist/customTools/params.js.map +1 -0
- package/dist/customTools/registry.d.ts +18 -0
- package/dist/customTools/registry.d.ts.map +1 -0
- package/dist/customTools/registry.js +23 -0
- package/dist/customTools/registry.js.map +1 -0
- package/dist/customTools/schema.d.ts +127 -0
- package/dist/customTools/schema.d.ts.map +1 -0
- package/dist/customTools/schema.js +193 -0
- package/dist/customTools/schema.js.map +1 -0
- package/dist/db/connection.d.ts +9 -0
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +91 -0
- package/dist/db/connection.js.map +1 -1
- package/dist/db/sqlServices.d.ts +65 -0
- package/dist/db/sqlServices.d.ts.map +1 -0
- package/dist/db/sqlServices.js +311 -0
- package/dist/db/sqlServices.js.map +1 -0
- package/dist/index.js +23 -1
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +260 -104
- package/dist/server.js.map +1 -1
- package/dist/tools/metadata.d.ts +24 -12
- package/dist/tools/metadata.d.ts.map +1 -1
- package/dist/tools/metadata.js +43 -8
- package/dist/tools/metadata.js.map +1 -1
- package/dist/tools/query.d.ts +5 -0
- package/dist/tools/query.d.ts.map +1 -1
- package/dist/tools/query.js +50 -2
- package/dist/tools/query.js.map +1 -1
- package/dist/tools/sqlLimit.d.ts +5 -0
- package/dist/tools/sqlLimit.d.ts.map +1 -1
- package/dist/tools/sqlLimit.js +12 -0
- package/dist/tools/sqlLimit.js.map +1 -1
- package/dist/tools/sqlServices.d.ts +51 -0
- package/dist/tools/sqlServices.d.ts.map +1 -0
- package/dist/tools/sqlServices.js +122 -0
- package/dist/tools/sqlServices.js.map +1 -0
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +40 -1
- package/dist/transports/http.js.map +1 -1
- package/dist/utils/formatResult.d.ts +22 -0
- package/dist/utils/formatResult.d.ts.map +1 -0
- package/dist/utils/formatResult.js +66 -0
- package/dist/utils/formatResult.js.map +1 -0
- package/dist/utils/security/schemaAllowlist.d.ts +27 -0
- package/dist/utils/security/schemaAllowlist.d.ts.map +1 -0
- package/dist/utils/security/schemaAllowlist.js +156 -0
- package/dist/utils/security/schemaAllowlist.js.map +1 -0
- package/dist/utils/security/sqlSecurityValidator.d.ts +0 -4
- package/dist/utils/security/sqlSecurityValidator.d.ts.map +1 -1
- package/dist/utils/security/sqlSecurityValidator.js +134 -38
- package/dist/utils/security/sqlSecurityValidator.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -55,6 +55,10 @@ graph LR
|
|
|
55
55
|
- **HTTP Transport** - REST API with token authentication for web/agent integration
|
|
56
56
|
- **Current MCP spec** - Speaks [2026-07-28](https://modelcontextprotocol.io/) and still serves stateless 2025-era clients
|
|
57
57
|
- **Dual Transport** - Run stdio and HTTP simultaneously
|
|
58
|
+
- **Tool selection** - Enable or disable individual tools, e.g. a metadata-only mode without `execute_query`
|
|
59
|
+
- **Business SQL tools** - Load read-only ERP queries and table notes from YAML. See [Business SQL tools](docs/custom-tools.md)
|
|
60
|
+
- **Compact responses** - Compact JSON by default, or markdown tables to save tokens
|
|
61
|
+
- **Statement checks and DDL** - Validate object names, return the SQL that recreates an object, and list what depends on a table
|
|
58
62
|
|
|
59
63
|
## Quick Start
|
|
60
64
|
|
|
@@ -116,6 +120,10 @@ See the [Client Setup Guide](docs/client-setup.md) for Cursor, Claude Desktop, C
|
|
|
116
120
|
| `list_views` | List views in a schema (with optional filter) |
|
|
117
121
|
| `list_indexes` | List SQL indexes for a table |
|
|
118
122
|
| `get_table_constraints` | Get primary keys, foreign keys, unique constraints |
|
|
123
|
+
| `validate_query` | Check a statement without running it, including catalog names |
|
|
124
|
+
| `get_object_ddl` | Return the SQL DDL that recreates an object |
|
|
125
|
+
| `get_related_objects` | List objects that depend on a table |
|
|
126
|
+
| `get_business_context` | List business descriptions and relations loaded from YAML |
|
|
119
127
|
|
|
120
128
|
### Filter Syntax
|
|
121
129
|
|
|
@@ -141,6 +149,7 @@ Once connected, you can ask the AI assistant:
|
|
|
141
149
|
| [HTTP Transport](docs/http-transport.md) | HTTP API, auth, and protocol versions |
|
|
142
150
|
| [Configuration](docs/configuration.md) | All environment variables and JDBC options |
|
|
143
151
|
| [Security](docs/security.md) | Credentials, rate limiting, query validation |
|
|
152
|
+
| [Business SQL tools](docs/custom-tools.md) | YAML tools for orders, ledgers, and master data |
|
|
144
153
|
| [Client Setup](docs/client-setup.md) | Cursor, Claude, Claude Code setup |
|
|
145
154
|
| [Docker Guide](docs/docker.md) | Container deployment |
|
|
146
155
|
| [Development](docs/development.md) | Contributing and local setup |
|
|
@@ -148,6 +157,8 @@ Once connected, you can ask the AI assistant:
|
|
|
148
157
|
## Compatibility
|
|
149
158
|
|
|
150
159
|
- IBM i V7R3 and later (V7R5 recommended)
|
|
160
|
+
- `validate_query` and the `execute_query` parse check need `QSYS2.PARSE_STATEMENT` (IBM i 7.3 with Db2 PTF group SF99703 level 3, or 7.4 and later)
|
|
161
|
+
- `get_related_objects` needs IBM i 7.3 Technology Refresh 9, IBM i 7.4 Technology Refresh 3, or a later release
|
|
151
162
|
- Node.js 20.6 or higher
|
|
152
163
|
- Java Runtime Environment (JRE) 11 or higher
|
|
153
164
|
- MCP spec 2026-07-28, plus stateless clients from the 2025-era revisions (through 2025-11-25)
|
package/dist/config.d.ts
CHANGED
|
@@ -18,6 +18,9 @@
|
|
|
18
18
|
* - MCP_TOKEN_EXPIRY: Token lifetime in seconds (default: 3600)
|
|
19
19
|
* - MCP_MAX_SESSIONS: Maximum concurrent sessions (default: 100)
|
|
20
20
|
* - MCP_CORS_ORIGINS: CORS allowed origins (comma-separated, '*' for all)
|
|
21
|
+
* - MCP_ALLOWED_HOSTS: Extra Host header names, added to loopback (comma-separated)
|
|
22
|
+
* - MCP_ALLOW_UNAUTHENTICATED_HTTP: Allow MCP_AUTH_MODE=none on a non-loopback bind
|
|
23
|
+
* - MCP_AUTH_ALLOWED_DB_HOSTS: Hosts /auth may open a database connection to
|
|
21
24
|
*/
|
|
22
25
|
export interface DB2iConfig {
|
|
23
26
|
hostname: string;
|
|
@@ -63,6 +66,14 @@ export declare function getSecret(envVar: string, fileEnvVar: string): string |
|
|
|
63
66
|
* @returns true if the hostname format is valid, false otherwise
|
|
64
67
|
*/
|
|
65
68
|
export declare function validateHostname(hostname: string): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Security-relevant JDBC settings derived from DB2I_JDBC_OPTIONS.
|
|
71
|
+
* `access` is unset when the driver default of read only should apply.
|
|
72
|
+
*/
|
|
73
|
+
export declare function jdbcConnectionSecurity(options?: Record<string, string>): {
|
|
74
|
+
accessOverride?: string;
|
|
75
|
+
secure: boolean;
|
|
76
|
+
};
|
|
66
77
|
/**
|
|
67
78
|
* Load configuration from environment variables.
|
|
68
79
|
*
|
|
@@ -76,7 +87,15 @@ export declare function loadConfig(): DB2iConfig;
|
|
|
76
87
|
/**
|
|
77
88
|
* Build JDBC connection configuration for node-jt400
|
|
78
89
|
*/
|
|
79
|
-
export
|
|
90
|
+
export interface BuildConnectionOptions {
|
|
91
|
+
/**
|
|
92
|
+
* When false, omit JDBC `access` so QSYS2.GENERATE_SQL can return its
|
|
93
|
+
* result set. A read-only connection rejects that procedure. The default
|
|
94
|
+
* connection stays read only.
|
|
95
|
+
*/
|
|
96
|
+
readOnly?: boolean;
|
|
97
|
+
}
|
|
98
|
+
export declare function buildConnectionConfig(config: DB2iConfig, options?: BuildConnectionOptions): {
|
|
80
99
|
host: string;
|
|
81
100
|
user: string;
|
|
82
101
|
password: string;
|
|
@@ -136,6 +155,65 @@ export declare function getQueryLimitConfig(): QueryLimitConfig;
|
|
|
136
155
|
* @returns The effective limit to use
|
|
137
156
|
*/
|
|
138
157
|
export declare function applyQueryLimit(requestedLimit: number | undefined, config?: QueryLimitConfig): number;
|
|
158
|
+
/**
|
|
159
|
+
* Names of all tools the server can register
|
|
160
|
+
*/
|
|
161
|
+
export declare const TOOL_NAMES: readonly ["execute_query", "list_schemas", "list_tables", "describe_table", "list_views", "list_indexes", "get_table_constraints", "validate_query", "get_object_ddl", "get_related_objects", "get_business_context"];
|
|
162
|
+
export type ToolName = (typeof TOOL_NAMES)[number];
|
|
163
|
+
/**
|
|
164
|
+
* A YAML-defined tool that tool selection can name directly or by toolset.
|
|
165
|
+
*/
|
|
166
|
+
export interface CustomToolSelector {
|
|
167
|
+
name: string;
|
|
168
|
+
toolset?: string;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Get the list of tools to register.
|
|
172
|
+
*
|
|
173
|
+
* Environment variables:
|
|
174
|
+
* - MCP_TOOLS_ENABLED: Comma-separated allowlist. If set, only these tools are registered.
|
|
175
|
+
* - MCP_TOOLS_DISABLED: Comma-separated denylist, applied after the allowlist.
|
|
176
|
+
*
|
|
177
|
+
* Entries may be a built-in name, a custom tool name, or toolset:<name>.
|
|
178
|
+
* A toolset selector matches custom tools only.
|
|
179
|
+
*
|
|
180
|
+
* @param customTools - YAML tools loaded for this process. Omit when none are loaded.
|
|
181
|
+
* @returns Enabled tool names. Built-ins stay in registration order, then custom tools in load order.
|
|
182
|
+
* @throws Error if either variable contains an unknown tool name or toolset
|
|
183
|
+
*/
|
|
184
|
+
export declare function getEnabledTools(customTools?: readonly CustomToolSelector[]): string[];
|
|
185
|
+
/**
|
|
186
|
+
* Text content format for tool responses
|
|
187
|
+
* - 'json': Compact JSON (default)
|
|
188
|
+
* - 'pretty': Indented JSON
|
|
189
|
+
* - 'markdown': Row results as a markdown table, other results as compact JSON
|
|
190
|
+
*/
|
|
191
|
+
export type ResponseFormat = 'json' | 'pretty' | 'markdown';
|
|
192
|
+
/**
|
|
193
|
+
* Get the configured response format from MCP_RESPONSE_FORMAT.
|
|
194
|
+
* Defaults to 'json' if not set or invalid.
|
|
195
|
+
*/
|
|
196
|
+
export declare function getResponseFormat(): ResponseFormat;
|
|
197
|
+
/**
|
|
198
|
+
* Libraries execute_query may reference.
|
|
199
|
+
*
|
|
200
|
+
* Environment variable:
|
|
201
|
+
* - QUERY_ALLOWED_SCHEMAS: Comma-separated allowlist. Empty or unset disables the check.
|
|
202
|
+
*
|
|
203
|
+
* Read from the environment only, so an HTTP client cannot widen it by
|
|
204
|
+
* choosing a different schema at /auth. Names are uppercased; IBM i folds
|
|
205
|
+
* unquoted identifiers to uppercase.
|
|
206
|
+
*
|
|
207
|
+
* @returns Allowed schema names, or undefined when the check is off
|
|
208
|
+
*/
|
|
209
|
+
export declare function getAllowedSchemas(): string[] | undefined;
|
|
210
|
+
/**
|
|
211
|
+
* Whether execute_query asks IBM i to parse the statement before running it.
|
|
212
|
+
*
|
|
213
|
+
* Environment variable:
|
|
214
|
+
* - QUERY_PARSE_CHECK: `false` or `0` turns the check off. Anything else, including unset, leaves it on.
|
|
215
|
+
*/
|
|
216
|
+
export declare function isQueryParseCheckEnabled(): boolean;
|
|
139
217
|
/**
|
|
140
218
|
* Transport mode options
|
|
141
219
|
*/
|
|
@@ -186,6 +264,15 @@ export interface HttpConfig {
|
|
|
186
264
|
maxSessions: number;
|
|
187
265
|
/** CORS allowed origins (comma-separated, '*' for all, empty for none) */
|
|
188
266
|
corsOrigins: string[];
|
|
267
|
+
/** Host header names that may reach this server. Always includes loopback. */
|
|
268
|
+
allowedHosts: string[];
|
|
269
|
+
/** Permit MCP_AUTH_MODE=none when the bind address is not loopback. */
|
|
270
|
+
allowUnauthenticatedHttp: boolean;
|
|
271
|
+
/**
|
|
272
|
+
* Hosts /auth may connect to. Null means neither MCP_AUTH_ALLOWED_DB_HOSTS
|
|
273
|
+
* nor DB2I_HOSTNAME is set, so any host is accepted.
|
|
274
|
+
*/
|
|
275
|
+
authAllowedDbHosts: string[] | null;
|
|
189
276
|
}
|
|
190
277
|
/**
|
|
191
278
|
* Default HTTP configuration values
|
|
@@ -196,6 +283,22 @@ export declare const DEFAULT_HTTP_CONFIG: HttpConfig;
|
|
|
196
283
|
* Returns array of allowed origins, or ['*'] for all
|
|
197
284
|
*/
|
|
198
285
|
export declare function getCorsOrigins(): string[];
|
|
286
|
+
/**
|
|
287
|
+
* Hostname from a Host header or an allowlist entry.
|
|
288
|
+
* Strips a port, IPv6 brackets, and a trailing root dot, and lowercases the result.
|
|
289
|
+
* Rejects userinfo, paths, and queries.
|
|
290
|
+
*/
|
|
291
|
+
export declare function hostnameOf(hostHeader: string): string | undefined;
|
|
292
|
+
/**
|
|
293
|
+
* True for localhost, 127.0.0.1, and ::1. 0.0.0.0 is not loopback.
|
|
294
|
+
*/
|
|
295
|
+
export declare function isLoopbackHost(host: string): boolean;
|
|
296
|
+
/**
|
|
297
|
+
* Hosts the /auth endpoint may open a database connection to.
|
|
298
|
+
* An explicit MCP_AUTH_ALLOWED_DB_HOSTS list wins. Otherwise DB2I_HOSTNAME
|
|
299
|
+
* is the only allowed host. Null when neither is set.
|
|
300
|
+
*/
|
|
301
|
+
export declare function getAuthAllowedDbHosts(): string[] | null;
|
|
199
302
|
/**
|
|
200
303
|
* Get the configured transport mode
|
|
201
304
|
* Defaults to 'stdio' for backwards compatibility
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -18,6 +18,9 @@
|
|
|
18
18
|
* - MCP_TOKEN_EXPIRY: Token lifetime in seconds (default: 3600)
|
|
19
19
|
* - MCP_MAX_SESSIONS: Maximum concurrent sessions (default: 100)
|
|
20
20
|
* - MCP_CORS_ORIGINS: CORS allowed origins (comma-separated, '*' for all)
|
|
21
|
+
* - MCP_ALLOWED_HOSTS: Extra Host header names, added to loopback (comma-separated)
|
|
22
|
+
* - MCP_ALLOW_UNAUTHENTICATED_HTTP: Allow MCP_AUTH_MODE=none on a non-loopback bind
|
|
23
|
+
* - MCP_AUTH_ALLOWED_DB_HOSTS: Hosts /auth may open a database connection to
|
|
21
24
|
*/
|
|
22
25
|
import { readFileSync, existsSync } from 'node:fs';
|
|
23
26
|
/**
|
|
@@ -114,6 +117,25 @@ function parseJdbcOptions(optionsString) {
|
|
|
114
117
|
}
|
|
115
118
|
return options;
|
|
116
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Look up a JDBC option by name, ignoring key case.
|
|
122
|
+
*/
|
|
123
|
+
function jdbcOption(options, name) {
|
|
124
|
+
const key = Object.keys(options).find((candidate) => candidate.toLowerCase() === name);
|
|
125
|
+
return key === undefined ? undefined : options[key];
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Security-relevant JDBC settings derived from DB2I_JDBC_OPTIONS.
|
|
129
|
+
* `access` is unset when the driver default of read only should apply.
|
|
130
|
+
*/
|
|
131
|
+
export function jdbcConnectionSecurity(options = parseJdbcOptions(process.env.DB2I_JDBC_OPTIONS)) {
|
|
132
|
+
const accessOverride = jdbcOption(options, 'access');
|
|
133
|
+
const secureValue = jdbcOption(options, 'secure');
|
|
134
|
+
return {
|
|
135
|
+
accessOverride,
|
|
136
|
+
secure: secureValue?.toLowerCase() === 'true',
|
|
137
|
+
};
|
|
138
|
+
}
|
|
117
139
|
/**
|
|
118
140
|
* Load configuration from environment variables.
|
|
119
141
|
*
|
|
@@ -149,10 +171,7 @@ export function loadConfig() {
|
|
|
149
171
|
jdbcOptions: parseJdbcOptions(process.env.DB2I_JDBC_OPTIONS),
|
|
150
172
|
};
|
|
151
173
|
}
|
|
152
|
-
|
|
153
|
-
* Build JDBC connection configuration for node-jt400
|
|
154
|
-
*/
|
|
155
|
-
export function buildConnectionConfig(config) {
|
|
174
|
+
export function buildConnectionConfig(config, options) {
|
|
156
175
|
const connectionConfig = {
|
|
157
176
|
host: config.hostname,
|
|
158
177
|
user: config.username,
|
|
@@ -166,8 +185,25 @@ export function buildConnectionConfig(config) {
|
|
|
166
185
|
if (!config.jdbcOptions['date format']) {
|
|
167
186
|
connectionConfig['date format'] = 'iso';
|
|
168
187
|
}
|
|
188
|
+
const readOnly = options?.readOnly !== false;
|
|
189
|
+
// Read-only at the driver, unless the operator set access explicitly.
|
|
190
|
+
// An explicit value is merged below and overrides this default.
|
|
191
|
+
// The GENERATE_SQL connection passes readOnly: false and drops `access`.
|
|
192
|
+
if (readOnly && jdbcOption(config.jdbcOptions, 'access') === undefined) {
|
|
193
|
+
connectionConfig['access'] = 'read only';
|
|
194
|
+
}
|
|
195
|
+
// Unqualified names resolve to the configured schema unless the operator
|
|
196
|
+
// already set a library list. An explicit `libraries` option wins because
|
|
197
|
+
// JDBC options are merged afterwards.
|
|
198
|
+
const hasLibraries = Object.keys(config.jdbcOptions).some((key) => key.toLowerCase() === 'libraries');
|
|
199
|
+
if (config.schema && !hasLibraries) {
|
|
200
|
+
connectionConfig['libraries'] = config.schema;
|
|
201
|
+
}
|
|
169
202
|
// Merge additional JDBC options
|
|
170
203
|
for (const [key, value] of Object.entries(config.jdbcOptions)) {
|
|
204
|
+
if (!readOnly && key.toLowerCase() === 'access') {
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
171
207
|
connectionConfig[key] = value;
|
|
172
208
|
}
|
|
173
209
|
return connectionConfig;
|
|
@@ -225,6 +261,140 @@ export function applyQueryLimit(requestedLimit, config = getQueryLimitConfig())
|
|
|
225
261
|
const limit = requestedLimit ?? config.defaultLimit;
|
|
226
262
|
return Math.min(Math.max(1, limit), config.maxLimit);
|
|
227
263
|
}
|
|
264
|
+
// ============================================================================
|
|
265
|
+
// Tool Selection and Response Format
|
|
266
|
+
// ============================================================================
|
|
267
|
+
/**
|
|
268
|
+
* Names of all tools the server can register
|
|
269
|
+
*/
|
|
270
|
+
export const TOOL_NAMES = [
|
|
271
|
+
'execute_query',
|
|
272
|
+
'list_schemas',
|
|
273
|
+
'list_tables',
|
|
274
|
+
'describe_table',
|
|
275
|
+
'list_views',
|
|
276
|
+
'list_indexes',
|
|
277
|
+
'get_table_constraints',
|
|
278
|
+
'validate_query',
|
|
279
|
+
'get_object_ddl',
|
|
280
|
+
'get_related_objects',
|
|
281
|
+
'get_business_context',
|
|
282
|
+
];
|
|
283
|
+
/**
|
|
284
|
+
* Parse a comma-separated list of tool names and toolset:<name> selectors.
|
|
285
|
+
* Throws if any entry is not a known tool or toolset, so typos fail loudly at startup.
|
|
286
|
+
*/
|
|
287
|
+
function parseToolList(value, envVar, names, toolsets) {
|
|
288
|
+
if (value === undefined || value.trim() === '') {
|
|
289
|
+
return undefined;
|
|
290
|
+
}
|
|
291
|
+
const entries = value
|
|
292
|
+
.split(',')
|
|
293
|
+
.map((name) => name.trim().toLowerCase())
|
|
294
|
+
.filter((name) => name.length > 0);
|
|
295
|
+
const unknown = entries.filter((entry) => {
|
|
296
|
+
if (entry.startsWith('toolset:')) {
|
|
297
|
+
return !toolsets.has(entry.slice('toolset:'.length));
|
|
298
|
+
}
|
|
299
|
+
return !names.has(entry);
|
|
300
|
+
});
|
|
301
|
+
if (unknown.length > 0) {
|
|
302
|
+
const valid = [...names].join(', ');
|
|
303
|
+
const toolsetHint = toolsets.size > 0
|
|
304
|
+
? `. Toolsets: ${[...toolsets].sort().map((toolset) => `toolset:${toolset}`).join(', ')}`
|
|
305
|
+
: '';
|
|
306
|
+
throw new Error(`Unknown tool name(s) in ${envVar}: ${unknown.join(', ')}. Valid tools: ${valid}${toolsetHint}`);
|
|
307
|
+
}
|
|
308
|
+
return entries;
|
|
309
|
+
}
|
|
310
|
+
function selectorMatches(selector, name, toolset) {
|
|
311
|
+
if (selector.startsWith('toolset:')) {
|
|
312
|
+
return toolset?.toLowerCase() === selector.slice('toolset:'.length);
|
|
313
|
+
}
|
|
314
|
+
return selector === name.toLowerCase();
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Get the list of tools to register.
|
|
318
|
+
*
|
|
319
|
+
* Environment variables:
|
|
320
|
+
* - MCP_TOOLS_ENABLED: Comma-separated allowlist. If set, only these tools are registered.
|
|
321
|
+
* - MCP_TOOLS_DISABLED: Comma-separated denylist, applied after the allowlist.
|
|
322
|
+
*
|
|
323
|
+
* Entries may be a built-in name, a custom tool name, or toolset:<name>.
|
|
324
|
+
* A toolset selector matches custom tools only.
|
|
325
|
+
*
|
|
326
|
+
* @param customTools - YAML tools loaded for this process. Omit when none are loaded.
|
|
327
|
+
* @returns Enabled tool names. Built-ins stay in registration order, then custom tools in load order.
|
|
328
|
+
* @throws Error if either variable contains an unknown tool name or toolset
|
|
329
|
+
*/
|
|
330
|
+
export function getEnabledTools(customTools = []) {
|
|
331
|
+
const names = new Set(TOOL_NAMES);
|
|
332
|
+
const toolsets = new Set();
|
|
333
|
+
for (const tool of customTools) {
|
|
334
|
+
names.add(tool.name.toLowerCase());
|
|
335
|
+
if (tool.toolset) {
|
|
336
|
+
toolsets.add(tool.toolset.toLowerCase());
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
const allowlist = parseToolList(process.env.MCP_TOOLS_ENABLED, 'MCP_TOOLS_ENABLED', names, toolsets);
|
|
340
|
+
const denylist = parseToolList(process.env.MCP_TOOLS_DISABLED, 'MCP_TOOLS_DISABLED', names, toolsets) ?? [];
|
|
341
|
+
const enabled = (name, toolset) => {
|
|
342
|
+
const allowed = !allowlist || allowlist.some((entry) => selectorMatches(entry, name, toolset));
|
|
343
|
+
const denied = denylist.some((entry) => selectorMatches(entry, name, toolset));
|
|
344
|
+
return allowed && !denied;
|
|
345
|
+
};
|
|
346
|
+
const builtins = TOOL_NAMES.filter((name) => enabled(name, undefined));
|
|
347
|
+
const custom = customTools
|
|
348
|
+
.filter((tool) => enabled(tool.name, tool.toolset))
|
|
349
|
+
.map((tool) => tool.name);
|
|
350
|
+
return [...builtins, ...custom];
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Get the configured response format from MCP_RESPONSE_FORMAT.
|
|
354
|
+
* Defaults to 'json' if not set or invalid.
|
|
355
|
+
*/
|
|
356
|
+
export function getResponseFormat() {
|
|
357
|
+
const format = process.env.MCP_RESPONSE_FORMAT?.trim().toLowerCase();
|
|
358
|
+
if (format === 'pretty' || format === 'markdown') {
|
|
359
|
+
return format;
|
|
360
|
+
}
|
|
361
|
+
return 'json';
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Libraries execute_query may reference.
|
|
365
|
+
*
|
|
366
|
+
* Environment variable:
|
|
367
|
+
* - QUERY_ALLOWED_SCHEMAS: Comma-separated allowlist. Empty or unset disables the check.
|
|
368
|
+
*
|
|
369
|
+
* Read from the environment only, so an HTTP client cannot widen it by
|
|
370
|
+
* choosing a different schema at /auth. Names are uppercased; IBM i folds
|
|
371
|
+
* unquoted identifiers to uppercase.
|
|
372
|
+
*
|
|
373
|
+
* @returns Allowed schema names, or undefined when the check is off
|
|
374
|
+
*/
|
|
375
|
+
export function getAllowedSchemas() {
|
|
376
|
+
const value = process.env.QUERY_ALLOWED_SCHEMAS;
|
|
377
|
+
if (value === undefined || value.trim() === '') {
|
|
378
|
+
return undefined;
|
|
379
|
+
}
|
|
380
|
+
const names = [
|
|
381
|
+
...new Set(value
|
|
382
|
+
.split(',')
|
|
383
|
+
.map((name) => name.trim().toUpperCase())
|
|
384
|
+
.filter((name) => name.length > 0)),
|
|
385
|
+
];
|
|
386
|
+
return names.length > 0 ? names : undefined;
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Whether execute_query asks IBM i to parse the statement before running it.
|
|
390
|
+
*
|
|
391
|
+
* Environment variable:
|
|
392
|
+
* - QUERY_PARSE_CHECK: `false` or `0` turns the check off. Anything else, including unset, leaves it on.
|
|
393
|
+
*/
|
|
394
|
+
export function isQueryParseCheckEnabled() {
|
|
395
|
+
const value = process.env.QUERY_PARSE_CHECK?.trim().toLowerCase();
|
|
396
|
+
return value !== 'false' && value !== '0';
|
|
397
|
+
}
|
|
228
398
|
/**
|
|
229
399
|
* Default HTTP configuration values
|
|
230
400
|
*/
|
|
@@ -240,6 +410,9 @@ export const DEFAULT_HTTP_CONFIG = {
|
|
|
240
410
|
tokenExpiry: 3600,
|
|
241
411
|
maxSessions: 100,
|
|
242
412
|
corsOrigins: [],
|
|
413
|
+
allowedHosts: ['localhost', '127.0.0.1', '::1'],
|
|
414
|
+
allowUnauthenticatedHttp: false,
|
|
415
|
+
authAllowedDbHosts: null,
|
|
243
416
|
};
|
|
244
417
|
/**
|
|
245
418
|
* Parse CORS origins from environment variable
|
|
@@ -252,6 +425,97 @@ export function getCorsOrigins() {
|
|
|
252
425
|
}
|
|
253
426
|
return origins.split(',').map(o => o.trim()).filter(o => o.length > 0);
|
|
254
427
|
}
|
|
428
|
+
const LOOPBACK_HOSTS = ['localhost', '127.0.0.1', '::1'];
|
|
429
|
+
/**
|
|
430
|
+
* Hostname from a Host header or an allowlist entry.
|
|
431
|
+
* Strips a port, IPv6 brackets, and a trailing root dot, and lowercases the result.
|
|
432
|
+
* Rejects userinfo, paths, and queries.
|
|
433
|
+
*/
|
|
434
|
+
export function hostnameOf(hostHeader) {
|
|
435
|
+
const raw = hostHeader.trim();
|
|
436
|
+
if (!raw ||
|
|
437
|
+
raw.includes('@') ||
|
|
438
|
+
raw.includes('/') ||
|
|
439
|
+
raw.includes('?') ||
|
|
440
|
+
raw.includes('\\') ||
|
|
441
|
+
raw.includes('#') ||
|
|
442
|
+
/\s/.test(raw)) {
|
|
443
|
+
return undefined;
|
|
444
|
+
}
|
|
445
|
+
let host = raw;
|
|
446
|
+
if (host.startsWith('[')) {
|
|
447
|
+
const end = host.indexOf(']');
|
|
448
|
+
if (end <= 1)
|
|
449
|
+
return undefined;
|
|
450
|
+
const rest = host.slice(end + 1);
|
|
451
|
+
if (rest !== '' && !/^:\d+$/.test(rest))
|
|
452
|
+
return undefined;
|
|
453
|
+
host = host.slice(1, end);
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
const colonCount = host.split(':').length - 1;
|
|
457
|
+
if (colonCount === 1) {
|
|
458
|
+
if (!/:\d+$/.test(host))
|
|
459
|
+
return undefined;
|
|
460
|
+
host = host.replace(/:\d+$/, '');
|
|
461
|
+
}
|
|
462
|
+
else if (colonCount > 1) {
|
|
463
|
+
return undefined;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
host = host.replace(/\.$/, '').toLowerCase();
|
|
467
|
+
return host.length > 0 ? host : undefined;
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* True for localhost, 127.0.0.1, and ::1. 0.0.0.0 is not loopback.
|
|
471
|
+
*/
|
|
472
|
+
export function isLoopbackHost(host) {
|
|
473
|
+
const normalized = hostnameOf(host);
|
|
474
|
+
return normalized !== undefined && LOOPBACK_HOSTS.includes(normalized);
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Host names accepted on incoming requests.
|
|
478
|
+
* Loopback is always included. The bind address is included unless it is
|
|
479
|
+
* 0.0.0.0 or ::. MCP_ALLOWED_HOSTS adds more names.
|
|
480
|
+
*/
|
|
481
|
+
function getAllowedHosts(bindHost) {
|
|
482
|
+
const configured = (process.env.MCP_ALLOWED_HOSTS ?? '')
|
|
483
|
+
.split(',')
|
|
484
|
+
.map((entry) => hostnameOf(entry))
|
|
485
|
+
.filter((entry) => Boolean(entry));
|
|
486
|
+
const allowed = new Set(LOOPBACK_HOSTS);
|
|
487
|
+
const bind = hostnameOf(bindHost);
|
|
488
|
+
if (bind && bind !== '0.0.0.0' && bind !== '::') {
|
|
489
|
+
allowed.add(bind);
|
|
490
|
+
}
|
|
491
|
+
for (const host of configured) {
|
|
492
|
+
allowed.add(host);
|
|
493
|
+
}
|
|
494
|
+
return [...allowed];
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Hosts the /auth endpoint may open a database connection to.
|
|
498
|
+
* An explicit MCP_AUTH_ALLOWED_DB_HOSTS list wins. Otherwise DB2I_HOSTNAME
|
|
499
|
+
* is the only allowed host. Null when neither is set.
|
|
500
|
+
*/
|
|
501
|
+
export function getAuthAllowedDbHosts() {
|
|
502
|
+
const explicit = process.env.MCP_AUTH_ALLOWED_DB_HOSTS;
|
|
503
|
+
if (explicit !== undefined && explicit.trim() !== '') {
|
|
504
|
+
const hosts = [
|
|
505
|
+
...new Set(explicit
|
|
506
|
+
.split(',')
|
|
507
|
+
.map((host) => host.trim().replace(/\.$/, '').toLowerCase())
|
|
508
|
+
.filter((host) => host.length > 0)),
|
|
509
|
+
];
|
|
510
|
+
return hosts.length > 0 ? hosts : null;
|
|
511
|
+
}
|
|
512
|
+
const dbHost = process.env.DB2I_HOSTNAME?.trim().replace(/\.$/, '').toLowerCase();
|
|
513
|
+
return dbHost ? [dbHost] : null;
|
|
514
|
+
}
|
|
515
|
+
function allowUnauthenticatedHttp() {
|
|
516
|
+
const value = process.env.MCP_ALLOW_UNAUTHENTICATED_HTTP?.toLowerCase();
|
|
517
|
+
return value === 'true' || value === '1';
|
|
518
|
+
}
|
|
255
519
|
/**
|
|
256
520
|
* Get the configured transport mode
|
|
257
521
|
* Defaults to 'stdio' for backwards compatibility
|
|
@@ -332,10 +596,11 @@ export function getHttpConfig() {
|
|
|
332
596
|
if (authMode === 'token' && !staticToken) {
|
|
333
597
|
throw new Error('MCP_AUTH_TOKEN is required when MCP_AUTH_MODE=token. Generate with: openssl rand -hex 32');
|
|
334
598
|
}
|
|
599
|
+
const host = process.env.MCP_HTTP_HOST || '127.0.0.1';
|
|
335
600
|
return {
|
|
336
601
|
transport: getTransportMode(),
|
|
337
602
|
port: parseInt(process.env.MCP_HTTP_PORT || '3000', 10),
|
|
338
|
-
host
|
|
603
|
+
host,
|
|
339
604
|
sessionMode: getSessionMode(),
|
|
340
605
|
authMode,
|
|
341
606
|
staticToken,
|
|
@@ -343,6 +608,9 @@ export function getHttpConfig() {
|
|
|
343
608
|
tokenExpiry: parseInt(process.env.MCP_TOKEN_EXPIRY || '3600', 10),
|
|
344
609
|
maxSessions: parseInt(process.env.MCP_MAX_SESSIONS || '100', 10),
|
|
345
610
|
corsOrigins: getCorsOrigins(),
|
|
611
|
+
allowedHosts: getAllowedHosts(host),
|
|
612
|
+
allowUnauthenticatedHttp: allowUnauthenticatedHttp(),
|
|
613
|
+
authAllowedDbHosts: getAuthAllowedDbHosts(),
|
|
346
614
|
};
|
|
347
615
|
}
|
|
348
616
|
/**
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read business annotations loaded from YAML.
|
|
3
|
+
*/
|
|
4
|
+
import type { StoredAnnotation } from './loader.js';
|
|
5
|
+
export interface BusinessContextResult {
|
|
6
|
+
success: boolean;
|
|
7
|
+
error?: string;
|
|
8
|
+
data?: StoredAnnotation[];
|
|
9
|
+
count?: number;
|
|
10
|
+
[key: string]: unknown;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Annotation for SCHEMA.TABLE, if one was loaded.
|
|
14
|
+
*/
|
|
15
|
+
export declare function annotationFor(schema: string, table: string): StoredAnnotation | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Annotations matching an entity name, a table, or both. Empty filters return every annotation.
|
|
18
|
+
*/
|
|
19
|
+
export declare function filterAnnotations(filter: {
|
|
20
|
+
entity?: string;
|
|
21
|
+
table?: string;
|
|
22
|
+
}): StoredAnnotation[];
|
|
23
|
+
export declare function getBusinessContextTool(input: {
|
|
24
|
+
entity?: string;
|
|
25
|
+
table?: string;
|
|
26
|
+
}): BusinessContextResult;
|
|
27
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/customTools/context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAGzF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,gBAAgB,EAAE,CAgBjG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,qBAAqB,CAGxG"}
|