Skip to main content
Glama
jjikky

DynamoDB Read-Only MCP

by jjikky

DynamoDB 只读 MCP

npm 版本 铁匠徽章

一个利用模型上下文协议 (MCP) 查询 AWS DynamoDB 数据库的服务器。该服务器允许像 Claude 这样的法学硕士 (LLM) 通过自然语言请求查询 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 查询的帮助提示

Related MCP server: dbt Semantic Layer MCP Server

安装和执行

您可以使用下面的使用Run with NPX方法无需安装即可运行它。

通过 Smithery 安装

要通过Smithery自动为 Claude Desktop 安装 DynamoDB 只读服务器:

npx -y @smithery/cli install @jjikky/dynamo-readonly-mcp --client claude

安装

  1. 克隆存储库:

    git clone https://github.com/jjikky/dynamo-readonly-mcp.git cd dynamo-readonly-mcp
  2. 安装所需的软件包:

    npm install
  3. 创建一个.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 桌面

要将此 MCP 服务器与 Claude Desktop 一起使用,您需要修改 Claude Desktop 配置文件。

  1. 打开Claude桌面配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

  2. 添加服务器配置如下:

    { "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" } } } }
  3. 重新启动 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 询问以下问题:

  1. “您能告诉我 DynamoDB 中有哪些表吗?”

  2. “解释用户表的结构”

  3. “在‘用户’表中查找 groupId 为‘0lxp4paxk7’ 的用户数量”


建筑学

该MCP服务器由以下分层结构组成:

  1. 客户端界面(Claude Desktop) - 用户与 LLM 之间的交互

  2. MCP协议层-提供标准化的消息交换方法

  3. DynamoDB 服务器- 实现与 DynamoDB 交互的功能

  4. 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 表的列表”时:

  1. 克劳德分析了这个请求并调用了list-tables工具。

  2. 该请求通过MCP协议发送到服务器。

  3. 服务器执行相应的工具处理程序:

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}` }] }; } });
  1. 将结果通过MCP协议返回给Claude。

  2. Claude 将此结果处理成自然语言并呈现给用户。

3. 具体参数处理

当用户请求“告诉我用户表的结构”时:

  1. Claude 确定此请求应该使用describe-table工具。

  2. Claude 将参数配置为{ tableName: "Users" }

  3. 此信息被发送到 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', }, ], }; });

克劳德访问资源并将其用作上下文信息。

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 }, }, ], }; } );

当用户请求“向我展示如何为用户表编写查询”时使用此提示。

数据流摘要

  1. 用户使用自然语言向 Claude 发出请求

  2. Claude 分析请求并选择适当的 MCP 工具/资源/提示

  3. MCP 客户端以标准格式向服务器发送请求

  4. 服务器处理请求并调用 AWS DynamoDB API

  5. DynamoDB 返回结果

  6. 服务器将结果转换为MCP格式并发送给客户端

  7. Claude 将结果处理成自然语言并呈现给用户

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jjikky/dynamo-readonly-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server