# HAL

HAL lets an AI client make HTTP requests and can create tools from an OpenAPI specification. Use it when an agent needs to call your project’s API.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 38
- Author: DeanWard
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/DeanWard/HAL
- Updated: 2025-10-22
- HTML: https://affpapa.org/en/nevibecode/mcp/hal

## What it does

HAL is an MCP server for HTTP calls. It supports GET, POST, PUT, PATCH, DELETE, OPTIONS, and HEAD requests, and can build API tools from an OpenAPI or Swagger specification. Provide that specification as a file or URL.

Set credentials in environment variables prefixed with `HAL_SECRET_`, then refer to them in requests with placeholders such as `{secrets.api_key}`. HAL inserts the values when making a request and redacts them from returned responses, headers, and error messages. The secrets must be configured in the server environment first.

URL allowlists and blocklists can limit which addresses the server may access. Set `HAL_SWAGGER_FILE` to load an API specification and `HAL_API_BASE_URL` to provide a base address. Start the server with `npx -y hal-mcp`.

## Requirements
- Needs: Node.js (commands run via npx)

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add hal -- npx -y hal-mcp
```

### Codex

**Platform CLI**
```bash
codex mcp add hal -- npx -y hal-mcp
```

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "hal": {
            "command": "npx",
            "args": [
                "-y",
                "hal-mcp"
            ]
        }
    }
}
```

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "hal": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "hal-mcp"
            ]
        }
    }
}
```

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add hal npx -y hal-mcp
```

## When to use it
- send HTTP requests to an API from an agent chat
- generate callable tools from an OpenAPI specification
- use an API key without exposing its value to the model
- restrict API access to selected URLs

## Example prompts
- Fetch the project’s task list through its HTTP API.
- Build tools from the OpenAPI specification and call the profile endpoint.
- Call the API using `HAL_SECRET_API_KEY` without revealing its value.

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89408
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [Front-End Checklist](https://affpapa.org/en/nevibecode/mcp/front-end-checklist.md) — MCP server · ★ 74559
- [Scrapling MCP Server](https://affpapa.org/en/nevibecode/mcp/scrapling-mcp-server.md) — MCP server · ★ 89433

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
