@exabugs/dynamodb-client 1.13.1 → 1.14.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.
- package/CHANGELOG.md +27 -0
- package/README.md +5 -15
- package/bin/dynamodb-access-check.js +6 -0
- package/dist/server/handler.cjs +3 -3
- package/dist/server/handler.cjs.map +1 -1
- package/dist/server/media-handler.cjs +2 -2
- package/dist/server/media-process-handler-dlq.cjs +2 -2
- package/dist/server/media-process-handler.cjs +2 -2
- package/dist/server/operations/parameterConverter.js +3 -3
- package/dist/server/operations/parameterConverter.js.map +1 -1
- package/dist/tools/dynamodb-access-check/allowlist.d.ts +39 -0
- package/dist/tools/dynamodb-access-check/allowlist.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/allowlist.js +34 -0
- package/dist/tools/dynamodb-access-check/allowlist.js.map +1 -0
- package/dist/tools/dynamodb-access-check/check.d.ts +24 -0
- package/dist/tools/dynamodb-access-check/check.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/check.js +40 -0
- package/dist/tools/dynamodb-access-check/check.js.map +1 -0
- package/dist/tools/dynamodb-access-check/cli.d.ts +10 -0
- package/dist/tools/dynamodb-access-check/cli.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/cli.js +96 -0
- package/dist/tools/dynamodb-access-check/cli.js.map +1 -0
- package/dist/tools/dynamodb-access-check/forbidden.d.ts +15 -0
- package/dist/tools/dynamodb-access-check/forbidden.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/forbidden.js +34 -0
- package/dist/tools/dynamodb-access-check/forbidden.js.map +1 -0
- package/dist/tools/dynamodb-access-check/glob.d.ts +8 -0
- package/dist/tools/dynamodb-access-check/glob.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/glob.js +37 -0
- package/dist/tools/dynamodb-access-check/glob.js.map +1 -0
- package/dist/tools/dynamodb-access-check/index.d.ts +5 -0
- package/dist/tools/dynamodb-access-check/index.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/index.js +4 -0
- package/dist/tools/dynamodb-access-check/index.js.map +1 -0
- package/dist/tools/dynamodb-access-check/run.d.ts +2 -0
- package/dist/tools/dynamodb-access-check/run.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/run.js +3 -0
- package/dist/tools/dynamodb-access-check/run.js.map +1 -0
- package/dist/tools/dynamodb-access-check/scan.d.ts +25 -0
- package/dist/tools/dynamodb-access-check/scan.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/scan.js +151 -0
- package/dist/tools/dynamodb-access-check/scan.js.map +1 -0
- package/dist/tools/eslint/index.d.ts +28 -0
- package/dist/tools/eslint/index.d.ts.map +1 -0
- package/dist/tools/eslint/index.js +34 -0
- package/dist/tools/eslint/index.js.map +1 -0
- package/docs/DYNAMODB_ACCESS.md +152 -0
- package/package.json +11 -11
- package/terraform/media/main.tf +9 -0
- package/bin/dynamodb-mcp.js +0 -12
- package/dist/mcp/adapter.d.ts +0 -36
- package/dist/mcp/adapter.d.ts.map +0 -1
- package/dist/mcp/adapter.js +0 -213
- package/dist/mcp/adapter.js.map +0 -1
- package/dist/mcp/cli.d.ts +0 -2
- package/dist/mcp/cli.d.ts.map +0 -1
- package/dist/mcp/cli.js +0 -122
- package/dist/mcp/cli.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -7
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js +0 -6
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -18
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -127
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/tools/deleteMany.d.ts +0 -12
- package/dist/mcp/tools/deleteMany.d.ts.map +0 -1
- package/dist/mcp/tools/deleteMany.js +0 -24
- package/dist/mcp/tools/deleteMany.js.map +0 -1
- package/dist/mcp/tools/deleteOne.d.ts +0 -12
- package/dist/mcp/tools/deleteOne.d.ts.map +0 -1
- package/dist/mcp/tools/deleteOne.js +0 -24
- package/dist/mcp/tools/deleteOne.js.map +0 -1
- package/dist/mcp/tools/find.d.ts +0 -12
- package/dist/mcp/tools/find.d.ts.map +0 -1
- package/dist/mcp/tools/find.js +0 -56
- package/dist/mcp/tools/find.js.map +0 -1
- package/dist/mcp/tools/findMany.d.ts +0 -12
- package/dist/mcp/tools/findMany.d.ts.map +0 -1
- package/dist/mcp/tools/findMany.js +0 -28
- package/dist/mcp/tools/findMany.js.map +0 -1
- package/dist/mcp/tools/findManyReference.d.ts +0 -12
- package/dist/mcp/tools/findManyReference.d.ts.map +0 -1
- package/dist/mcp/tools/findManyReference.js +0 -32
- package/dist/mcp/tools/findManyReference.js.map +0 -1
- package/dist/mcp/tools/findOne.d.ts +0 -12
- package/dist/mcp/tools/findOne.d.ts.map +0 -1
- package/dist/mcp/tools/findOne.js +0 -24
- package/dist/mcp/tools/findOne.js.map +0 -1
- package/dist/mcp/tools/generated.d.ts +0 -11
- package/dist/mcp/tools/generated.d.ts.map +0 -1
- package/dist/mcp/tools/generated.js +0 -171
- package/dist/mcp/tools/generated.js.map +0 -1
- package/dist/mcp/tools/index.d.ts +0 -13
- package/dist/mcp/tools/index.d.ts.map +0 -1
- package/dist/mcp/tools/index.js +0 -29
- package/dist/mcp/tools/index.js.map +0 -1
- package/dist/mcp/tools/insertMany.d.ts +0 -12
- package/dist/mcp/tools/insertMany.d.ts.map +0 -1
- package/dist/mcp/tools/insertMany.js +0 -28
- package/dist/mcp/tools/insertMany.js.map +0 -1
- package/dist/mcp/tools/insertOne.d.ts +0 -12
- package/dist/mcp/tools/insertOne.d.ts.map +0 -1
- package/dist/mcp/tools/insertOne.js +0 -24
- package/dist/mcp/tools/insertOne.js.map +0 -1
- package/dist/mcp/tools/updateMany.d.ts +0 -12
- package/dist/mcp/tools/updateMany.d.ts.map +0 -1
- package/dist/mcp/tools/updateMany.js +0 -28
- package/dist/mcp/tools/updateMany.js.map +0 -1
- package/dist/mcp/tools/updateOne.d.ts +0 -12
- package/dist/mcp/tools/updateOne.d.ts.map +0 -1
- package/dist/mcp/tools/updateOne.js +0 -38
- package/dist/mcp/tools/updateOne.js.map +0 -1
- package/dist/mcp/types.d.ts +0 -50
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/mcp/types.js +0 -49
- package/dist/mcp/types.js.map +0 -1
package/dist/mcp/adapter.js
DELETED
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Adapter Layer
|
|
3
|
-
* MCPツール呼び出しを既存のLambda操作に変換
|
|
4
|
-
*/
|
|
5
|
-
import { randomUUID } from 'node:crypto';
|
|
6
|
-
import { executeOperation } from '../server/operations/operationDispatcher.js';
|
|
7
|
-
import { createLogger } from '../shared/index.js';
|
|
8
|
-
import { MCPError, MCPErrorCode } from './types.js';
|
|
9
|
-
/**
|
|
10
|
-
* ロガーインスタンス
|
|
11
|
-
*/
|
|
12
|
-
const logger = createLogger({
|
|
13
|
-
service: 'mcp-adapter',
|
|
14
|
-
level: process.env.LOG_LEVEL || 'info',
|
|
15
|
-
});
|
|
16
|
-
/**
|
|
17
|
-
* MCPアダプター
|
|
18
|
-
* MCPツール呼び出しをLambda操作に変換する
|
|
19
|
-
*/
|
|
20
|
-
export class MCPAdapter {
|
|
21
|
-
constructor(config) {
|
|
22
|
-
// 環境変数を設定(既存のLambda操作が使用)
|
|
23
|
-
if (config.tableName) {
|
|
24
|
-
process.env.TABLE_NAME = config.tableName;
|
|
25
|
-
process.env.DYNAMODB_TABLE = config.tableName;
|
|
26
|
-
}
|
|
27
|
-
if (config.region) {
|
|
28
|
-
process.env.AWS_REGION = config.region;
|
|
29
|
-
}
|
|
30
|
-
if (config.profile) {
|
|
31
|
-
process.env.AWS_PROFILE = config.profile;
|
|
32
|
-
}
|
|
33
|
-
if (config.accessKeyId) {
|
|
34
|
-
process.env.AWS_ACCESS_KEY_ID = config.accessKeyId;
|
|
35
|
-
}
|
|
36
|
-
if (config.secretAccessKey) {
|
|
37
|
-
process.env.AWS_SECRET_ACCESS_KEY = config.secretAccessKey;
|
|
38
|
-
}
|
|
39
|
-
logger.info('MCPAdapter initialized', {
|
|
40
|
-
tableName: config.tableName,
|
|
41
|
-
region: config.region || 'default',
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* MCPツールを実行
|
|
46
|
-
* @param toolName ツール名
|
|
47
|
-
* @param args ツール引数
|
|
48
|
-
* @returns 実行結果
|
|
49
|
-
*/
|
|
50
|
-
async executeTool(toolName, args) {
|
|
51
|
-
const requestId = this.generateRequestId();
|
|
52
|
-
logger.debug('Executing MCP tool', {
|
|
53
|
-
requestId,
|
|
54
|
-
toolName,
|
|
55
|
-
args,
|
|
56
|
-
});
|
|
57
|
-
try {
|
|
58
|
-
// MCPツール名をLambda操作に変換
|
|
59
|
-
const apiRequest = this.convertToolToApiRequest(toolName, args);
|
|
60
|
-
// 既存のLambda操作を実行
|
|
61
|
-
const result = await executeOperation(apiRequest, requestId);
|
|
62
|
-
logger.debug('MCP tool executed successfully', {
|
|
63
|
-
requestId,
|
|
64
|
-
toolName,
|
|
65
|
-
});
|
|
66
|
-
return result;
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
// エラーを分類して適切なMCPErrorに変換
|
|
70
|
-
const mcpError = this.handleError(error, toolName, requestId);
|
|
71
|
-
logger.error('MCP tool execution failed', {
|
|
72
|
-
requestId,
|
|
73
|
-
toolName,
|
|
74
|
-
errorCode: mcpError.code,
|
|
75
|
-
errorMessage: mcpError.message,
|
|
76
|
-
details: mcpError.details,
|
|
77
|
-
});
|
|
78
|
-
throw mcpError;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* エラーを処理してMCPErrorに変換
|
|
83
|
-
* @param error 元のエラー
|
|
84
|
-
* @param toolName ツール名
|
|
85
|
-
* @param requestId リクエストID
|
|
86
|
-
* @returns MCPError
|
|
87
|
-
*/
|
|
88
|
-
handleError(error, toolName, requestId) {
|
|
89
|
-
// すでにMCPErrorの場合はそのまま返す
|
|
90
|
-
if (error instanceof MCPError) {
|
|
91
|
-
return error;
|
|
92
|
-
}
|
|
93
|
-
// Errorオブジェクトの場合
|
|
94
|
-
if (error instanceof Error) {
|
|
95
|
-
// AWS SDK エラーの判定
|
|
96
|
-
if ('name' in error && typeof error.name === 'string') {
|
|
97
|
-
// DynamoDB関連エラー
|
|
98
|
-
if (error.name.includes('DynamoDB') ||
|
|
99
|
-
error.name.includes('ResourceNotFound') ||
|
|
100
|
-
error.name.includes('ValidationException')) {
|
|
101
|
-
return new MCPError(MCPErrorCode.DYNAMODB_ERROR, error.message, {
|
|
102
|
-
toolName,
|
|
103
|
-
requestId,
|
|
104
|
-
originalError: error.name,
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
// 認証関連エラー
|
|
108
|
-
if (error.name.includes('AccessDenied') ||
|
|
109
|
-
error.name.includes('UnauthorizedOperation') ||
|
|
110
|
-
error.name.includes('InvalidClientTokenId') ||
|
|
111
|
-
error.name.includes('SignatureDoesNotMatch')) {
|
|
112
|
-
return new MCPError(MCPErrorCode.AUTHENTICATION_ERROR, error.message, {
|
|
113
|
-
toolName,
|
|
114
|
-
requestId,
|
|
115
|
-
originalError: error.name,
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
// パラメータ関連エラー(メッセージから判定)
|
|
120
|
-
if (error.message.includes('Missing required parameter') ||
|
|
121
|
-
error.message.includes('required parameter')) {
|
|
122
|
-
return new MCPError(MCPErrorCode.MISSING_REQUIRED_PARAMETER, error.message, {
|
|
123
|
-
toolName,
|
|
124
|
-
requestId,
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
if (error.message.includes('Invalid parameter') || error.message.includes('invalid')) {
|
|
128
|
-
return new MCPError(MCPErrorCode.INVALID_PARAMETER, error.message, {
|
|
129
|
-
toolName,
|
|
130
|
-
requestId,
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
// その他のエラーは内部エラーとして扱う
|
|
134
|
-
return new MCPError(MCPErrorCode.INTERNAL_ERROR, error.message, {
|
|
135
|
-
toolName,
|
|
136
|
-
requestId,
|
|
137
|
-
stack: error.stack,
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
// 文字列エラーの場合
|
|
141
|
-
if (typeof error === 'string') {
|
|
142
|
-
return new MCPError(MCPErrorCode.INTERNAL_ERROR, error, {
|
|
143
|
-
toolName,
|
|
144
|
-
requestId,
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
// その他の不明なエラー
|
|
148
|
-
return new MCPError(MCPErrorCode.INTERNAL_ERROR, 'An unknown error occurred', {
|
|
149
|
-
toolName,
|
|
150
|
-
requestId,
|
|
151
|
-
error: String(error),
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* MCPツール名をAPIリクエストに変換
|
|
156
|
-
* @param toolName ツール名
|
|
157
|
-
* @param args ツール引数
|
|
158
|
-
* @returns APIリクエスト
|
|
159
|
-
*/
|
|
160
|
-
convertToolToApiRequest(toolName, args) {
|
|
161
|
-
// ツール名から操作名とリソース名を抽出
|
|
162
|
-
// 例: "dynamodb_find" -> { op: "find", resource: args.collection }
|
|
163
|
-
const toolPrefix = 'dynamodb_';
|
|
164
|
-
if (!toolName.startsWith(toolPrefix)) {
|
|
165
|
-
throw new MCPError(MCPErrorCode.INVALID_TOOL_NAME, `Invalid tool name: ${toolName}. Must start with "${toolPrefix}"`, { toolName });
|
|
166
|
-
}
|
|
167
|
-
// ツール名から操作名を抽出(キャメルケース)
|
|
168
|
-
// 例: "dynamodb_findOne" -> "findOne"
|
|
169
|
-
const operationCamelCase = toolName.substring(toolPrefix.length);
|
|
170
|
-
// キャメルケースをスネークケースに変換して検証
|
|
171
|
-
// 例: "findOne" -> "find_one"
|
|
172
|
-
const operationSnakeCase = operationCamelCase.replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
173
|
-
const resource = args.collection;
|
|
174
|
-
if (!resource) {
|
|
175
|
-
throw new MCPError(MCPErrorCode.MISSING_REQUIRED_PARAMETER, 'Missing required parameter: collection', { toolName, availableParams: Object.keys(args) });
|
|
176
|
-
}
|
|
177
|
-
// 操作名を検証(スネークケース形式)
|
|
178
|
-
const validOperations = [
|
|
179
|
-
'find',
|
|
180
|
-
'find_one',
|
|
181
|
-
'find_many',
|
|
182
|
-
'find_many_reference',
|
|
183
|
-
'insert_one',
|
|
184
|
-
'insert_many',
|
|
185
|
-
'update_one',
|
|
186
|
-
'update_many',
|
|
187
|
-
'delete_one',
|
|
188
|
-
'delete_many',
|
|
189
|
-
];
|
|
190
|
-
if (!validOperations.includes(operationSnakeCase)) {
|
|
191
|
-
throw new MCPError(MCPErrorCode.INVALID_OPERATION, `Unknown operation: ${operationSnakeCase}`, { toolName, operation: operationSnakeCase, validOperations });
|
|
192
|
-
}
|
|
193
|
-
// スネークケースをキャメルケースに変換(API呼び出し用)
|
|
194
|
-
// 例: "find_one" -> "findOne"
|
|
195
|
-
const camelCaseOp = operationSnakeCase.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
196
|
-
// collectionを除いたパラメータを抽出
|
|
197
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
198
|
-
const { collection: _, ...params } = args;
|
|
199
|
-
return {
|
|
200
|
-
op: camelCaseOp,
|
|
201
|
-
resource,
|
|
202
|
-
params,
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* リクエストIDを生成
|
|
207
|
-
* @returns リクエストID
|
|
208
|
-
*/
|
|
209
|
-
generateRequestId() {
|
|
210
|
-
return randomUUID();
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
//# sourceMappingURL=adapter.js.map
|
package/dist/mcp/adapter.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/mcp/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/cli.d.ts
DELETED
package/dist/mcp/cli.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/mcp/cli.ts"],"names":[],"mappings":""}
|
package/dist/mcp/cli.js
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DynamoDB Client MCP Server CLI
|
|
3
|
-
* CLIエントリポイント
|
|
4
|
-
*/
|
|
5
|
-
import { createLogger } from '../shared/index.js';
|
|
6
|
-
import { DynamoDBMCPServer } from './server.js';
|
|
7
|
-
/**
|
|
8
|
-
* ロガーインスタンス
|
|
9
|
-
*/
|
|
10
|
-
const logger = createLogger({
|
|
11
|
-
service: 'mcp-cli',
|
|
12
|
-
level: process.env.LOG_LEVEL || 'info',
|
|
13
|
-
});
|
|
14
|
-
/**
|
|
15
|
-
* 環境変数から設定を取得
|
|
16
|
-
*/
|
|
17
|
-
function getConfigFromEnv() {
|
|
18
|
-
// 必須パラメータのチェック
|
|
19
|
-
const tableName = process.env.DYNAMODB_TABLE;
|
|
20
|
-
if (!tableName) {
|
|
21
|
-
const errorMessage = 'DYNAMODB_TABLE environment variable is required';
|
|
22
|
-
logger.error(errorMessage);
|
|
23
|
-
console.error(`Error: ${errorMessage}`);
|
|
24
|
-
console.error('\nUsage:');
|
|
25
|
-
console.error(' DYNAMODB_TABLE=your-table-name npx @exabugs/dynamodb-client mcp');
|
|
26
|
-
console.error('\nOptional environment variables:');
|
|
27
|
-
console.error(' AWS_REGION (default: us-east-1)');
|
|
28
|
-
console.error(' AWS_PROFILE');
|
|
29
|
-
console.error(' AWS_ACCESS_KEY_ID');
|
|
30
|
-
console.error(' AWS_SECRET_ACCESS_KEY');
|
|
31
|
-
console.error(' LOG_LEVEL (debug|info|warn|error, default: info)');
|
|
32
|
-
process.exit(1);
|
|
33
|
-
}
|
|
34
|
-
// 環境変数から設定を取得
|
|
35
|
-
const config = {
|
|
36
|
-
tableName,
|
|
37
|
-
region: process.env.AWS_REGION || 'us-east-1',
|
|
38
|
-
profile: process.env.AWS_PROFILE,
|
|
39
|
-
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
|
|
40
|
-
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
|
|
41
|
-
};
|
|
42
|
-
logger.debug('Configuration loaded from environment', {
|
|
43
|
-
tableName: config.tableName,
|
|
44
|
-
region: config.region,
|
|
45
|
-
hasProfile: !!config.profile,
|
|
46
|
-
hasAccessKey: !!config.accessKeyId,
|
|
47
|
-
});
|
|
48
|
-
return config;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* メイン関数
|
|
52
|
-
*/
|
|
53
|
-
async function main() {
|
|
54
|
-
try {
|
|
55
|
-
logger.info('Starting DynamoDB Client MCP Server');
|
|
56
|
-
const config = getConfigFromEnv();
|
|
57
|
-
// MCPサーバーを起動
|
|
58
|
-
const server = new DynamoDBMCPServer(config);
|
|
59
|
-
await server.start();
|
|
60
|
-
logger.info('MCP Server is running');
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
logger.error('Failed to start MCP Server', {
|
|
64
|
-
error: error instanceof Error ? error.message : String(error),
|
|
65
|
-
stack: error instanceof Error ? error.stack : undefined,
|
|
66
|
-
});
|
|
67
|
-
// ユーザーフレンドリーなエラーメッセージを表示
|
|
68
|
-
console.error('\nFatal error occurred:');
|
|
69
|
-
if (error instanceof Error) {
|
|
70
|
-
console.error(` ${error.message}`);
|
|
71
|
-
// AWS認証エラーの場合は追加のヘルプを表示
|
|
72
|
-
if (error.message.includes('credentials') ||
|
|
73
|
-
error.message.includes('AccessDenied') ||
|
|
74
|
-
error.message.includes('UnauthorizedOperation')) {
|
|
75
|
-
console.error('\nAWS authentication failed. Please check:');
|
|
76
|
-
console.error(' 1. AWS credentials are configured correctly');
|
|
77
|
-
console.error(' 2. AWS_PROFILE is set (if using profiles)');
|
|
78
|
-
console.error(' 3. AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are set (if using keys)');
|
|
79
|
-
console.error(' 4. IAM permissions allow DynamoDB access');
|
|
80
|
-
}
|
|
81
|
-
// DynamoDBテーブルエラーの場合
|
|
82
|
-
if (error.message.includes('ResourceNotFound') || error.message.includes('Table')) {
|
|
83
|
-
console.error('\nDynamoDB table not found. Please check:');
|
|
84
|
-
console.error(' 1. DYNAMODB_TABLE is set correctly');
|
|
85
|
-
console.error(' 2. The table exists in the specified region');
|
|
86
|
-
console.error(' 3. AWS_REGION is set correctly');
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
console.error(` ${String(error)}`);
|
|
91
|
-
}
|
|
92
|
-
process.exit(1);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// プロセス終了時のクリーンアップ
|
|
96
|
-
process.on('SIGINT', () => {
|
|
97
|
-
logger.info('Received SIGINT, shutting down gracefully');
|
|
98
|
-
process.exit(0);
|
|
99
|
-
});
|
|
100
|
-
process.on('SIGTERM', () => {
|
|
101
|
-
logger.info('Received SIGTERM, shutting down gracefully');
|
|
102
|
-
process.exit(0);
|
|
103
|
-
});
|
|
104
|
-
// 未処理のPromise拒否をキャッチ
|
|
105
|
-
process.on('unhandledRejection', (reason, promise) => {
|
|
106
|
-
logger.error('Unhandled Promise Rejection', {
|
|
107
|
-
reason: reason instanceof Error ? reason.message : String(reason),
|
|
108
|
-
promise: String(promise),
|
|
109
|
-
});
|
|
110
|
-
console.error('\nUnhandled Promise Rejection:');
|
|
111
|
-
console.error(reason);
|
|
112
|
-
process.exit(1);
|
|
113
|
-
});
|
|
114
|
-
// エラーハンドリング付きで実行
|
|
115
|
-
main().catch((error) => {
|
|
116
|
-
logger.error('Unexpected error in main', {
|
|
117
|
-
error: error instanceof Error ? error.message : String(error),
|
|
118
|
-
});
|
|
119
|
-
console.error('Fatal error:', error);
|
|
120
|
-
process.exit(1);
|
|
121
|
-
});
|
|
122
|
-
//# sourceMappingURL=cli.js.map
|
package/dist/mcp/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/mcp/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/index.d.ts
DELETED
package/dist/mcp/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/mcp/index.js
DELETED
package/dist/mcp/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/mcp/server.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { type MCPServerConfig } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* DynamoDB Client MCPサーバー
|
|
4
|
-
*/
|
|
5
|
-
export declare class DynamoDBMCPServer {
|
|
6
|
-
private server;
|
|
7
|
-
private adapter;
|
|
8
|
-
constructor(config: MCPServerConfig);
|
|
9
|
-
/**
|
|
10
|
-
* リクエストハンドラーの設定
|
|
11
|
-
*/
|
|
12
|
-
private setupHandlers;
|
|
13
|
-
/**
|
|
14
|
-
* サーバーを起動
|
|
15
|
-
*/
|
|
16
|
-
start(): Promise<void>;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=server.d.ts.map
|
package/dist/mcp/server.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAWA,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAU5D;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAa;gBAEhB,MAAM,EAAE,eAAe;IAyBnC;;OAEG;IACH,OAAO,CAAC,aAAa;IA2ErB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAY7B"}
|
package/dist/mcp/server.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DynamoDB Client MCP Server
|
|
3
|
-
* MCPサーバー本体の実装
|
|
4
|
-
*/
|
|
5
|
-
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
6
|
-
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
7
|
-
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
8
|
-
import { createLogger } from '../shared/index.js';
|
|
9
|
-
import { MCPAdapter } from './adapter.js';
|
|
10
|
-
import { getAllTools } from './tools/index.js';
|
|
11
|
-
import { MCPError } from './types.js';
|
|
12
|
-
/**
|
|
13
|
-
* ロガーインスタンス
|
|
14
|
-
*/
|
|
15
|
-
const logger = createLogger({
|
|
16
|
-
service: 'mcp-server',
|
|
17
|
-
level: process.env.LOG_LEVEL || 'info',
|
|
18
|
-
});
|
|
19
|
-
/**
|
|
20
|
-
* DynamoDB Client MCPサーバー
|
|
21
|
-
*/
|
|
22
|
-
export class DynamoDBMCPServer {
|
|
23
|
-
server;
|
|
24
|
-
adapter;
|
|
25
|
-
constructor(config) {
|
|
26
|
-
// MCPサーバーの初期化
|
|
27
|
-
this.server = new Server({
|
|
28
|
-
name: 'dynamodb-client',
|
|
29
|
-
version: '1.4.0',
|
|
30
|
-
}, {
|
|
31
|
-
capabilities: {
|
|
32
|
-
tools: {},
|
|
33
|
-
},
|
|
34
|
-
});
|
|
35
|
-
// Adapterの初期化
|
|
36
|
-
this.adapter = new MCPAdapter(config);
|
|
37
|
-
// ハンドラーの設定
|
|
38
|
-
this.setupHandlers();
|
|
39
|
-
logger.info('DynamoDBMCPServer initialized', {
|
|
40
|
-
version: '1.4.0',
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* リクエストハンドラーの設定
|
|
45
|
-
*/
|
|
46
|
-
setupHandlers() {
|
|
47
|
-
// ツール一覧を返す
|
|
48
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
49
|
-
logger.debug('Listing available tools');
|
|
50
|
-
return {
|
|
51
|
-
tools: getAllTools(),
|
|
52
|
-
};
|
|
53
|
-
});
|
|
54
|
-
// ツールを実行
|
|
55
|
-
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
56
|
-
const { name, arguments: args } = request.params;
|
|
57
|
-
logger.debug('Tool call request received', {
|
|
58
|
-
toolName: name,
|
|
59
|
-
hasArguments: !!args,
|
|
60
|
-
});
|
|
61
|
-
try {
|
|
62
|
-
const result = await this.adapter.executeTool(name, args ?? {});
|
|
63
|
-
logger.debug('Tool call succeeded', {
|
|
64
|
-
toolName: name,
|
|
65
|
-
});
|
|
66
|
-
return {
|
|
67
|
-
content: [
|
|
68
|
-
{
|
|
69
|
-
type: 'text',
|
|
70
|
-
text: JSON.stringify(result, null, 2),
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
logger.error('Tool call failed', {
|
|
77
|
-
toolName: name,
|
|
78
|
-
error: error instanceof Error ? error.message : String(error),
|
|
79
|
-
});
|
|
80
|
-
// MCPErrorの場合は詳細情報を含めて返す
|
|
81
|
-
if (error instanceof MCPError) {
|
|
82
|
-
return {
|
|
83
|
-
content: [
|
|
84
|
-
{
|
|
85
|
-
type: 'text',
|
|
86
|
-
text: JSON.stringify(error.toJSON(), null, 2),
|
|
87
|
-
},
|
|
88
|
-
],
|
|
89
|
-
isError: true,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
// その他のエラーは簡潔なメッセージを返す
|
|
93
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
94
|
-
return {
|
|
95
|
-
content: [
|
|
96
|
-
{
|
|
97
|
-
type: 'text',
|
|
98
|
-
text: JSON.stringify({
|
|
99
|
-
error: {
|
|
100
|
-
message: errorMessage,
|
|
101
|
-
},
|
|
102
|
-
}, null, 2),
|
|
103
|
-
},
|
|
104
|
-
],
|
|
105
|
-
isError: true,
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* サーバーを起動
|
|
112
|
-
*/
|
|
113
|
-
async start() {
|
|
114
|
-
try {
|
|
115
|
-
const transport = new StdioServerTransport();
|
|
116
|
-
await this.server.connect(transport);
|
|
117
|
-
logger.info('MCP Server started successfully');
|
|
118
|
-
}
|
|
119
|
-
catch (error) {
|
|
120
|
-
logger.error('Failed to start MCP Server', {
|
|
121
|
-
error: error instanceof Error ? error.message : String(error),
|
|
122
|
-
});
|
|
123
|
-
throw error;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=server.js.map
|
package/dist/mcp/server.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* dynamodb_deleteMany ツール定義
|
|
3
|
-
* DynamoDBから複数レコードを一括削除します。
|
|
4
|
-
*/
|
|
5
|
-
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
-
/**
|
|
7
|
-
* dynamodb_deleteMany ツール
|
|
8
|
-
*
|
|
9
|
-
* DynamoDBから複数レコードを一括削除します。
|
|
10
|
-
*/
|
|
11
|
-
export declare const deleteManyTool: Tool;
|
|
12
|
-
//# sourceMappingURL=deleteMany.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deleteMany.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/deleteMany.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,IAiB5B,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* dynamodb_deleteMany ツール
|
|
3
|
-
*
|
|
4
|
-
* DynamoDBから複数レコードを一括削除します。
|
|
5
|
-
*/
|
|
6
|
-
export const deleteManyTool = {
|
|
7
|
-
name: 'dynamodb_deleteMany',
|
|
8
|
-
description: 'DynamoDBから複数レコードを一括削除します。',
|
|
9
|
-
inputSchema: {
|
|
10
|
-
type: 'object',
|
|
11
|
-
properties: {
|
|
12
|
-
collection: {
|
|
13
|
-
type: 'string',
|
|
14
|
-
description: 'コレクション名(例: venues, users)',
|
|
15
|
-
},
|
|
16
|
-
filter: {
|
|
17
|
-
type: 'object',
|
|
18
|
-
description: 'フィルター条件(MongoDB形式)。例: { status: "active", age: { $gte: 18 } }',
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
required: ['collection'],
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
//# sourceMappingURL=deleteMany.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deleteMany.js","sourceRoot":"","sources":["../../../src/mcp/tools/deleteMany.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,2BAA2B;IACxC,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2BAA2B;aACzC;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+DAA+D;aAC7E;SACF;QACD,QAAQ,EAAE,CAAC,YAAY,CAAC;KACzB;CACF,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* dynamodb_deleteOne ツール定義
|
|
3
|
-
* DynamoDBから単一レコードを削除します。
|
|
4
|
-
*/
|
|
5
|
-
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
-
/**
|
|
7
|
-
* dynamodb_deleteOne ツール
|
|
8
|
-
*
|
|
9
|
-
* DynamoDBから単一レコードを削除します。
|
|
10
|
-
*/
|
|
11
|
-
export declare const deleteOneTool: Tool;
|
|
12
|
-
//# sourceMappingURL=deleteOne.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deleteOne.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/deleteOne.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,IAiB3B,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* dynamodb_deleteOne ツール
|
|
3
|
-
*
|
|
4
|
-
* DynamoDBから単一レコードを削除します。
|
|
5
|
-
*/
|
|
6
|
-
export const deleteOneTool = {
|
|
7
|
-
name: 'dynamodb_deleteOne',
|
|
8
|
-
description: 'DynamoDBから単一レコードを削除します。',
|
|
9
|
-
inputSchema: {
|
|
10
|
-
type: 'object',
|
|
11
|
-
properties: {
|
|
12
|
-
collection: {
|
|
13
|
-
type: 'string',
|
|
14
|
-
description: 'コレクション名(例: venues, users)',
|
|
15
|
-
},
|
|
16
|
-
id: {
|
|
17
|
-
type: 'string',
|
|
18
|
-
description: 'レコードID',
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
required: ['collection'],
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
//# sourceMappingURL=deleteOne.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deleteOne.js","sourceRoot":"","sources":["../../../src/mcp/tools/deleteOne.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAS;IACjC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,yBAAyB;IACtC,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2BAA2B;aACzC;YACD,EAAE,EAAE;gBACF,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,QAAQ;aACtB;SACF;QACD,QAAQ,EAAE,CAAC,YAAY,CAAC;KACzB;CACF,CAAC"}
|
package/dist/mcp/tools/find.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* dynamodb_find ツール定義
|
|
3
|
-
* DynamoDBからレコードを検索します。フィルター、ソート、ページネーションをサポート。
|
|
4
|
-
*/
|
|
5
|
-
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
-
/**
|
|
7
|
-
* dynamodb_find ツール
|
|
8
|
-
*
|
|
9
|
-
* DynamoDBからレコードを検索します。フィルター、ソート、ページネーションをサポート。
|
|
10
|
-
*/
|
|
11
|
-
export declare const findTool: Tool;
|
|
12
|
-
//# sourceMappingURL=find.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/find.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,IAiDtB,CAAC"}
|