Skip to main content
Glama
jjikky

DynamoDB Read-Only MCP

by jjikky

DynamoDB MCP только для чтения

npm-версия значок кузнеца

Сервер, который использует Model Context Protocol (MCP) для запроса баз данных AWS DynamoDB. Этот сервер позволяет 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

Чтобы автоматически установить DynamoDB Read-Only Server для Claude Desktop через Smithery :

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 Desktop

Чтобы использовать этот MCP-сервер с Claude Desktop, вам необходимо изменить файл конфигурации Claude Desktop.

  1. Откройте файл конфигурации Claude Desktop:

    • 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"
      }
    }
  }
}

Примеры использования

Вы можете задать Клоду такие вопросы:

  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) подключается к Claude Desktop через протокол MCP.

  • Во время подключения сервер отправляет клиенту информацию о поддерживаемых инструментах, ресурсах и подсказках.

2. Обработка запроса на инструмент

Когда пользователь спрашивает Клода что-то вроде «Покажи мне список таблиц 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.

  2. Клод переводит этот результат в естественный язык и представляет его пользователю.

3. Обработка специальных параметров

Когда пользователь запрашивает «Расскажите мне структуру таблицы «Пользователи»»:

  1. Клод определяет, что в этом запросе следует использовать инструмент describe-table .

  2. Клод настраивает параметр как { 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. Пользователь делает запрос Клоду на естественном языке

  2. Клод анализирует запрос и выбирает соответствующий инструмент/ресурс/подсказку MCP

  3. Клиент MCP отправляет запрос на сервер в стандартизированном формате.

  4. Сервер обрабатывает запрос и вызывает API AWS DynamoDB

  5. DynamoDB возвращает результаты

  6. Сервер преобразует результаты в формат MCP и отправляет их клиенту

  7. Клод переводит результаты в естественный язык и представляет их пользователю.

Лицензия

Данный проект лицензирован по лицензии MIT — подробности см. в файле LICENSE.

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Resources

Looking for Admin?

Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.

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