# toolmesh

A self-hosted gateway that sits between your agent and your systems: describe a REST API in a .dadl file and keep access, secrets and call logs under your control.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 6
- Author: DunkelCloud
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/DunkelCloud/ToolMesh
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/mcp/toolmesh

## What it does

ToolMesh sits between the AI agent and your backend. Rather than building and maintaining a wrapper server, you describe the REST methods you need in a declarative YAML `.dadl` file and drop it into `config/dadl/`. Existing MCP servers can be proxied through it as well. Writing the file by hand is optional — any model that knows the DADL format can produce one.

Inside are the layers production setups usually lack. Secrets are injected at call time, so they stay out of prompts and out of the LLM client config. Authorization is on by default: OpenFGA rules decide who may call which tool, keyed to a user, role, plan or company. JavaScript policies block confidential data before execution and strip personal data from responses. Every call lands in structured logging or a queryable SQLite store, so you can answer with SQL what an agent actually did.

Set `TOOLMESH_AUTH_PASSWORD` or `TOOLMESH_API_KEY` in `.env` before starting: with neither a password nor a key, the server rejects every request. ToolMesh itself speaks plain HTTP, while most MCP clients insist on HTTPS, so a TLS-terminating proxy belongs in front — Caddy, Cloudflare Tunnel, nginx or Traefik. For local development you can skip TLS by editing `claude_desktop_config.json` by hand. The default port is 8123 and the MCP endpoint is `/mcp`.

## Requirements
- Remote server: `https://{host}:8123/mcp`

## Install

### Claude Code (native platform)

1. **Template address**
- The server address is a template: replace {…} or […] with your own values

2. **Platform CLI: remote server**
```bash
claude mcp add --transport http toolmesh https://{host}:8123/mcp
```

### Codex

1. **Template address**
- The server address is a template: replace {…} or […] with your own values

2. **Platform CLI: remote server**
```bash
codex mcp add toolmesh --url https://{host}:8123/mcp
```

### Cursor

1. **Template address**
- The server address is a template: replace {…} or […] with your own values

2. **Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "toolmesh": {
            "url": "https://{host}:8123/mcp"
        }
    }
}
```

### GitHub Copilot

1. **Template address**
- The server address is a template: replace {…} or […] with your own values

2. **Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "toolmesh": {
            "type": "http",
            "url": "https://{host}:8123/mcp"
        }
    }
}
```

### Gemini CLI

1. **Template address**
- The server address is a template: replace {…} or […] with your own values

2. **Platform CLI: remote server**
```bash
gemini mcp add -t http toolmesh https://{host}:8123/mcp
```

## When to use it
- wire an internal REST API into an agent without writing a wrapper server
- describe the API methods you need in a single YAML file
- give different roles different sets of tools
- keep tokens and passwords out of prompts and client configs
- reconstruct from the log what an agent called

## Example prompts
- Generate a `.dadl` for the GitHub API: list repos, open issues, create pull requests
- Add our billing endpoints to `config/dadl/` and expose them as tools
- Query the audit log for the tools the agent called in the last hour

## 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
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
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
