# `OpenCode.Generated.Mcp`
[🔗](https://github.com/UtkarshUsername/opencode-sdk-elixir/blob/v0.1.84/lib/opencode/generated/mcp.ex#L1)

Provides API endpoints related to mcp

# `mcp_auth_remove_200_json_resp`

```elixir
@type mcp_auth_remove_200_json_resp() :: %{success: true}
```

# `mcp_auth_start_200_json_resp`

```elixir
@type mcp_auth_start_200_json_resp() :: %{
  authorization_url: String.t(),
  oauth_state: String.t()
}
```

# `mcp_add`

```elixir
@spec mcp_add(body :: map(), opts :: keyword()) ::
  {:ok, map()}
  | {:error,
     OpenCode.Generated.EffectHttpApiErrorBadRequest.t()
     | OpenCode.Generated.InvalidRequestError.t()}
```

Add MCP server

Dynamically add a new Model Context Protocol (MCP) server to the system.

## Options

  * `directory`
  * `workspace`

## Request Body

**Content Types**: `application/json`

# `mcp_auth_authenticate`

```elixir
@spec mcp_auth_authenticate(name :: String.t(), opts :: keyword()) ::
  {:ok,
   OpenCode.Generated.MCPStatusConnected.t()
   | OpenCode.Generated.MCPStatusDisabled.t()
   | OpenCode.Generated.MCPStatusFailed.t()
   | OpenCode.Generated.MCPStatusNeedsAuth.t()
   | OpenCode.Generated.MCPStatusNeedsClientRegistration.t()}
  | {:error,
     OpenCode.Generated.InvalidRequestError.t()
     | OpenCode.Generated.McpServerNotFoundError.t()
     | OpenCode.Generated.McpUnsupportedOAuthError.t()}
```

Authenticate MCP OAuth

Start OAuth flow and wait for callback (opens browser).

## Options

  * `directory`
  * `workspace`

# `mcp_auth_callback`

```elixir
@spec mcp_auth_callback(name :: String.t(), body :: map(), opts :: keyword()) ::
  {:ok,
   OpenCode.Generated.MCPStatusConnected.t()
   | OpenCode.Generated.MCPStatusDisabled.t()
   | OpenCode.Generated.MCPStatusFailed.t()
   | OpenCode.Generated.MCPStatusNeedsAuth.t()
   | OpenCode.Generated.MCPStatusNeedsClientRegistration.t()}
  | {:error,
     OpenCode.Generated.EffectHttpApiErrorBadRequest.t()
     | OpenCode.Generated.InvalidRequestError.t()
     | OpenCode.Generated.McpServerNotFoundError.t()}
```

Complete MCP OAuth

Complete OAuth authentication for a Model Context Protocol (MCP) server using the authorization code.

## Options

  * `directory`
  * `workspace`

## Request Body

**Content Types**: `application/json`

# `mcp_auth_remove`

```elixir
@spec mcp_auth_remove(name :: String.t(), opts :: keyword()) ::
  {:ok, mcp_auth_remove_200_json_resp()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.McpServerNotFoundError.t()}
```

Remove MCP OAuth

Remove OAuth credentials for an MCP server.

## Options

  * `directory`
  * `workspace`

# `mcp_auth_start`

```elixir
@spec mcp_auth_start(name :: String.t(), opts :: keyword()) ::
  {:ok, mcp_auth_start_200_json_resp()}
  | {:error,
     OpenCode.Generated.InvalidRequestError.t()
     | OpenCode.Generated.McpServerNotFoundError.t()
     | OpenCode.Generated.McpUnsupportedOAuthError.t()}
```

Start MCP OAuth

Start OAuth authentication flow for a Model Context Protocol (MCP) server.

## Options

  * `directory`
  * `workspace`

# `mcp_connect`

```elixir
@spec mcp_connect(name :: String.t(), opts :: keyword()) ::
  {:ok, boolean()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.McpServerNotFoundError.t()}
```

post `/mcp/{name}/connect`

Connect an MCP server.

## Options

  * `directory`
  * `workspace`

# `mcp_disconnect`

```elixir
@spec mcp_disconnect(name :: String.t(), opts :: keyword()) ::
  {:ok, boolean()}
  | {:error,
     OpenCode.Generated.BadRequestError.t()
     | OpenCode.Generated.McpServerNotFoundError.t()}
```

post `/mcp/{name}/disconnect`

Disconnect an MCP server.

## Options

  * `directory`
  * `workspace`

# `mcp_status`

```elixir
@spec mcp_status(opts :: keyword()) ::
  {:ok, map()} | {:error, OpenCode.Generated.BadRequestError.t()}
```

Get MCP status

Get the status of all Model Context Protocol (MCP) servers.

## Options

  * `directory`
  * `workspace`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
