ServeMyAPI
Um servidor pessoal para armazenar e acessar chaves de API de forma segura usando o Keychain do macOS.
Documentação
ServeMyAPI
Um servidor MCP (Model Context Protocol) pessoal para armazenar e acessar chaves de API com segurança em vários projetos usando o Keychain do macOS.
🔒 SEGURANÇA EM PRIMEIRO LUGAR: O ServeMyAPI foi projetado para rodar LOCALMENTE na sua máquina. As chaves de API NUNCA são transmitidas pela internet e NUNCA devem ser implantadas em serviços de nuvem. Leia as diretrizes críticas de segurança antes de usar.
Suporte Multiplataforma: O ServeMyAPI agora inclui uma camada de abstração de armazenamento que permite suporte a múltiplas plataformas:
- macOS: Usa o Keychain nativo (padrão)
- Windows/Linux: Usa armazenamento de arquivos criptografados
- Docker: Usa automaticamente armazenamento de arquivos criptografados
- Memória: Disponível para testes e armazenamento temporário
Visão Geral
O ServeMyAPI permite armazenar chaves de API com segurança no Keychain do macOS e acessá-las por meio de uma interface MCP consistente. Isso facilita:
- Armazenar chaves de API com segurança (elas nunca ficam visíveis em arquivos .env ou de configuração)
- Acessar as mesmas chaves em vários projetos
- Usar linguagem natural para armazenar e recuperar chaves (quando usado com LLMs como Claude)
- Fornecer chaves diretamente ao seu assistente de IA quando ele precisar acessar serviços
Por que usar o ServeMyAPI em vez de arquivos .ENV?
Usar o ServeMyAPI em vez de arquivos .ENV tradicionais resolve vários problemas comuns:
-
Conflitos de Segurança com o GitHub:
- Arquivos .ENV precisam ser excluídos dos repositórios Git por segurança (via .gitignore)
- Isso cria um problema de "contexto oculto", onde configurações importantes ficam invisíveis para colaboradores e LLMs
- Novos desenvolvedores frequentemente têm dificuldade em configurar as variáveis de ambiente corretas
-
Desafios de Integração com LLMs:
- LLMs como o Claude não conseguem acessar diretamente seus arquivos .ENV devido a restrições de segurança
- Quando LLMs precisam de chaves de API para concluir tarefas, muitas vezes são necessários workarounds manuais
- O ServeMyAPI permite que seu assistente de IA solicite chaves por meio de linguagem natural
-
Consistência entre Projetos:
- Com arquivos .ENV, normalmente é necessário duplicar chaves de API em vários projetos
- Quando as chaves mudam, é preciso atualizar vários arquivos
- O ServeMyAPI fornece um local de armazenamento central acessível a partir de qualquer projeto
Essa abordagem oferece o melhor dos dois mundos: armazenamento seguro de credenciais sensíveis sem sacrificar a visibilidade e a acessibilidade para suas ferramentas de IA.
Recursos
- Armazenamento seguro de chaves de API no Keychain do macOS
- Ferramentas MCP simples para armazenar, recuperar, listar e excluir chaves
- Interface CLI conveniente para gerenciamento de chaves no terminal
- Suporte para transportes stdio e HTTP/SSE (com autenticação)
- Compatível com qualquer cliente MCP (Claude Desktop, etc.)
- Recursos de Segurança Aprimorados:
- Validação de entrada para prevenir ataques de path traversal
- Armazenamento de arquivos criptografados para implantações Docker
- Autenticação por token Bearer para endpoints HTTP
- Limitação de taxa e gerenciamento de sessão
- Cabeçalhos de segurança e proteção CORS
- Registro seguro com redação automática de dados sensíveis
Instalação
# Clone the repository
git clone https://github.com/yourusername/servemyapi.git
cd servemyapi
# Install dependencies
npm install
# Build the project
npm run build
Uso
Interface CLI
O ServeMyAPI vem com uma interface de linha de comando para gerenciamento rápido de chaves diretamente do seu terminal:
# Install the CLI globally
npm run build
npm link
# List all stored API keys
api-key list
# Get a specific API key
api-key get github_token
# Store a new API key
api-key store github_token ghp_123456789abcdefg
# Delete an API key
api-key delete github_token
# Display help
api-key help
Executando como servidor stdio
Esta é a maneira mais simples de usar o ServeMyAPI como servidor MCP, especialmente ao trabalhar com o Claude Desktop:
npm start
Executando como servidor HTTP
Para aplicações que exigem acesso HTTP:
node dist/server.js
Isso iniciará o servidor na porta 3000 (ou na porta especificada na variável de ambiente PORT).
⚠️ AVISO IMPORTANTE DE SEGURANÇA
NÃO USE A VERSÃO HOSPEDADA NO SMITHERY para armazenar chaves de API reais. A implantação no Smithery existe apenas para fins de demonstração. Usá-la iria:
- Transmitir suas chaves de API pela internet (mesmo com HTTPS, isso viola o princípio de manter as chaves locais)
- Armazenar suas chaves no servidor de outra pessoa (a infraestrutura do Smithery)
- Potencialmente expor suas chaves ao operador do serviço ou em caso de violação
O ServeMyAPI foi projetado para rodar LOCALMENTE na sua máquina apenas. Todo o modelo de segurança depende de as chaves nunca saírem do seu ambiente local.
Configurando Clientes MCP
O ServeMyAPI funciona com qualquer cliente compatível com MCP. Arquivos de configuração de exemplo são fornecidos no diretório examples.
Claude Desktop
Para usar o ServeMyAPI com o Claude Desktop:
-
Localize ou crie 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 o ServeMyAPI à seção
mcpServers(você pode copiar deexamples/claude_desktop_config.json):{ "mcpServers": { "serveMyAPI": { "command": "node", "args": [ "/ABSOLUTE/PATH/TO/servemyapi/dist/index.js" ] } } } -
Substitua
/ABSOLUTE/PATH/TO/servemyapipelo caminho real da sua instalação do ServeMyAPI. -
Reinicie o Claude Desktop.
Windsurf
Para usar o ServeMyAPI com o Windsurf:
- Abra o editor Windsurf e navegue até as Configurações
- Adicione o ServeMyAPI à sua configuração de servidor MCP usando o exemplo em
examples/windsurf_config.json - Adapte os caminhos para a sua instalação local
Ferramentas MCP
O ServeMyAPI expõe as seguintes ferramentas:
store-api-key
Armazena uma chave de API no keychain.
Parâmetros:
name: O nome/identificador da chave de APIkey: A chave de API a ser armazenada
Exemplo (do Claude):
Using serveMyAPI, store my API key ABC123XYZ as "OpenAI API Key"
get-api-key
Recupera uma chave de API do keychain.
Parâmetros:
name: O nome/identificador da chave de API a ser recuperada
Exemplo (do Claude):
Using serveMyAPI, get the API key named "OpenAI API Key"
delete-api-key
Exclui uma chave de API do keychain.
Parâmetros:
name: O nome/identificador da chave de API a ser excluída
Exemplo (do Claude):
Using serveMyAPI, delete the API key named "OpenAI API Key"
list-api-keys
Lista todas as chaves de API armazenadas.
Nenhum parâmetro necessário.
Exemplo (do Claude):
Using serveMyAPI, list all my stored API keys
Opções de Armazenamento
O ServeMyAPI seleciona automaticamente o melhor provedor de armazenamento para sua plataforma:
Detecção de Plataforma
- macOS: Keychain (padrão)
- Windows: Armazenamento de arquivos criptografados
- Linux: Armazenamento de arquivos criptografados
- Docker: Armazenamento de arquivos criptografados
Configuração Manual
Você pode substituir a detecção automática:
# Force a specific storage type
export SERVEMYAPI_STORAGE_TYPE=file # or 'keychain', 'memory'
# Configure file storage location
export STORAGE_DIR=/path/to/secure/directory
Tipos de Armazenamento
-
Armazenamento em Keychain (somente macOS)
- Segurança nativa do nível do sistema operacional
- Nenhuma criptografia necessária
- Requer permissão do usuário no primeiro uso
-
Armazenamento em Arquivo (multiplataforma)
- Criptografia AES-256-GCM
- Derivação de chave PBKDF2
- Armazena em
~/.servemyapi/keys.json.encpor padrão - Requer a variável de ambiente
ENCRYPTION_KEY
-
Armazenamento em Memória (testes)
- Somente em memória
- Dados perdidos ao reiniciar
- Útil para testes e desenvolvimento
Segurança
Recursos Principais de Segurança
- Armazenamento Ciente da Plataforma: Seleciona automaticamente armazenamento seguro para cada plataforma
- Armazenamento no Keychain do macOS: As chaves de API são armazenadas no Keychain do macOS com segurança nativa do nível do sistema operacional
- Armazenamento de Arquivos Criptografados: Suporte multiplataforma com criptografia AES-256-GCM
- Criptografia Docker: Ao rodar em Docker, as chaves são criptografadas usando AES-256-GCM com derivação de chave PBKDF2
- Autenticação: Endpoints HTTP/SSE exigem autenticação por token Bearer
- Validação de Entrada: Validação rigorosa previne ataques de path traversal e injeção
- Limitação de Taxa: Protege contra abuso com limites de requisições configuráveis
- Registro Seguro: Redação automática de dados sensíveis em todas as saídas de log
Segurança do Servidor HTTP
Ao usar o transporte HTTP/SSE:
# Set authentication key
export SERVEAPI_AUTH_KEY="your-secure-api-key"
# Set encryption key for Docker
export ENCRYPTION_KEY="your-encryption-key"
# Configure CORS origins
export ALLOWED_ORIGINS="https://app1.com,https://app2.com"
Inclua o token Bearer nas requisições:
Authorization: Bearer your-secure-api-key
Melhores Práticas
- Sempre use HTTPS em produção - Implante atrás de um proxy reverso com TLS
- Defina chaves de autenticação fortes - Use
openssl rand -base64 32para gerar - Execute como não-root - A imagem Docker usa automaticamente um usuário restrito
- Rotação regular de chaves - Atualize periodicamente suas chaves de autenticação e criptografia
- Monitore logs de acesso - Observe padrões suspeitos ou tentativas não autorizadas
Para configuração detalhada de segurança, consulte docs/SECURITY.md.
Roadmap
Os planos futuros para o ServeMyAPI incluem:
-
Ferramenta de Scanner de Código: Uma ferramenta que escaneia automaticamente seu código em busca de endpoints de API, URLs sensíveis e variáveis de ambiente, e então sugere nomes para armazená-los no Keychain. Isso permitiria que desenvolvedores continuassem usando arquivos .ENV em seu fluxo de trabalho regular, garantindo que as credenciais também estejam disponíveis para LLMs e outras ferramentas quando necessário.
-
Suporte Multiplataforma: Investigando opções seguras de armazenamento de credenciais para Windows e Linux para tornar o ServeMyAPI mais amplamente acessível.
-
Integração com Frameworks Populares: Fornecendo integração fácil com frameworks como Next.js, Express e outros.
-
Interface para Gerenciamento de Chaves: Uma interface web simples para gerenciar suas chaves de API armazenadas diretamente.
Sinta-se à vontade para sugerir recursos adicionais ou contribuir com o roadmap abrindo uma issue ou pull request.
Desenvolvimento
# Run in development mode with hot reload
npm run dev
# Use the CLI during development
npm run cli list
# Lint the code
npm run lint
# Build for production
npm run build
Licença
MIT