keyhall
Click on "Deploy 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., "@keyhalllist all the tools my token can access"
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.
Why
Every agent and every machine ends up with its own copy of every API key, its own OAuth login to every MCP server, and access to all of their tools. keyhall puts them in one place:
Connect once. Remote MCP servers (with OAuth), local MCP servers started by command (paste the same
mcpServersJSON you'd give Claude Desktop or Cursor), and any HTTP API, turned into MCP tools from its OpenAPI spec.Hand out narrow tokens. A token reaches a whole organization, one project, or a scope with hand-picked connections and tools, e.g. "the support bot may only list mail domains".
One endpoint. Every consumer uses
https://<your-keyhall>/mcp. Revoke one token without touching the others.Keep secrets in a vault. Reference them from connections (
{{secret:STRIPE_KEY}}), load them in scripts and CI through REST, or let agents read them through MCP when you allow it. Every read is logged.Encrypted at rest. AES-256-GCM, with the key outside the database. Consumers never see an upstream credential.
Related MCP server: connect
Quick start
Requires Docker with Compose. See requirements: 512 MB of RAM is enough.
mkdir keyhall && cd keyhall
base=https://raw.githubusercontent.com/luizgustavosaraiva/keyhall/main/deploy
curl -fsSLO $base/docker-compose.yml
curl -fsSL $base/.env.example -o .env
sed -i "s|^BETTER_AUTH_SECRET=.*|BETTER_AUTH_SECRET=$(openssl rand -base64 32)|" .env
sed -i "s|^KEYHALL_ENCRYPTION_KEY=.*|KEYHALL_ENCRYPTION_KEY=$(openssl rand -base64 32)|" .env
docker compose up -d
docker compose logs keyhall # copy the setup codeOpen http://localhost:8787, enter the setup code and create your account, then follow Getting started.
SaveKEYHALL_ENCRYPTION_KEY from .env in a password manager. Without it, nothing stored in
keyhall can be decrypted, not even from a backup.
Then connect a client:
claude mcp add --transport http --scope user keyhall https://<your-keyhall>/mcp \
--header "Authorization: Bearer kh_..."Deploy
Where | Guide |
Your own computer | |
Any VPS, with automatic HTTPS | |
Behind nginx, Traefik, Dokploy, Coolify… | |
Without Docker (Node.js + systemd) | |
Private, only for your devices (optional) |
Releases follow Semantic Versioning. Images are tagged X.Y.Z, X.Y and
latest; pin X.Y to get fixes without surprises. See operations for
upgrades, backups and key rotation.
Documentation
Getting started: from install to an agent calling tools
Concepts: organizations, projects, connections, scopes, tokens, secrets
Deploy and operations
API reference: MCP endpoint, secrets REST, proxy, health
Architecture, for contributors
Contributing
Issues and pull requests are welcome. Read CONTRIBUTING.md first; it covers the development setup, the checks CI runs, and the contribution terms. Please report vulnerabilities privately, as described in SECURITY.md. Changes are listed in the changelog.
License
PolyForm Noncommercial 1.0.0. Free for personal use, research, education, and noncommercial organizations. Commercial use requires a separate license from the author: open an issue or reach out through GitHub.
This server cannot be deployed
Maintenance
Related MCP Connectors
One MCP endpoint for your company's tools, with per-person sign-in, policy and audit.
Managed MCP gateway with OAuth, per-agent permissions, shared accounts and activity logs.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Secure and manage MCP servers through the Speakeasy AI Control Plane from your agent.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables agent clients to safely connect to tools and execution resources through MCP with authorization, approvals, audit, chat-context isolation, SSH/Docker access, and long-running command session tracking.MIT
- AlicenseNot gradedqualityBmaintenanceEnables teams to securely store and retrieve credentials, view decrypted secrets or live OAuth tokens, and connect to third-party MCP servers through a unified MCP endpoint.MIT
- AlicenseNot gradedqualityBmaintenanceEnables an agent to search approved MCP integrations and expose only the tools a given task needs, signing the user in once via browser-based OAuth and enforcing scopes, effects and budgets in code. It also acts as a single gateway connection so existing hosts can reach many servers with per-tenant isolation and audit events.MIT
- FlicenseNot gradedqualityAmaintenanceEnables teams to onboard remote MCP servers, enforce function-level allow lists and credential modes, and let developers expose permitted tool bundles through a unified MCP endpoint with search and execute functions while keeping permissions and auditing enforced.-