aether-mcp-utils 0.5.34

MCP client and server utilities for the Aether AI agent framework
Documentation
A single MCP server. The `type` field selects the transport; `stdio` is the
default and may be omitted.

A local stdio server launched as a subprocess:

```json
{
  "type": "stdio",
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-github"],
  "env": { "GITHUB_TOKEN": "ghp_..." }
}
```

A remote streamable-HTTP server using a pre-registered public OAuth client:

```json
{
  "type": "http",
  "url": "https://mcp.slack.com/mcp",
  "oauth": {
    "clientId": "1601185624273.8899143856786",
    "callbackPort": 3118
  }
}
```

When a remote HTTP server returns an OAuth challenge, Aether uses its first-party
Client ID Metadata Document at
`https://aether-agent.io/oauth/client-metadata.json` and listens on
`127.0.0.1:3118`, advertising the exact redirect URI `http://localhost:3118/`.
If port 3118 is occupied, authentication fails until the port is available.

The `oauth` object is optional. Set `clientMetadataUrl` for a custom CIMD, or
`clientId` for a pre-registered public client; a configured `clientId` takes
priority. `callbackPort` defaults to 3118 and must exactly match the client's
registered redirect URI. If the authorization server does not advertise CIMD,
Aether falls back to deprecated Dynamic Client Registration. An explicit
`Authorization` header bypasses OAuth entirely.

A remote server using a bearer token:

```json
{
  "type": "http",
  "url": "https://mcp.example.com",
  "headers": { "Authorization": "Bearer ..." }
}
```

Set `"deferTools": true` to omit every tool on this server from the model-visible
tool definitions and make it available through progressive `aether mcp` discovery.
For selective deferral, set `deferTools` to an object with `include` and `exclude`
lists. Entries match either an exact MCP-local tool name or a prefix ending in `*`:

```json
{
  "type": "in-memory",
  "deferTools": {
    "include": ["*"],
    "exclude": ["bash", "lsp_*"]
  }
}
```