MCP Hangar
Policy enforcement plane for MCP: every tool call ends in a verdict.
Connector by mcp-hangar.ioOfficial · Domain verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/mcp-hangar-io-hangar
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: identity-access, monitoring-observability
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 12 read · 4 write · 1 delete · 6 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 23
Read from the source code; the running server may list different tools.
Read 12 · Look things up without changing anything.
hangar_detailshangar_discoveredhangar_fetch_continuationhangar_group_listhangar_healthhangar_listhangar_metricshangar_quarantinehangar_sourceshangar_statushangar_toolshangar_whoami
Write 4 · Create, change, send or run things.
hangar_approvehangar_callhangar_starthangar_stop
Delete 1 · Delete, drop, revoke or wipe things.
hangar_delete_continuation
Not yet classified 6 · We could not tell from the name and description.
hangar_discoverhangar_group_rebalancehangar_loadhangar_reload_confighangar_unloadhangar_warm
Secrets and settings it asks for
Other settings (environment variables or headers).
MCP_CONFIG
Tools (23)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
hangar_approveApprove a pending or quarantined mcp_server for registration. CHOOSE THIS when: ready to register a mcp_server from pending or quarantine list. CHOOSE hangar_discovered when: you need to review pending mcp_servers first. CHOOSE hangar_quarantine when: you need to see why a mcp_server was quarantined. Side effects: Registers the mcp_server in cold state. Removes from pending/quarantine. Args: mcp_server: str - McpServer name (from hangar_discovered or hangar_quarantine output) Returns: Success: {approved: true, mcp_server: str, status: "registered"} Not found: {approved: false, …
hangar_callInvoke tools on MCP mcp_servers (single or batch). CHOOSE THIS when: you want to execute tool(s) on mcp_server(s). This is the main entry point. CHOOSE hangar_tools when: you need to discover available tools before calling. CHOOSE hangar_start when: you only want to pre-warm without invoking. Side effects: May start cold mcp_servers. Executes calls in parallel. Concurrency model: Two levels of concurrency control apply simultaneously: 1. Per-batch: max_concurrency limits threads for THIS invocation. 2. System-wide: global and per-mcp_server semaphores (configured via conf…
hangar_delete_continuationDelete a cached continuation to free resources. CHOOSE THIS when: done with continuation data and want to free memory now. SKIP THIS for normal use - cached entries auto-expire based on TTL. Only the caller whose hangar_call produced the continuation can delete it. Side effects: Removes the cached response from memory. Args: continuation_id: str - ID of cached continuation (starts with "cont_") Returns: Success: {deleted: true, continuation_id: str} Not found: {deleted: false, continuation_id: str} Cache unavailable: {deleted: false, continuation_id: str, error: str} Exam…
hangar_detailsGet configuration and runtime info for a mcp_server or group. CHOOSE THIS when: you need mcp_server config, health history, or group membership. CHOOSE hangar_tools when: you need tool schemas for invoking. CHOOSE hangar_status when: you need quick overview of all mcp_servers. Side effects: None (read-only). Args: mcp_server: str - McpServer ID or Group ID Returns: McpServer: { mcp_server_id: str, state: str, mode: str, provenance: str, alive: bool, tools: [{name, description, inputSchema}], withheld_tools?: [{name, reason, di…
hangar_discoverTrigger immediate discovery scan across all enabled sources. CHOOSE THIS when: you deployed new mcp_servers and want to find them now. CHOOSE hangar_discovered when: listing mcp_servers already found, awaiting approval. CHOOSE hangar_sources when: checking which discovery sources are working. Side effects: Scans all enabled sources. Updates pending mcp_server list. Args: None Returns: Success: { discovered_count: int, registered_count: int, updated_count: int, deregistered_count: int, quarantined_count: int, error_count: int, …
hangar_discoveredList mcp_servers pending registration (awaiting approval). CHOOSE THIS when: reviewing what mcp_servers were found before approving. CHOOSE hangar_discover when: triggering a new scan to find mcp_servers. CHOOSE hangar_approve when: ready to register a pending mcp_server. Side effects: None (read-only). Args: None Returns: Success: { pending: [{ name: str, source: str, mode: str, discovered_at: str, fingerprint: str }] } Not configured: {error: str} Example: hangar_discovered() # {"pending"…
hangar_fetch_continuationFetch full or remaining content from a truncated batch response. CHOOSE THIS when: hangar_call returned truncated result with continuation_id. CHOOSE hangar_delete_continuation when: done with data and want to free memory. SKIP THIS when: result was not truncated (no continuation_id in response). Only the caller whose hangar_call produced the continuation can fetch it. Side effects: None (read-only cache access). Args: continuation_id: str - ID from truncated response (starts with "cont_") offset: int - Byte offset to start reading (default: 0) limit: int - Max bytes to retriev…
hangar_group_listList all mcp_server groups with per-member details. CHOOSE THIS when: you need member-level details (rotation, weights, individual states). CHOOSE hangar_list when: you need group summaries with mcp_server list. CHOOSE hangar_details when: you need full info for a specific group. Side effects: None (read-only). Args: None Returns: { groups: [{ group_id: str, description: str, state: str, strategy: str, min_healthy: int, healthy_count: int, members_in_rotation_count: int, total_me…
hangar_group_rebalanceForce rebalancing for a mcp_server group. CHOOSE THIS when: after manual intervention, or to recover members faster than auto. CHOOSE hangar_start when: starting all group members from cold state. SKIP THIS for normal operation - rebalancing happens automatically on health failures. Side effects: Re-checks all members. Recovered members rejoin rotation, failed removed. Args: group: str - Group ID Returns: { group_id: str, state: str, healthy_count: int, members_in_rotation_count: int, total_members: int, members_in_rotation: list[str]…
hangar_healthGet registry health status including security metrics. CHOOSE THIS when: quick health check, monitoring dashboard, security overview. CHOOSE hangar_metrics when: detailed per-mcp_server stats, tool call counts, Prometheus. CHOOSE hangar_status when: human-readable dashboard with visual indicators. SCOPE: replica-local. The answer describes the replica that served this call, named in replica.instance_id, not the whole fleet. Another replica can answer differently at the same moment. Reads the same snapshot as hangar_status, so the two tools agree when one replica answers both. Side effects: …
hangar_listList all mcp_servers and groups with precise numeric values. CHOOSE THIS when: you need exact data for processing, filtering, or automation. CHOOSE hangar_status when: you need human-readable dashboard with visual indicators. CHOOSE hangar_group_list when: you need member-level details (rotation, weights). Side effects: None (read-only). Args: state_filter: str - Filter by state: "cold", "ready", "degraded", "dead" (default: null) Returns: { mcp_servers: [{ mcp_server_id: str, state: str, mode: str, alive: bool, to…
hangar_loadLoad an MCP mcp_server from the official registry at runtime. CHOOSE THIS when: you need a capability not in configured mcp_servers. CHOOSE hangar_start when: mcp_server is already configured, just needs starting. CHOOSE hangar_call when: mcp_server is configured and you want to invoke it directly. NOTE: Loaded mcp_servers are ephemeral (lost on restart). Browse: https://mcp.so/servers Side effects: Downloads and starts mcp_server process. Adds to runtime registry. Args: name: str - McpServer name from registry (e.g., "time", "stripe", "mcp-server-github") force_unverified: bool - L…
hangar_metricsGet detailed metrics for mcp_servers, groups, and system components. CHOOSE THIS when: debugging, performance analysis, Prometheus scraping, tool call stats. CHOOSE hangar_health when: quick health check with security metrics. CHOOSE hangar_status when: human-readable overview for display. Side effects: None (read-only). Args: format: str - Output format: "json" or "prometheus" (default: "json") Returns: JSON format: { mcp_servers: {<id>: {state, mode, tools_count, invocations, errors, avg_latency_ms}}, groups: {<id>: {state, strategy, total_members, healthy_members…
hangar_quarantineList quarantined mcp_servers with failure reasons. CHOOSE THIS when: investigating why mcp_servers failed validation or health checks. CHOOSE hangar_discovered when: listing mcp_servers that passed validation. CHOOSE hangar_approve when: ready to restore a quarantined mcp_server. Side effects: None (read-only). Args: None Returns: Success: { quarantined: [{ name: str, source: str, reason: str, quarantine_time: str }] } Not configured: {error: str} Example: hangar_quarantine() # {"quarantined": [{"name"…
hangar_reload_configReload configuration from file and apply changes. CHOOSE THIS when: you modified config.yaml and want to apply changes without restarting. NOTE: Preserves unchanged mcp_servers (no restart), only affects added/removed/updated. Side effects: Stops/starts mcp_servers based on configuration changes. Args: graceful: bool - If True, wait for idle state before stopping (default: true) Returns: On success: { status: "success", message: str, mcp_servers_added: [str], mcp_servers_removed: [str], mcp_servers_updated: [str], mcp_servers_unch…
Show 8 more tools
hangar_sourcesList discovery sources with health status. CHOOSE THIS when: diagnosing why mcp_servers are not being discovered. CHOOSE hangar_discover when: triggering a scan after fixing source issues. CHOOSE hangar_health when: checking overall system health, not just discovery. Side effects: None (read-only). Args: None Returns: Success: { sources: [{ id: str, source_type: str, mode: str, is_healthy: bool, is_enabled: bool, last_discovery: str | null, mcp_servers_count: int, error_message: …
hangar_startStart a mcp_server or all members of a group. CHOOSE THIS when: you need to verify startup works or pre-warm a specific mcp_server/group. CHOOSE hangar_warm when: you need to pre-warm multiple mcp_servers at once. CHOOSE hangar_call when: you want to invoke a tool (auto-starts cold mcp_servers). SKIP THIS when: you just want to call a tool - hangar_call auto-starts mcp_servers. Side effects: Starts mcp_server process/container. State changes from cold to ready. Args: mcp_server: str - McpServer ID or Group ID Returns: McpServer: {mcp_server: str, state: str, tools: list[str]} G…
hangar_statusGet a human-readable status dashboard of the replica that answers. CHOOSE THIS when: you need to display status to user or quick health overview. CHOOSE hangar_list when: you need exact values for processing or filtering. CHOOSE hangar_health when: you need system health with security metrics. SCOPE: replica-local. With more than one replica, this is what the replica named in replica.instance_id knows, not the fleet. Two calls can reach two replicas and disagree without anything having changed. Uptime is that replica's process uptime. Reads the same snapshot as hangar_health, so the two agre…
hangar_stopStop a mcp_server or all members of a group. CHOOSE THIS when: you need to force restart or free resources immediately. CHOOSE hangar_unload when: removing a hot-loaded mcp_server permanently. SKIP THIS when: "cleaning up" between calls - mcp_servers auto-manage via idle_ttl. Side effects: Stops mcp_server process/container. State changes to cold. Args: mcp_server: str - McpServer ID or Group ID Returns: McpServer: {stopped: str, reason: str} Group: {group: str, state: str, stopped: bool} Error: ValueError with "unknown_mcp_server: <id>" Example: hangar_stop("math") …
hangar_toolsGet tool schemas (JSON Schema) for a mcp_server. CHOOSE THIS when: you need tool names and input schemas before calling. CHOOSE hangar_details when: you need mcp_server config, health, or runtime info. CHOOSE hangar_call when: you already know the tool name and want to invoke it. Side effects: May start a cold mcp_server named directly to discover its tools. A group's listing reads what a member in rotation already discovered; it selects and starts none. Args: mcp_server: str - McpServer ID or Group ID Returns: McpServer: { mcp_server: str, state: str, prede…
hangar_unloadUnload a hot-loaded mcp_server. CHOOSE THIS when: removing a mcp_server loaded via hangar_load. CHOOSE hangar_stop when: stopping a configured mcp_server (will auto-restart on call). NOTE: Only works for hot-loaded mcp_servers, not configured ones. Side effects: Stops mcp_server process. Removes from runtime registry. Args: mcp_server: str - McpServer ID (from hangar_load result) Returns: Success: {status: "unloaded", mcp_server: str, message: str, lifetime_seconds: float} Not hot-loaded: {status: "not_hot_loaded", mcp_server: str, message: str} Not configured: {status: "fa…
hangar_warmPre-start mcp_servers to avoid cold start latency on first hangar_call. CHOOSE THIS when: warming multiple mcp_servers before latency-sensitive batch. CHOOSE hangar_start when: starting a specific mcp_server or group. CHOOSE hangar_call when: invoking tools (auto-starts, latency acceptable). SKIP THIS for normal use - hangar_call auto-starts mcp_servers. Side effects: Starts specified mcp_server processes. Groups are skipped. Warming all skips dead mcp_servers; name one to start it. Args: mcp_servers: str - Comma-separated mcp_server IDs, or null to warm all Returns: { warm…
hangar_whoamiShow who this gateway thinks you are: principal, tenant, groups and roles. CHOOSE THIS when: a call was refused and you need to know which identity and which role bindings the gateway judged it by. Reads only your own identity; there is no way to ask about another principal or tenant. Needs no permission, but needs an authenticated caller: with auth off, or anonymously, there is no identity and this tool is not offered. Side effects: None (read-only). Returns: { principal: {id: str, type: str}, tenant_id: str | null, groups: [str], roles: [{role: str, sc…
Compare and alternatives
Featured in
Signals
- Stars
- 18
- Forks
- 10
- Open issues
- 67
- Weekly downloads
- 1,306
- Last commit
- Oct 24, 2026 (4 days ago)
- Last release
- Oct 25, 2026 (3 days ago)
- Last package publish
- Oct 24, 2026 (4 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.mcp-hangar/hangar- Version
- 2.34.3
- Auth
- No auth
- Packages
- pypi mcp-hangar
- License
- MIT
- Repository
- github.com/mcp-hangar/mcp-hangar
- Website
- mcp-hangar.io
- First seen
- Oct 24, 2026
- Last checked
- Oct 26, 2026
Cite this page
MCP Hangar. Agent Mart. https://agentmart.dev/connectors/mcp-hangar-io-hangar (last updated 2026-10-26)