# Env Yaml Converter — MCP tool `findutils:env_yaml_converter`

Convert a dotenv .env file to a flat YAML map, or YAML back to KEY=value lines. The shape option wraps the map as a pasteable Docker Compose (services.app.environment) or GitHub Actions (jobs.app.env) snippet rather than a whole file. Comments, blank lines and an "export " prefix are handled, and a duplicate key keeps the last value and is reported. Values stay strings unless infer_types is on, matching what process.env returns. The reverse direction accepts a flat mapping or one of those snippet shapes and rejects nested values instead of inventing nested names. Not a Kubernetes Secret generator and not a shell parser.

- Category: data
- MCP server: https://mcp.findutils.com/ (Streamable HTTP, no API keys, 120 req/min per IP)
- REST endpoint: POST https://api.findutils.com/api/tools/env-yaml-converter/execute (no API keys, 60 req/min per IP)
- Reference page: https://findutils.com/mcp/env-yaml-converter/
- Same tool on the other surface: https://findutils.com/api/env-yaml-converter/

## Connect

```bash
claude mcp add findutils --transport http https://mcp.findutils.com/
```

Claude Desktop (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "findutils": {
      "url": "https://mcp.findutils.com/"
    }
  }
}
```

## Call the tool (verified example)

```bash
curl -X POST https://mcp.findutils.com/ \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "env_yaml_converter",
      "arguments": {
        "input": "API_URL=https://example.com\nDEBUG=true"
      }
    }
  }'
```

## Input schema

| Argument | Type | Required | Description |
|---|---|---|---|
| `input` | string | yes | The .env text or the YAML document to convert. |
| `mode` | string (env-to-yaml \| yaml-to-env) | no | Conversion direction. Default: env-to-yaml. Default: `"env-to-yaml"`. |
| `shape` | string (plain \| compose \| actions) | no | env-to-yaml: "plain" is a flat map (default); "compose" wraps it under services.app.environment; "actions" wraps it under jobs.app.env. Default: `"plain"`. |
| `indent` | integer | no | env-to-yaml: YAML indentation width (1-8). Default: 2. Default: `2`. |
| `infer_types` | boolean | no | env-to-yaml: turn unquoted numbers, true, false and null into YAML types. Default: false (every value stays a string, as process.env returns it). Default: `false`. |
| `skip_empty` | boolean | no | Leave out keys whose value is empty. Default: false. Default: `false`. |
| `export_prefix` | boolean | no | yaml-to-env: prefix every line with "export ". Default: false. Default: `false`. |

Example arguments (verified):

```json
{
  "input": "API_URL=https://example.com\nDEBUG=true"
}
```

## Also a REST endpoint

```bash
curl -X POST https://api.findutils.com/api/tools/env-yaml-converter/execute \
  -H "Content-Type: application/json" \
  -d '{
    "input": "API_URL=https://example.com\nDEBUG=true"
  }'

# Parameter schema
curl https://api.findutils.com/api/tools/env-yaml-converter
```

Full REST reference: https://findutils.com/api/env-yaml-converter/ · OpenAPI 3.1 spec: https://findutils.com/api/openapi.json

---
Full catalog: POST https://mcp.findutils.com/ with method `tools/list` · https://findutils.com/mcp/ · https://findutils.com/llms.txt
