mcp-server-db2i 1.3.0 → 1.3.2

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 CHANGED
@@ -1,7 +1,49 @@
1
1
  # mcp-server-db2i
2
2
 
3
+ [![CI](https://github.com/Strom-Capital/mcp-server-db2i/actions/workflows/ci.yml/badge.svg)](https://github.com/Strom-Capital/mcp-server-db2i/actions/workflows/ci.yml)
4
+ [![npm version](https://img.shields.io/npm/v/mcp-server-db2i)](https://www.npmjs.com/package/mcp-server-db2i)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+ [![MCP](https://img.shields.io/badge/MCP-2025--11--25-green?logo=anthropic&logoColor=white)](https://modelcontextprotocol.io/)
7
+ [![IBM i](https://img.shields.io/badge/IBM%20i-V7R3+-green?logo=ibm&logoColor=white)](https://www.ibm.com/products/ibm-i)
8
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.9-blue?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
9
+ [![Node.js](https://img.shields.io/badge/Node.js-≥20.6-green?logo=node.js&logoColor=white)](https://nodejs.org/)
10
+ [![Docker](https://img.shields.io/badge/Docker-supported-blue?logo=docker&logoColor=white)](docs/docker.md)
11
+ [![npm downloads](https://img.shields.io/npm/dm/mcp-server-db2i)](https://www.npmjs.com/package/mcp-server-db2i)
12
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Strom-Capital/mcp-server-db2i/pulls)
13
+ [![GitHub last commit](https://img.shields.io/github/last-commit/Strom-Capital/mcp-server-db2i)](https://github.com/Strom-Capital/mcp-server-db2i/commits/main)
14
+
3
15
  A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server for IBM DB2 for i (DB2i). This server enables AI assistants like Claude and Cursor to query and inspect IBM i databases using the JT400 JDBC driver.
4
16
 
17
+ ## Architecture
18
+
19
+ AI clients connect to the MCP Server via stdio (IDEs) or HTTP (agents), which executes read-only queries against DB2 for i using the JT400 JDBC driver.
20
+
21
+ ```mermaid
22
+ graph LR
23
+ subgraph clients ["AI Clients"]
24
+ claude("Claude")
25
+ cursor("Cursor IDE")
26
+ agents("Custom Agents")
27
+ end
28
+
29
+ subgraph server ["MCP Server"]
30
+ stdio["stdio"]
31
+ http["HTTP + Auth"]
32
+ tools[["MCP Tools"]]
33
+ jdbc["JT400 JDBC"]
34
+ end
35
+
36
+ subgraph ibmi ["IBM i"]
37
+ db2[("DB2 for i")]
38
+ end
39
+
40
+ claude & cursor -->|MCP Protocol| stdio
41
+ agents -->|REST API| http
42
+ stdio & http --> tools
43
+ tools --> jdbc
44
+ jdbc -->|JDBC| db2
45
+ ```
46
+
5
47
  ## Features
6
48
 
7
49
  - **Read-only SQL queries** - Execute SELECT statements safely with automatic result limiting
@@ -38,9 +80,9 @@ DB2I_PASSWORD=your-password
38
80
  DB2I_SCHEMA=your-default-schema # Optional
39
81
  ```
40
82
 
41
- ### Cursor Setup
83
+ ### Client Setup
42
84
 
43
- Add to `~/.cursor/mcp.json`:
85
+ Add to your MCP client config (e.g., `~/.cursor/mcp.json`):
44
86
 
45
87
  ```json
46
88
  {
@@ -49,16 +91,18 @@ Add to `~/.cursor/mcp.json`:
49
91
  "command": "npx",
50
92
  "args": ["mcp-server-db2i"],
51
93
  "env": {
52
- "DB2I_HOSTNAME": "your-host",
53
- "DB2I_USERNAME": "your-user",
54
- "DB2I_PASSWORD": "your-password"
94
+ "DB2I_HOSTNAME": "${env:DB2I_HOSTNAME}",
95
+ "DB2I_USERNAME": "${env:DB2I_USERNAME}",
96
+ "DB2I_PASSWORD": "${env:DB2I_PASSWORD}"
55
97
  }
56
98
  }
57
99
  }
58
100
  }
59
101
  ```
60
102
 
61
- See the [Cursor Integration Guide](docs/cursor-integration.md) for more options including Docker setup.
103
+ This uses environment variable expansion to keep credentials out of config files. Set the variables in your shell profile (`~/.zshrc` or `~/.bashrc`).
104
+
105
+ See the [Client Setup Guide](docs/client-setup.md) for Cursor, Claude Desktop, Claude Code, and Docker setup options.
62
106
 
63
107
  ## Available Tools
64
108
 
@@ -96,7 +140,7 @@ Once connected, you can ask the AI assistant:
96
140
  | [HTTP Transport](docs/http-transport.md) | REST API with token authentication |
97
141
  | [Configuration](docs/configuration.md) | All environment variables and JDBC options |
98
142
  | [Security](docs/security.md) | Credentials, rate limiting, query validation |
99
- | [Cursor Integration](docs/cursor-integration.md) | IDE setup examples |
143
+ | [Client Setup](docs/client-setup.md) | Cursor, Claude, Claude Code setup |
100
144
  | [Docker Guide](docs/docker.md) | Container deployment |
101
145
  | [Development](docs/development.md) | Contributing and local setup |
102
146
 
package/dist/server.d.ts CHANGED
@@ -38,6 +38,7 @@ export type McpToolResponse = {
38
38
  type: 'text';
39
39
  text: string;
40
40
  }>;
41
+ structuredContent?: Record<string, unknown>;
41
42
  isError?: true;
42
43
  };
43
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAgB9C,eAAO,MAAM,WAAW,QAAmB,CAAC;AAC5C,eAAO,MAAM,cAAc,QAAsB,CAAC;AAElD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,SAAS,UAAU,EAC/D,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAC9D,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,cAAc,GAC9B,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,eAAe,CAAC,CA4B3C;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAmLtF"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAgB9C,eAAO,MAAM,WAAW,QAAmB,CAAC;AAC5C,eAAO,MAAM,cAAc,QAAsB,CAAC;AAElD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,CAAC;AA8FF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,SAAS,UAAU,EAC/D,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAC9D,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,cAAc,GAC9B,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,eAAe,CAAC,CAuC3C;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CA0LtF"}
package/dist/server.js CHANGED
@@ -19,6 +19,90 @@ const require = createRequire(import.meta.url);
19
19
  const packageJson = require('../package.json');
20
20
  export const SERVER_NAME = packageJson.name;
21
21
  export const SERVER_VERSION = packageJson.version;
22
+ const READ_ONLY_ANNOTATIONS = {
23
+ readOnlyHint: true,
24
+ destructiveHint: false,
25
+ idempotentHint: true,
26
+ openWorldHint: false,
27
+ };
28
+ const queryOutputSchema = {
29
+ success: z.boolean(),
30
+ error: z.string().optional(),
31
+ violations: z.array(z.string()).optional(),
32
+ data: z.array(z.unknown()).optional(),
33
+ rowCount: z.number().int().optional(),
34
+ limitApplied: z.number().int().optional(),
35
+ };
36
+ const listSchemasOutputSchema = {
37
+ success: z.boolean(),
38
+ error: z.string().optional(),
39
+ data: z.array(z.object({
40
+ schema_name: z.string(),
41
+ schema_text: z.string().nullable(),
42
+ })).optional(),
43
+ count: z.number().int().optional(),
44
+ };
45
+ const listTablesOutputSchema = {
46
+ success: z.boolean(),
47
+ error: z.string().optional(),
48
+ data: z.array(z.object({
49
+ table_name: z.string(),
50
+ table_type: z.string(),
51
+ table_text: z.string().nullable(),
52
+ })).optional(),
53
+ count: z.number().int().optional(),
54
+ };
55
+ const describeTableOutputSchema = {
56
+ success: z.boolean(),
57
+ error: z.string().optional(),
58
+ data: z.array(z.object({
59
+ column_name: z.string(),
60
+ ordinal_position: z.number(),
61
+ data_type: z.string(),
62
+ length: z.number().nullable(),
63
+ numeric_scale: z.number().nullable(),
64
+ is_nullable: z.string(),
65
+ column_default: z.string().nullable(),
66
+ column_text: z.string().nullable(),
67
+ system_column_name: z.string(),
68
+ ccsid: z.number().nullable(),
69
+ })).optional(),
70
+ count: z.number().int().optional(),
71
+ };
72
+ const listViewsOutputSchema = {
73
+ success: z.boolean(),
74
+ error: z.string().optional(),
75
+ data: z.array(z.object({
76
+ view_name: z.string(),
77
+ view_text: z.string().nullable(),
78
+ })).optional(),
79
+ count: z.number().int().optional(),
80
+ };
81
+ const listIndexesOutputSchema = {
82
+ success: z.boolean(),
83
+ error: z.string().optional(),
84
+ data: z.array(z.object({
85
+ index_name: z.string(),
86
+ index_schema: z.string(),
87
+ is_unique: z.string(),
88
+ column_names: z.string(),
89
+ })).optional(),
90
+ count: z.number().int().optional(),
91
+ };
92
+ const tableConstraintsOutputSchema = {
93
+ success: z.boolean(),
94
+ error: z.string().optional(),
95
+ data: z.array(z.object({
96
+ constraint_name: z.string(),
97
+ constraint_type: z.string(),
98
+ column_name: z.string(),
99
+ ordinal_position: z.number(),
100
+ referenced_table_schema: z.string().nullable(),
101
+ referenced_table_name: z.string().nullable(),
102
+ referenced_column_name: z.string().nullable(),
103
+ })).optional(),
104
+ count: z.number().int().optional(),
105
+ };
22
106
  /**
23
107
  * Creates a tool handler wrapper that applies rate limiting and standardizes responses.
24
108
  * Eliminates boilerplate code across all tool registrations.
@@ -31,24 +115,35 @@ export function withToolHandler(handler, errorMessage, sessionContext) {
31
115
  return async (args) => {
32
116
  // Check rate limit
33
117
  const rateLimiter = getRateLimiter();
34
- const rateResult = rateLimiter.checkLimit();
118
+ const rateResult = rateLimiter.checkLimit(sessionContext?.sessionId ?? 'stdio');
35
119
  if (!rateResult.allowed) {
36
120
  const error = rateLimiter.formatError(rateResult);
121
+ const structured = { success: false, error: error.error };
37
122
  return {
38
123
  content: [{ type: 'text', text: JSON.stringify(error, null, 2) }],
124
+ structuredContent: structured,
39
125
  isError: true,
40
126
  };
41
127
  }
42
128
  // Execute the tool with optional sessionId
43
129
  const result = await handler(args, sessionContext?.sessionId);
44
130
  if (!result.success) {
131
+ const structured = {
132
+ success: false,
133
+ error: result.error ?? errorMessage,
134
+ ...('violations' in result && result.violations
135
+ ? { violations: result.violations }
136
+ : {}),
137
+ };
45
138
  return {
46
139
  content: [{ type: 'text', text: result.error ?? errorMessage }],
140
+ structuredContent: structured,
47
141
  isError: true,
48
142
  };
49
143
  }
50
144
  return {
51
145
  content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
146
+ structuredContent: result,
52
147
  };
53
148
  };
54
149
  }
@@ -83,12 +178,13 @@ export function createServer(sessionConfig, sessionId) {
83
178
  server.registerTool('execute_query', {
84
179
  title: 'Execute SQL Query',
85
180
  description: 'Execute a read-only SQL SELECT query against the IBM DB2i database. Only SELECT statements are allowed for security. Results are limited by default to prevent large result sets.',
86
- annotations: { readOnlyHint: true },
181
+ annotations: READ_ONLY_ANNOTATIONS,
87
182
  inputSchema: {
88
183
  sql: z.string().describe('SQL SELECT query to execute'),
89
184
  params: z.array(z.unknown()).optional().describe('Query parameters for prepared statement'),
90
- limit: z.number().optional().default(1000).describe('Maximum number of rows to return (default: 1000, max: configured via QUERY_MAX_LIMIT)'),
185
+ limit: z.number().int().positive().optional().default(1000).describe('Maximum number of rows to return (default: 1000, max: configured via QUERY_MAX_LIMIT)'),
91
186
  },
187
+ outputSchema: queryOutputSchema,
92
188
  }, withToolHandler((args, sessionId) => executeQueryTool({
93
189
  sql: args.sql,
94
190
  params: args.params,
@@ -99,20 +195,22 @@ export function createServer(sessionConfig, sessionId) {
99
195
  server.registerTool('list_schemas', {
100
196
  title: 'List Schemas',
101
197
  description: 'List all schemas (libraries) in the IBM DB2i database. Optionally filter by name pattern using * as wildcard.',
102
- annotations: { readOnlyHint: true },
198
+ annotations: READ_ONLY_ANNOTATIONS,
103
199
  inputSchema: {
104
200
  filter: z.string().optional().describe('Filter pattern for schema names. Use * as wildcard. Example: "QSYS*" matches schemas starting with QSYS'),
105
201
  },
202
+ outputSchema: listSchemasOutputSchema,
106
203
  }, withToolHandler((args, sessionId) => listSchemasTool({ filter: args.filter, sessionId }), 'Failed to list schemas', sessionContext));
107
204
  // Register list_tables tool
108
205
  server.registerTool('list_tables', {
109
206
  title: 'List Tables',
110
207
  description: `List all tables in a schema (library). ${sessionConfig ? 'Uses session default schema if not provided.' : 'Uses DB2I_SCHEMA env var if schema not provided.'} Optionally filter by name pattern using * as wildcard.`,
111
- annotations: { readOnlyHint: true },
208
+ annotations: READ_ONLY_ANNOTATIONS,
112
209
  inputSchema: {
113
210
  schema: z.string().optional().describe(`Schema (library) name to list tables from. ${sessionConfig ? 'Uses session default schema if not provided.' : 'Uses DB2I_SCHEMA env var if not provided.'}`),
114
211
  filter: z.string().optional().describe('Filter pattern for table names. Use * as wildcard. Example: "CUST*" matches tables starting with CUST'),
115
212
  },
213
+ outputSchema: listTablesOutputSchema,
116
214
  }, withToolHandler((args, sessionId) => listTablesTool({
117
215
  schema: args.schema ?? getDefaultSchema(),
118
216
  filter: args.filter,
@@ -122,11 +220,12 @@ export function createServer(sessionConfig, sessionId) {
122
220
  server.registerTool('describe_table', {
123
221
  title: 'Describe Table',
124
222
  description: `Get detailed column information for a specific table including data types, lengths, nullability, defaults, and CCSID. ${sessionConfig ? 'Uses session default schema if not provided.' : 'Uses DB2I_SCHEMA env var if schema not provided.'}`,
125
- annotations: { readOnlyHint: true },
223
+ annotations: READ_ONLY_ANNOTATIONS,
126
224
  inputSchema: {
127
225
  schema: z.string().optional().describe(`Schema (library) name containing the table. ${sessionConfig ? 'Uses session default schema if not provided.' : 'Uses DB2I_SCHEMA env var if not provided.'}`),
128
226
  table: z.string().describe('Table name to describe'),
129
227
  },
228
+ outputSchema: describeTableOutputSchema,
130
229
  }, withToolHandler((args, sessionId) => describeTableTool({
131
230
  schema: args.schema ?? getDefaultSchema(),
132
231
  table: args.table,
@@ -136,11 +235,12 @@ export function createServer(sessionConfig, sessionId) {
136
235
  server.registerTool('list_views', {
137
236
  title: 'List Views',
138
237
  description: `List all views in a schema (library). ${sessionConfig ? 'Uses session default schema if not provided.' : 'Uses DB2I_SCHEMA env var if schema not provided.'} Optionally filter by name pattern using * as wildcard.`,
139
- annotations: { readOnlyHint: true },
238
+ annotations: READ_ONLY_ANNOTATIONS,
140
239
  inputSchema: {
141
240
  schema: z.string().optional().describe(`Schema (library) name to list views from. ${sessionConfig ? 'Uses session default schema if not provided.' : 'Uses DB2I_SCHEMA env var if not provided.'}`),
142
241
  filter: z.string().optional().describe('Filter pattern for view names. Use * as wildcard.'),
143
242
  },
243
+ outputSchema: listViewsOutputSchema,
144
244
  }, withToolHandler((args, sessionId) => listViewsTool({
145
245
  schema: args.schema ?? getDefaultSchema(),
146
246
  filter: args.filter,
@@ -150,11 +250,12 @@ export function createServer(sessionConfig, sessionId) {
150
250
  server.registerTool('list_indexes', {
151
251
  title: 'List Indexes',
152
252
  description: `List all indexes for a specific table including uniqueness and column information. ${sessionConfig ? 'Uses session default schema if not provided.' : 'Uses DB2I_SCHEMA env var if schema not provided.'}`,
153
- annotations: { readOnlyHint: true },
253
+ annotations: READ_ONLY_ANNOTATIONS,
154
254
  inputSchema: {
155
255
  schema: z.string().optional().describe(`Schema (library) name containing the table. ${sessionConfig ? 'Uses session default schema if not provided.' : 'Uses DB2I_SCHEMA env var if not provided.'}`),
156
256
  table: z.string().describe('Table name to list indexes for'),
157
257
  },
258
+ outputSchema: listIndexesOutputSchema,
158
259
  }, withToolHandler((args, sessionId) => listIndexesTool({
159
260
  schema: args.schema ?? getDefaultSchema(),
160
261
  table: args.table,
@@ -164,11 +265,12 @@ export function createServer(sessionConfig, sessionId) {
164
265
  server.registerTool('get_table_constraints', {
165
266
  title: 'Get Table Constraints',
166
267
  description: `Get all constraints (primary keys, foreign keys, unique constraints) for a specific table. ${sessionConfig ? 'Uses session default schema if not provided.' : 'Uses DB2I_SCHEMA env var if schema not provided.'}`,
167
- annotations: { readOnlyHint: true },
268
+ annotations: READ_ONLY_ANNOTATIONS,
168
269
  inputSchema: {
169
270
  schema: z.string().optional().describe(`Schema (library) name containing the table. ${sessionConfig ? 'Uses session default schema if not provided.' : 'Uses DB2I_SCHEMA env var if not provided.'}`),
170
271
  table: z.string().describe('Table name to get constraints for'),
171
272
  },
273
+ outputSchema: tableConstraintsOutputSchema,
172
274
  }, withToolHandler((args, sessionId) => getTableConstraintsTool({
173
275
  schema: args.schema ?? getDefaultSchema(),
174
276
  table: args.table,
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC,CAkDD"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC,CAyCD"}
@@ -5,6 +5,7 @@ import { executeQuery } from '../db/connection.js';
5
5
  import { validateQuery } from '../db/queries.js';
6
6
  import { createChildLogger } from '../utils/logger.js';
7
7
  import { applyQueryLimit, getQueryLimitConfig } from '../config.js';
8
+ import { applySqlRowLimit } from './sqlLimit.js';
8
9
  const log = createChildLogger({ component: 'query-tool' });
9
10
  /**
10
11
  * Execute a read-only SQL query
@@ -27,22 +28,14 @@ export async function executeQueryTool(input) {
27
28
  };
28
29
  }
29
30
  try {
30
- // Add FETCH FIRST clause if not already present to limit results
31
- let limitedSql = sql.trim();
32
- if (!limitedSql.toUpperCase().includes('FETCH FIRST') &&
33
- !limitedSql.toUpperCase().includes('LIMIT')) {
34
- // Remove trailing semicolon if present
35
- if (limitedSql.endsWith(';')) {
36
- limitedSql = limitedSql.slice(0, -1);
37
- }
38
- limitedSql = `${limitedSql} FETCH FIRST ${effectiveLimit} ROWS ONLY`;
39
- }
31
+ const limitedSql = applySqlRowLimit(sql, effectiveLimit);
40
32
  const result = await executeQuery(limitedSql, params, sessionId);
41
- log.info({ rowCount: result.rows.length, effectiveLimit }, 'Query executed successfully');
33
+ const rows = result.rows.slice(0, effectiveLimit);
34
+ log.info({ rowCount: rows.length, effectiveLimit }, 'Query executed successfully');
42
35
  return {
43
36
  success: true,
44
- data: result.rows,
45
- rowCount: result.rows.length,
37
+ data: rows,
38
+ rowCount: rows.length,
46
39
  limitApplied: effectiveLimit,
47
40
  };
48
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;AAa3D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAwB;IAQ7D,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC9C,MAAM,WAAW,GAAG,mBAAmB,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAEjE,GAAG,CAAC,KAAK,CACP,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EACzH,wBAAwB,CACzB,CAAC;IAEF,qEAAqE;IACrE,MAAM,gBAAgB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,UAAU,EAAE,EAAE,4CAA4C,CAAC,CAAC;QACpG,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,+BAA+B,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9E,UAAU,EAAE,gBAAgB,CAAC,UAAU;SACxC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,MAAmB,EAAE,SAAS,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAElD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,6BAA6B,CAAC,CAAC;QACnF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,YAAY,EAAE,cAAc;SAC7B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;QAClF,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACpD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,OAAO;SACf,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Apply a FETCH FIRST row cap to a SELECT statement.
3
+ *
4
+ * Only a trailing FETCH FIRST / LIMIT clause is treated as an existing
5
+ * limit. Column names such as CREDIT_LIMIT or string literals containing
6
+ * "LIMIT" do not skip the cap. An existing trailing clause is clamped
7
+ * to effectiveLimit rather than trusted as-is.
8
+ */
9
+ /**
10
+ * Return SQL with a FETCH FIRST clause that does not exceed effectiveLimit.
11
+ */
12
+ export declare function applySqlRowLimit(sql: string, effectiveLimit: number): string;
13
+ //# sourceMappingURL=sqlLimit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlLimit.d.ts","sourceRoot":"","sources":["../../src/tools/sqlLimit.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAkB5E"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Apply a FETCH FIRST row cap to a SELECT statement.
3
+ *
4
+ * Only a trailing FETCH FIRST / LIMIT clause is treated as an existing
5
+ * limit. Column names such as CREDIT_LIMIT or string literals containing
6
+ * "LIMIT" do not skip the cap. An existing trailing clause is clamped
7
+ * to effectiveLimit rather than trusted as-is.
8
+ */
9
+ const TRAILING_LIMIT_RE = /\b(?:FETCH\s+FIRST\s+(\d+)\s+ROWS?\s+ONLY|LIMIT\s+(\d+))\s*;?\s*$/i;
10
+ /**
11
+ * Return SQL with a FETCH FIRST clause that does not exceed effectiveLimit.
12
+ */
13
+ export function applySqlRowLimit(sql, effectiveLimit) {
14
+ const trimmed = sql.trim();
15
+ const match = TRAILING_LIMIT_RE.exec(trimmed);
16
+ if (match) {
17
+ const existing = Number.parseInt(match[1] ?? match[2] ?? '', 10);
18
+ const clamped = Number.isFinite(existing)
19
+ ? Math.min(existing, effectiveLimit)
20
+ : effectiveLimit;
21
+ const withoutClause = trimmed.slice(0, match.index).trimEnd();
22
+ return `${withoutClause} FETCH FIRST ${clamped} ROWS ONLY`;
23
+ }
24
+ const withoutSemicolon = trimmed.endsWith(';')
25
+ ? trimmed.slice(0, -1).trimEnd()
26
+ : trimmed;
27
+ return `${withoutSemicolon} FETCH FIRST ${effectiveLimit} ROWS ONLY`;
28
+ }
29
+ //# sourceMappingURL=sqlLimit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlLimit.js","sourceRoot":"","sources":["../../src/tools/sqlLimit.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,iBAAiB,GACrB,oEAAoE,CAAC;AAEvE;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,cAAsB;IAClE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE9C,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACvC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC;YACpC,CAAC,CAAC,cAAc,CAAC;QACnB,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAC9D,OAAO,GAAG,aAAa,gBAAgB,OAAO,YAAY,CAAC;IAC7D,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC5C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;QAChC,CAAC,CAAC,OAAO,CAAC;IAEZ,OAAO,GAAG,gBAAgB,gBAAgB,cAAc,YAAY,CAAC;AACvE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAgB,EAAE,KAAK,OAAO,EAA+B,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,IAAI,MAAM,WAAW,CAAC;AAsF7B;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CA+avC;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAqE3E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B1F"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAgB,EAAE,KAAK,OAAO,EAA+B,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,IAAI,MAAM,WAAW,CAAC;AA6G7B;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CA8bvC;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAqE3E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B1F"}
@@ -19,6 +19,7 @@ import { getHttpConfig, loadConfig, loadPartialConfig, } from '../config.js';
19
19
  import { createChildLogger } from '../utils/logger.js';
20
20
  import { getTokenManager, authMiddleware, authRateLimitMiddleware, recordFailedAuthAttempt, clearAuthRateLimit, } from '../auth/index.js';
21
21
  import { getSessionManager } from './sessionManager.js';
22
+ import { isSessionOwnedByCaller, resolveCallerSessionKey } from './sessionAuth.js';
22
23
  import { createServer as createMcpServer, SERVER_NAME, SERVER_VERSION } from '../server.js';
23
24
  import { getOpenApiSpec } from '../openapi.js';
24
25
  import { initializeSessionPool, testSessionConnection, closeSessionPool, closeAllSessionPools } from '../db/connection.js';
@@ -69,6 +70,27 @@ function validateAuthRequest(body) {
69
70
  },
70
71
  };
71
72
  }
73
+ /**
74
+ * Whether Origin matches the request Host (same-origin browser traffic).
75
+ */
76
+ function isSameOriginRequest(origin, req) {
77
+ try {
78
+ return new URL(origin).host === req.get('host');
79
+ }
80
+ catch {
81
+ return false;
82
+ }
83
+ }
84
+ /**
85
+ * JSON-RPC 404 used when a session is missing or not owned by the caller.
86
+ */
87
+ function sessionNotFoundBody() {
88
+ return {
89
+ jsonrpc: '2.0',
90
+ error: { code: -32001, message: 'Session not found or expired' },
91
+ id: null,
92
+ };
93
+ }
72
94
  /**
73
95
  * Create the Express application
74
96
  */
@@ -81,22 +103,28 @@ export function createHttpApp() {
81
103
  app.use((req, res, next) => {
82
104
  res.setHeader('X-Content-Type-Options', 'nosniff');
83
105
  res.setHeader('X-Frame-Options', 'DENY');
84
- res.setHeader('X-XSS-Protection', '1; mode=block');
85
106
  next();
86
107
  });
87
- // CORS - validate against allowed origins list
88
- // By default (MCP_CORS_ORIGINS not set), no CORS headers are sent = same-origin only
108
+ // CORS and Origin validation (Streamable HTTP requires Origin checks)
109
+ // By default (MCP_CORS_ORIGINS not set), only same-origin or missing Origin is allowed
89
110
  // Set MCP_CORS_ORIGINS='*' to allow all origins, or comma-separated list for specific origins
90
111
  app.use((req, res, next) => {
91
112
  const origin = req.headers.origin;
92
113
  const allowedOrigins = httpConfig.corsOrigins;
93
- if (origin && allowedOrigins.length > 0) {
94
- // CORS is explicitly configured - check if origin is allowed
95
- const isAllowed = allowedOrigins.includes('*') || // Wildcard = allow all
96
- allowedOrigins.includes(origin); // Specific origin match
97
- if (isAllowed) {
114
+ if (origin) {
115
+ const isConfiguredOrigin = allowedOrigins.includes('*') ||
116
+ allowedOrigins.includes(origin);
117
+ const isSameOrigin = isSameOriginRequest(origin, req);
118
+ const isAllowed = isConfiguredOrigin || isSameOrigin;
119
+ if (!isAllowed) {
120
+ res.status(403).json({
121
+ error: 'forbidden',
122
+ error_description: 'Origin not allowed',
123
+ });
124
+ return;
125
+ }
126
+ if (isConfiguredOrigin) {
98
127
  res.setHeader('Access-Control-Allow-Origin', origin);
99
- // Only set credentials when origin is explicitly allowed (not wildcard)
100
128
  if (!allowedOrigins.includes('*')) {
101
129
  res.setHeader('Access-Control-Allow-Credentials', 'true');
102
130
  }
@@ -104,8 +132,6 @@ export function createHttpApp() {
104
132
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, Mcp-Session-Id, Accept');
105
133
  }
106
134
  }
107
- // When allowedOrigins is empty (default), no CORS headers are set.
108
- // Browser will enforce same-origin policy, blocking cross-origin requests.
109
135
  if (req.method === 'OPTIONS') {
110
136
  res.status(204).end();
111
137
  return;
@@ -290,7 +316,7 @@ export function createHttpApp() {
290
316
  // Use a single shared pool for none/token modes (similar to stdio mode).
291
317
  // This pool persists for the server's lifetime and is cleaned up on shutdown
292
318
  // via closeAllSessionPools(). This is intentional connection reuse, not a leak.
293
- sessionKey = 'global';
319
+ sessionKey = resolveCallerSessionKey(httpConfig.authMode, authReq.authToken);
294
320
  }
295
321
  else {
296
322
  // Required mode - use per-user config from token
@@ -306,7 +332,7 @@ export function createHttpApp() {
306
332
  const session = authReq.tokenSession;
307
333
  const authToken = authReq.authToken;
308
334
  dbConfig = session.config;
309
- sessionKey = authToken;
335
+ sessionKey = resolveCallerSessionKey(httpConfig.authMode, authToken);
310
336
  }
311
337
  const sessionId = req.headers['mcp-session-id'];
312
338
  const sessionManager = getSessionManager();
@@ -315,12 +341,8 @@ export function createHttpApp() {
315
341
  if (sessionId) {
316
342
  // Existing session
317
343
  const mcpSession = sessionManager.getSession(sessionId);
318
- if (!mcpSession) {
319
- res.status(404).json({
320
- jsonrpc: '2.0',
321
- error: { code: -32001, message: 'Session not found or expired' },
322
- id: null,
323
- });
344
+ if (!mcpSession || !isSessionOwnedByCaller(mcpSession.authToken, sessionKey)) {
345
+ res.status(404).json(sessionNotFoundBody());
324
346
  return;
325
347
  }
326
348
  sessionManager.incrementActiveRequests(sessionId);
@@ -413,6 +435,7 @@ export function createHttpApp() {
413
435
  });
414
436
  // MCP endpoint - GET (SSE for stateful mode)
415
437
  app.get('/mcp', authMiddleware, async (req, res) => {
438
+ const authReq = req;
416
439
  const httpConfig = getHttpConfig();
417
440
  if (httpConfig.sessionMode !== 'stateful') {
418
441
  res.status(405).json({
@@ -429,9 +452,10 @@ export function createHttpApp() {
429
452
  });
430
453
  return;
431
454
  }
455
+ const sessionKey = resolveCallerSessionKey(httpConfig.authMode, authReq.authToken);
432
456
  const sessionManager = getSessionManager();
433
457
  const mcpSession = sessionManager.getSession(sessionId);
434
- if (!mcpSession) {
458
+ if (!mcpSession || !isSessionOwnedByCaller(mcpSession.authToken, sessionKey)) {
435
459
  res.status(404).json({
436
460
  error: 'not_found',
437
461
  error_description: 'Session not found or expired',
@@ -442,6 +466,7 @@ export function createHttpApp() {
442
466
  });
443
467
  // MCP endpoint - DELETE (close session)
444
468
  app.delete('/mcp', authMiddleware, async (req, res) => {
469
+ const authReq = req;
445
470
  const sessionId = req.headers['mcp-session-id'];
446
471
  if (!sessionId) {
447
472
  res.status(400).json({
@@ -450,7 +475,16 @@ export function createHttpApp() {
450
475
  });
451
476
  return;
452
477
  }
478
+ const sessionKey = resolveCallerSessionKey(httpConfig.authMode, authReq.authToken);
453
479
  const sessionManager = getSessionManager();
480
+ const mcpSession = sessionManager.getSession(sessionId);
481
+ if (!mcpSession || !isSessionOwnedByCaller(mcpSession.authToken, sessionKey)) {
482
+ res.status(404).json({
483
+ error: 'not_found',
484
+ error_description: 'Session not found',
485
+ });
486
+ return;
487
+ }
454
488
  const closed = await sessionManager.closeSession(sessionId);
455
489
  if (closed) {
456
490
  res.json({ status: 'session_closed', sessionId });
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,5 @@
5
5
  */
6
6
  export { createHttpApp, startHttpServer, shutdownHttpServer, } from './http.js';
7
7
  export { getSessionManager, SessionManager, type McpSession, } from './sessionManager.js';
8
+ export { GLOBAL_SESSION_KEY, resolveCallerSessionKey, isSessionOwnedByCaller, } from './sessionAuth.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,UAAU,GAChB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,UAAU,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC"}
@@ -5,4 +5,5 @@
5
5
  */
6
6
  export { createHttpApp, startHttpServer, shutdownHttpServer, } from './http.js';
7
7
  export { getSessionManager, SessionManager, } from './sessionManager.js';
8
+ export { GLOBAL_SESSION_KEY, resolveCallerSessionKey, isSessionOwnedByCaller, } from './sessionAuth.js';
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,iBAAiB,EACjB,cAAc,GAEf,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,iBAAiB,EACjB,cAAc,GAEf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Session ownership helpers for HTTP MCP endpoints.
3
+ *
4
+ * Stateful sessions are keyed by the caller identity (auth token in
5
+ * required mode, or the shared "global" key in none/token modes).
6
+ * Request handlers must reject a Mcp-Session-Id that belongs to a
7
+ * different caller.
8
+ */
9
+ import type { AuthMode } from '../config.js';
10
+ /** Shared pool / session key used when HTTP auth is none or static token. */
11
+ export declare const GLOBAL_SESSION_KEY = "global";
12
+ /**
13
+ * Resolve the session key for the current caller.
14
+ *
15
+ * - none / token: one shared key ("global")
16
+ * - required: the validated Bearer token
17
+ */
18
+ export declare function resolveCallerSessionKey(authMode: AuthMode, authToken?: string): string;
19
+ /**
20
+ * Whether a stored MCP session belongs to the current caller.
21
+ */
22
+ export declare function isSessionOwnedByCaller(sessionAuthToken: string, callerSessionKey: string): boolean;
23
+ //# sourceMappingURL=sessionAuth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionAuth.d.ts","sourceRoot":"","sources":["../../src/transports/sessionAuth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAET"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Session ownership helpers for HTTP MCP endpoints.
3
+ *
4
+ * Stateful sessions are keyed by the caller identity (auth token in
5
+ * required mode, or the shared "global" key in none/token modes).
6
+ * Request handlers must reject a Mcp-Session-Id that belongs to a
7
+ * different caller.
8
+ */
9
+ /** Shared pool / session key used when HTTP auth is none or static token. */
10
+ export const GLOBAL_SESSION_KEY = 'global';
11
+ /**
12
+ * Resolve the session key for the current caller.
13
+ *
14
+ * - none / token: one shared key ("global")
15
+ * - required: the validated Bearer token
16
+ */
17
+ export function resolveCallerSessionKey(authMode, authToken) {
18
+ if (authMode === 'none' || authMode === 'token') {
19
+ return GLOBAL_SESSION_KEY;
20
+ }
21
+ return authToken ?? '';
22
+ }
23
+ /**
24
+ * Whether a stored MCP session belongs to the current caller.
25
+ */
26
+ export function isSessionOwnedByCaller(sessionAuthToken, callerSessionKey) {
27
+ return sessionAuthToken === callerSessionKey;
28
+ }
29
+ //# sourceMappingURL=sessionAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionAuth.js","sourceRoot":"","sources":["../../src/transports/sessionAuth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAkB,EAClB,SAAkB;IAElB,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChD,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,OAAO,SAAS,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,gBAAwB,EACxB,gBAAwB;IAExB,OAAO,gBAAgB,KAAK,gBAAgB,CAAC;AAC/C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-server-db2i",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "MCP server for IBM DB2 for i (DB2i) database queries and metadata inspection",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -42,25 +42,25 @@
42
42
  },
43
43
  "homepage": "https://github.com/Strom-Capital/mcp-server-db2i#readme",
44
44
  "dependencies": {
45
- "@modelcontextprotocol/sdk": "^1.25.2",
45
+ "@modelcontextprotocol/sdk": "^1.30.0",
46
46
  "express": "^5.2.1",
47
47
  "node-jt400": "^6.0.1",
48
48
  "node-sql-parser": "^5.4.0",
49
- "pino": "^10.2.0",
49
+ "pino": "^10.3.1",
50
50
  "pino-pretty": "^13.1.3",
51
- "zod": "^4.3.5"
51
+ "zod": "^4.6.5"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@eslint/js": "^9.39.2",
55
55
  "@types/express": "^5.0.6",
56
56
  "@types/node": "^25.0.9",
57
- "@vitest/coverage-v8": "^4.0.17",
57
+ "@vitest/coverage-v8": "^4.1.11",
58
58
  "eslint": "^9.39.2",
59
59
  "knip": "^5.81.0",
60
- "tsx": "^4.21.0",
60
+ "tsx": "^4.23.15",
61
61
  "typescript": "^5.9.3",
62
- "typescript-eslint": "^8.53.0",
63
- "vitest": "^4.0.17"
62
+ "typescript-eslint": "^8.70.1",
63
+ "vitest": "^4.1.11"
64
64
  },
65
65
  "engines": {
66
66
  "node": ">=20.6"