DynamoDB Read-Only MCP
Um servidor somente leitura para consultar bancos de dados AWS DynamoDB usando o Model Context Protocol (MCP).
Documentação
DynamoDB Read-Only MCP
Um servidor que utiliza o Model Context Protocol (MCP) para consultar bancos de dados AWS DynamoDB. Este servidor permite que LLMs como Claude consultem dados do DynamoDB por meio de solicitações em linguagem natural.
Recursos
Este servidor MCP fornece os seguintes recursos:
- Ferramentas de Gerenciamento de Tabelas:
list-tables: Visualizar uma lista de todas as tabelas do DynamoDBdescribe-table: Visualizar informações detalhadas sobre uma tabela específica
- Ferramentas de Consulta de Dados:
scan-table: Escanear todos ou parte dos dados de uma tabelaquery-table: Pesquisar dados que correspondam a condições específicas em uma tabelapaginate-query-table: Recuperar dados em várias páginas que correspondam a condições específicasget-item: Recuperar um item com uma chave específicacount-items: Calcular o número de itens em uma tabela
- Recursos:
dynamodb-tables-info: Um recurso que fornece metadados para todas as tabelasdynamodb-table-schema: Um recurso que fornece informações de esquema para uma tabela específica
- Prompts:
dynamodb-query-help: Um prompt de ajuda para escrever consultas do DynamoDB
Instalação e Execução
Você pode executá-lo sem instalação usando o método Run with NPX abaixo.
Instalando via Smithery
Para instalar o DynamoDB Read-Only Server para Claude Desktop automaticamente via Smithery:
npx -y @smithery/cli install @jjikky/dynamo-readonly-mcp --client claude
Instalação
-
Clone o repositório:
git clone https://github.com/jjikky/dynamo-readonly-mcp.git cd dynamo-readonly-mcp -
Instale os pacotes necessários:
npm install -
Crie um arquivo
.enve configure suas credenciais da AWS:AWS_ACCESS_KEY_ID=your_access_key AWS_SECRET_ACCESS_KEY=your_secret_key AWS_REGION=your_region
Compilar e Executar
npm run build
npm start
Conectar ao Claude Desktop
Para usar este servidor MCP com o Claude Desktop, você precisa modificar o arquivo de configuração do Claude Desktop.
-
Abra o arquivo de configuração do Claude Desktop:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
Adicione a configuração do servidor da seguinte forma:
{ "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" } } } } -
Reinicie o Claude Desktop.
Executar com NPX
Você também pode executar este servidor usando npx sem uma instalação global:
{
"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"
}
}
}
}
Exemplos de Uso
Você pode fazer perguntas ao Claude como:
- "Você pode me dizer quais tabelas existem no DynamoDB?"
- "Explique a estrutura da tabela Users"
- "Encontre o número de usuários na tabela 'Users' onde groupId é '0lxp4paxk7'"
Arquitetura
Este servidor MCP consiste na seguinte estrutura em camadas:
- Interface do Cliente (Claude Desktop) - Interação entre usuário e LLM
- Camada de Protocolo MCP - Fornece método padronizado de troca de mensagens
- Servidor DynamoDB - Implementa funções que interagem com o DynamoDB
- AWS SDK - Comunica-se com o serviço AWS DynamoDB
Mecanismos Chave de Operação
1. Inicialização e Conexão
Quando o servidor inicia, ocorre o seguinte processo:
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error('DynamoDB read-only MCP server is running...');
}
StdioServerTransportconfigura um canal de comunicação por meio de entrada/saída padrão.server.connect(transport)conecta-se ao Claude Desktop por meio do protocolo MCP.- Durante a conexão, o servidor envia informações sobre ferramentas, recursos e prompts suportados ao cliente.
2. Processamento de Solicitações de Ferramentas
Quando um usuário pergunta ao Claude algo como "Mostre-me a lista de tabelas do DynamoDB":
- Claude analisa esta solicitação e chama a ferramenta
list-tables. - Esta solicitação é enviada ao servidor por meio do protocolo MCP.
- O servidor executa o manipulador de ferramentas correspondente:
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}` }] };
}
});
- O resultado é retornado ao Claude por meio do protocolo MCP.
- Claude processa este resultado em linguagem natural e o apresenta ao usuário.
3. Tratamento de Parâmetros Específicos
Quando um usuário solicita "Diga-me a estrutura da tabela Users":
- Claude determina que esta solicitação deve usar a ferramenta
describe-table. - Claude configura o parâmetro como
{ tableName: "Users" }. - Esta informação é enviada ao servidor 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
}
);
Aqui, z.string() usa a biblioteca Zod para validar parâmetros.
4. Tratamento de Recursos
Recursos são outro recurso do MCP que fornece dados somente leitura:
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 acessa recursos e os usa como informações de contexto.
5. Tratamento de Prompts
O servidor MCP pode fornecer modelos de prompt para tarefas específicas:
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 },
},
],
};
}
);
Este prompt é usado quando um usuário solicita "Mostre-me como escrever consultas para a tabela Users."
Resumo do Fluxo de Dados
- O usuário faz uma solicitação ao Claude em linguagem natural
- Claude analisa a solicitação e seleciona a ferramenta/recurso/prompt MCP apropriado
- O cliente MCP envia a solicitação ao servidor em formato padronizado
- O servidor processa a solicitação e chama a API do AWS DynamoDB
- O DynamoDB retorna os resultados
- O servidor converte os resultados para o formato MCP e os envia ao cliente
- Claude processa os resultados em linguagem natural e os apresenta ao usuário
Licença
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.
