关于 DynamoDB Read-Only MCP
DynamoDB Read-Only MCP 是用于查询 AWS DynamoDB 的 MCP 服务,供 LLM 客户端以自然语言请求读取表和数据。它提供查询工具、表结构资源及查询提示词。
主要功能
- 01列出表并查看表详情
- 02扫描、查询和分页读取数据
- 03按键获取项目并统计数量
- 04提供表元数据与结构资源
- 05提供 DynamoDB 查询提示词
适用场景
- 01查看 DynamoDB 中的表及其结构
- 02按条件查找表数据
- 03获取特定键对应的项目
- 04统计符合条件的记录数量
MCP 相关
服务向 MCP 客户端提供只读查询工具、表信息资源和查询提示词,用于访问 AWS DynamoDB。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
DynamoDB 只读 MCP
一个利用 Model Context Protocol(MCP)查询 AWS DynamoDB 数据库的服务。此服务允许 Claude 等大模型通过自然语言请求查询 DynamoDB 数据。
功能
此 MCP 服务提供以下功能:
- 表管理工具:
list-tables:查看所有 DynamoDB 表的列表describe-table:查看特定表的详细信息
- 数据查询工具:
scan-table:扫描表中的全部或部分数据query-table:搜索表中符合特定条件的数据paginate-query-table:跨多个页面检索符合特定条件的数据get-item:检索具有特定键的项目count-items:计算表中的项目数量
- 资源:
dynamodb-tables-info:提供所有表元数据的资源dynamodb-table-schema:提供特定表架构信息的资源
- 提示词:
dynamodb-query-help:用于编写 DynamoDB 查询的帮助提示词
安装与运行
你可以使用下方的 Run with NPX 方法,无需安装即可运行。
通过 Smithery 安装
若要通过 Smithery 为 Claude Desktop 自动安装 DynamoDB Read-Only Server:
npx -y @smithery/cli install @jjikky/dynamo-readonly-mcp --client claude
安装
-
克隆仓库:
git clone https://github.com/jjikky/dynamo-readonly-mcp.git cd dynamo-readonly-mcp -
安装所需的软件包:
npm install -
创建
.env文件并设置 AWS 凭证:AWS_ACCESS_KEY_ID=your_access_key AWS_SECRET_ACCESS_KEY=your_secret_key AWS_REGION=your_region
构建与运行
npm run build
npm start
连接到 Claude Desktop
若要在 Claude Desktop 中使用此 MCP 服务,需要修改 Claude Desktop 配置文件。
-
打开 Claude Desktop 配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
添加如下服务配置:
{ "mcpServers": { "dynamodb-readonly": { "command": "node", "args": ["/absolute-path/dynamo-readonly-mcp/dist/index.js"], "env": { "AWS_ACCESS_KEY_ID": "your_access_key", "AWS_SECRET_ACCESS_KEY": "your_secret_key", "AWS_REGION": "your_region" } } } } -
重启 Claude Desktop。
使用 NPX 运行
你也可以使用 npx 运行此服务,无需全局安装:
{
"mcpServers": {
"dynamodb-readonly": {
"command": "npx",
"args": ["-y", "dynamo-readonly-mcp"],
"env": {
"AWS_ACCESS_KEY_ID": "your_access_key",
"AWS_SECRET_ACCESS_KEY": "your_secret_key",
"AWS_REGION": "your_region"
}
}
}
}
使用示例
你可以向 Claude 提问,例如:
- “能告诉我 DynamoDB 中有哪些表吗?”
- “说明 Users 表的结构”
- “找出 'Users' 表中 groupId 为 '0lxp4paxk7' 的用户数量”
架构
此 MCP 服务由以下分层结构组成:
- 客户端接口(Claude Desktop) - 用户与大模型之间的交互
- MCP 协议层 - 提供标准化的消息交换方式
- DynamoDB 服务 - 实现与 DynamoDB 交互的功能
- AWS SDK - 与 AWS DynamoDB 服务通信
关键运行机制
1. 初始化与连接
服务启动时,会执行以下流程:
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error('DynamoDB read-only MCP server is running...');
}
StdioServerTransport通过标准输入/输出建立通信通道。server.connect(transport)通过 MCP 协议连接到 Claude Desktop。- 连接期间,服务会向客户端发送有关受支持工具、资源和提示词的信息。
2. 工具请求处理
当用户向 Claude 提出类似“显示 DynamoDB 表列表”的请求时:
- Claude 分析此请求并调用
list-tables工具。 - 此请求通过 MCP 协议发送到服务端。
- 服务端执行相应的工具处理程序:
server.tool('list-tables', 'Gets a list of all DynamoDB tables', {}, async () => {
try {
const tables = await listTables();
return {
content: [{ type: 'text', text: JSON.stringify(tables, null, 2) }],
};
} catch (error) {
return { isError: true, content: [{ type: 'text', text: `Error: ${error.message}` }] };
}
});
- 结果通过 MCP 协议返回给 Claude。
- Claude 将结果处理为自然语言并呈现给用户。
3. 特定参数处理
当用户请求“告诉我 Users 表的结构”时:
- Claude 确定此请求应使用
describe-table工具。 - Claude 将参数配置为
{ tableName: "Users" }。 - 此信息发送到 MCP 服务:
server.tool(
'describe-table',
'Gets detailed information about a DynamoDB table',
{
tableName: z.string().describe('Name of the table to get detailed information for'),
},
async ({ tableName }) => {
// Query table information using the tableName parameter
const tableInfo = await describeTable(tableName);
// Return results
}
);
这里,z.string() 使用 Zod 库验证参数。
4. 资源处理
资源是 MCP 的另一项功能,用于提供只读数据:
server.resource('dynamodb-tables-info', 'DynamoDB table information', async () => {
// Create and return resource data
const tables = await listTables();
const tablesInfo = await Promise.all(/* Query table information */);
return {
contents: [
{
uri: 'dynamodb://tables-info',
text: JSON.stringify(tablesInfo, null, 2),
mimeType: 'application/json',
},
],
};
});
Claude 访问资源并将其用作上下文信息。
5. 提示词处理
MCP 服务可以为特定任务提供提示词模板:
server.prompt(
'dynamodb-query-help',
'A prompt that helps write DynamoDB queries',
{
tableName: z.string().describe('Table name to query'),
queryType: z.enum(['basic', 'advanced']).default('basic'),
},
async ({ tableName, queryType }) => {
// Generate prompt content
return {
messages: [
{
role: 'user',
content: { type: 'text', text: helpContent },
},
],
};
}
);
当用户请求“展示如何为 Users 表编写查询”时,会使用此提示词。
数据流概要
- 用户用自然语言向 Claude 发出请求
- Claude 分析请求并选择合适的 MCP 工具/资源/提示词
- MCP 客户端以标准化格式向服务端发送请求
- 服务端处理请求并调用 AWS DynamoDB API
- DynamoDB 返回结果
- 服务端将结果转换为 MCP 格式并发送给客户端
- Claude 将结果处理为自然语言并呈现给用户
许可证
本项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
