DynamoDB MCP только для чтения
Сервер, который использует Model Context Protocol (MCP) для запроса баз данных AWS DynamoDB. Этот сервер позволяет LLM, таким как Клод, запрашивать данные DynamoDB с помощью запросов на естественном языке.
Функции
Этот сервер MCP предоставляет следующие возможности:
Инструменты управления таблицами :
list-tables: Просмотр списка всех таблиц DynamoDBdescribe-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Установка
Клонируйте репозиторий:
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
Чтобы использовать этот MCP-сервер с Claude Desktop, вам необходимо изменить файл конфигурации Claude Desktop.
Откройте файл конфигурации Claude Desktop:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Добавьте конфигурацию сервера следующим образом:
{ "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"
}
}
}
}Примеры использования
Вы можете задать Клоду такие вопросы:
«Можете ли вы сказать мне, какие таблицы есть в DynamoDB?»
«Объясните структуру таблицы «Пользователи»»
«Найдите количество пользователей в таблице «Пользователи», где groupId равен «0lxp4paxk7»»
Архитектура
Данный сервер MCP состоит из следующей многоуровневой структуры:
Клиентский интерфейс (Claude Desktop) — взаимодействие между пользователем и LLM
Уровень протокола 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)подключается к Claude Desktop через протокол MCP.Во время подключения сервер отправляет клиенту информацию о поддерживаемых инструментах, ресурсах и подсказках.
2. Обработка запроса на инструмент
Когда пользователь спрашивает Клода что-то вроде «Покажи мне список таблиц DynamoDB»:
Клод анализирует этот запрос и вызывает инструмент
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.
Клод переводит этот результат в естественный язык и представляет его пользователю.
3. Обработка специальных параметров
Когда пользователь запрашивает «Расскажите мне структуру таблицы «Пользователи»»:
Клод определяет, что в этом запросе следует использовать инструмент
describe-table.Клод настраивает параметр как
{ 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',
},
],
};
});Клод получает доступ к ресурсам и использует их в качестве контекстной информации.
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 },
},
],
};
}
);Этот запрос используется, когда пользователь запрашивает «Покажите мне, как писать запросы для таблицы «Пользователи»».
Сводка потока данных
Пользователь делает запрос Клоду на естественном языке
Клод анализирует запрос и выбирает соответствующий инструмент/ресурс/подсказку MCP
Клиент MCP отправляет запрос на сервер в стандартизированном формате.
Сервер обрабатывает запрос и вызывает API AWS DynamoDB
DynamoDB возвращает результаты
Сервер преобразует результаты в формат MCP и отправляет их клиенту
Клод переводит результаты в естественный язык и представляет их пользователю.
Лицензия
Данный проект лицензирован по лицензии MIT — подробности см. в файле LICENSE.
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.