mcp-secure-server-giulia-ai
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-secure-server-giulia-ailist all registered users"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PRJ-05 — Servidor MCP Seguro (autenticação por API Key)
Servidor MCP (FastMCP, transporte stdio) cujas tools só executam mediante uma
API Key válida. As chaves são geradas com secrets.token_urlsafe, hasheadas com
bcrypt e guardadas em SQLite; a validação usa bcrypt.checkpw. Senhas de usuário também
são hasheadas com bcrypt. Corresponde ao Capítulo 6 do livro Model Context Protocol
(Sandeco).
Arquitetura
database.py → SQLite (tabelas users, api_keys) — grava em data/database.db
repository.py → UserRepository / APIKeyRepository (SQL parametrizado)
generate_api_key.py → par (segredo, hash bcrypt)
api_key_controller.py → orquestra geração/validação/máscara de chaves
server_seguro.py → tools MCP protegidas (tool_segura, listar_usuarios)
main.py → CLI de bootstrap (create-user / gen-key / list-users)Formato da chave pública: sk-{user_id}-{secret} (só o hash do segredo é persistido).
Related MCP server: Credential Manager MCP Server
Uso
uv sync
# 1) cria um usuário (senha hasheada com bcrypt)
uv run python src/main.py create-user --name "Giulia" --email giulia@ex.com --password ***
# 2) gera a API Key (exibida UMA vez)
uv run python src/main.py gen-key --user-id 1 --name "chave-dev"
# 3) configure a chave no ambiente
cp .env.example .env # e cole a full key em GIULIA_AI_API_KEY
# 4) sobe o servidor MCP
uv run python src/server_seguro.pyCom a chave configurada, a tool tool_segura retorna uma saudação com os dados do
usuário autenticado; sem chave (ou inválida), toda tool lança API Key inválida.
Segurança
Segredos hasheados (bcrypt + salt), nunca em texto puro no banco.
SQL sempre parametrizado (sem injeção).
Chave exibida uma única vez; no banco fica só a versão mascarada + hash.
.envedata/*.dbfora do controle de versão (ver.gitignore).
Custo da validação
Cada chave guarda dois derivados: o hash bcrypt (o verificador) e um lookup_hash
(SHA-256, apenas um índice). A validação localiza a linha exata pelo índice e roda
bcrypt.checkpw uma vez. Antes o bcrypt rodava contra todas as chaves do usuário até
casar — O(n) numa função que é lenta de propósito.
SHA-256 puro seria fraco para senha, mas o segredo aqui tem 32 bytes de
secrets.token_urlsafe: não há dicionário que ataque isso. É o mesmo desenho usado por
provedores de API em produção — índice rápido para achar, verificador lento para
confirmar. Bancos criados antes da coluna existir são migrados automaticamente, e as
chaves antigas continuam válidas.
Limitação: isto não autentica o chamador
A tool lê a chave de os.getenv("GIULIA_AI_API_KEY") — do ambiente do próprio
servidor, não de um parâmetro enviado pelo cliente.
Em stdio o servidor MCP é um processo filho do cliente: um processo, um cliente. Não
existe "outro chamador" para distinguir — a fronteira de confiança é o sistema
operacional, não o protocolo. O que este projeto entrega é credencial bem guardada +
um gate de configuração.
Autenticação de chamador só passa a fazer sentido com transporte HTTP, com a chave viajando na requisição. Essa camada não está implementada aqui.
Testes
uv run pytest # 33 testes, contra SQLite temporárioCobrem o formato da chave, o não-vazamento do segredo no arquivo do banco, o
mascaramento, a validação (incluindo chave de outro usuário), a contagem de chamadas ao
bcrypt, a migração do lookup_hash e a revogação.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityBmaintenanceA personal MCP server for securely storing and accessing API keys across projects using the macOS Keychain, letting AI assistants and applications retrieve credentials through natural language.25
- Alicense-qualityCmaintenanceA secure MCP server for local API credential management using JSON storage and a read-only default mode. It allows users to list, retrieve, and manage credentials via simple command-line tools and environment-based configuration.MIT
- Alicense-qualityFmaintenanceA flexible, extensible framework for building MCP servers with API key authentication, user management, and dynamic tool sharing.1011MIT
- AlicenseCqualityDmaintenanceImplements a secure MCP server with API Key and JWT authentication, providing tools like echo, login, secure_action, and admin_action. Includes MCP Inspector integration for testing and debugging.13MIT
Related MCP Connectors
MCP server for interacting with the Supabase platform
MCP server for URL shortening and management
Cloud-hosted MCP server for durable AI memory
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/wganalytics/mcp-secure-server-giulia-ai'
If you have feedback or need assistance with the MCP directory API, please join our Discord server