Packages
opencode_sdk
0.1.58
0.1.84
0.1.83
0.1.82
0.1.81
0.1.80
0.1.79
0.1.78
0.1.77
0.1.76
0.1.75
0.1.74
0.1.73
0.1.72
0.1.71
0.1.70
0.1.69
0.1.68
0.1.67
0.1.66
0.1.65
0.1.64
0.1.63
0.1.62
0.1.61
0.1.60
0.1.59
0.1.58
0.1.57
0.1.56
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.50
0.1.49
0.1.48
0.1.47
0.1.46
0.1.45
0.1.44
0.1.43
0.1.42
0.1.41
0.1.40
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
0.1.31
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Unofficial OpenCode SDK for Elixir. A complete Elixir SDK for OpenCode, providing server creation, session management, messaging, file operations, and more. Mirrors the functionality of the official JavaScript SDK (@opencode-ai/sdk). Not affiliated with or built by the OpenCode team.
Current section
Files
Jump to
Current section
Files
lib/opencode/generated/mcp.ex
defmodule OpenCode.Generated.Mcp do
@moduledoc """
Provides API endpoints related to mcp
"""
@default_client OpenCode.Client
@doc """
Add MCP server
Dynamically add a new Model Context Protocol (MCP) server to the system.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec mcp_add(body :: map, opts :: keyword) ::
{:ok, map} | {:error, OpenCode.Generated.BadRequestError.t()}
def mcp_add(body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [body: body],
call: {OpenCode.Generated.Mcp, :mcp_add},
url: "/mcp",
body: body,
method: :post,
query: query,
request: [{"application/json", :map}],
response: [{200, :map}, {400, {OpenCode.Generated.BadRequestError, :t}}],
opts: opts
})
end
@doc """
Authenticate MCP OAuth
Start OAuth flow and wait for callback (opens browser).
## Options
* `directory`
* `workspace`
"""
@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.McpUnsupportedOAuthError.t()
| OpenCode.Generated.NotFoundError.t()}
def mcp_auth_authenticate(name, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [name: name],
call: {OpenCode.Generated.Mcp, :mcp_auth_authenticate},
url: "/mcp/#{name}/auth/authenticate",
method: :post,
query: query,
response: [
{200,
{:union,
[
{OpenCode.Generated.MCPStatusConnected, :t},
{OpenCode.Generated.MCPStatusDisabled, :t},
{OpenCode.Generated.MCPStatusFailed, :t},
{OpenCode.Generated.MCPStatusNeedsAuth, :t},
{OpenCode.Generated.MCPStatusNeedsClientRegistration, :t}
]}},
{400, {OpenCode.Generated.McpUnsupportedOAuthError, :t}},
{404, {OpenCode.Generated.NotFoundError, :t}}
],
opts: opts
})
end
@doc """
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`
"""
@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.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
def mcp_auth_callback(name, body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [name: name, body: body],
call: {OpenCode.Generated.Mcp, :mcp_auth_callback},
url: "/mcp/#{name}/auth/callback",
body: body,
method: :post,
query: query,
request: [{"application/json", :map}],
response: [
{200,
{:union,
[
{OpenCode.Generated.MCPStatusConnected, :t},
{OpenCode.Generated.MCPStatusDisabled, :t},
{OpenCode.Generated.MCPStatusFailed, :t},
{OpenCode.Generated.MCPStatusNeedsAuth, :t},
{OpenCode.Generated.MCPStatusNeedsClientRegistration, :t}
]}},
{400, {OpenCode.Generated.BadRequestError, :t}},
{404, {OpenCode.Generated.NotFoundError, :t}}
],
opts: opts
})
end
@type mcp_auth_remove_200_json_resp :: %{success: true}
@doc """
Remove MCP OAuth
Remove OAuth credentials for an MCP server.
## Options
* `directory`
* `workspace`
"""
@spec mcp_auth_remove(name :: String.t(), opts :: keyword) ::
{:ok, OpenCode.Generated.Mcp.mcp_auth_remove_200_json_resp()}
| {:error, OpenCode.Generated.NotFoundError.t()}
def mcp_auth_remove(name, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [name: name],
call: {OpenCode.Generated.Mcp, :mcp_auth_remove},
url: "/mcp/#{name}/auth",
method: :delete,
query: query,
response: [
{200, {OpenCode.Generated.Mcp, :mcp_auth_remove_200_json_resp}},
{404, {OpenCode.Generated.NotFoundError, :t}}
],
opts: opts
})
end
@type mcp_auth_start_200_json_resp :: %{authorization_url: String.t(), oauth_state: String.t()}
@doc """
Start MCP OAuth
Start OAuth authentication flow for a Model Context Protocol (MCP) server.
## Options
* `directory`
* `workspace`
"""
@spec mcp_auth_start(name :: String.t(), opts :: keyword) ::
{:ok, OpenCode.Generated.Mcp.mcp_auth_start_200_json_resp()}
| {:error,
OpenCode.Generated.McpUnsupportedOAuthError.t()
| OpenCode.Generated.NotFoundError.t()}
def mcp_auth_start(name, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [name: name],
call: {OpenCode.Generated.Mcp, :mcp_auth_start},
url: "/mcp/#{name}/auth",
method: :post,
query: query,
response: [
{200, {OpenCode.Generated.Mcp, :mcp_auth_start_200_json_resp}},
{400, {OpenCode.Generated.McpUnsupportedOAuthError, :t}},
{404, {OpenCode.Generated.NotFoundError, :t}}
],
opts: opts
})
end
@doc """
post `/mcp/{name}/connect`
Connect an MCP server.
## Options
* `directory`
* `workspace`
"""
@spec mcp_connect(name :: String.t(), opts :: keyword) :: {:ok, boolean} | :error
def mcp_connect(name, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [name: name],
call: {OpenCode.Generated.Mcp, :mcp_connect},
url: "/mcp/#{name}/connect",
method: :post,
query: query,
response: [{200, :boolean}],
opts: opts
})
end
@doc """
post `/mcp/{name}/disconnect`
Disconnect an MCP server.
## Options
* `directory`
* `workspace`
"""
@spec mcp_disconnect(name :: String.t(), opts :: keyword) :: {:ok, boolean} | :error
def mcp_disconnect(name, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [name: name],
call: {OpenCode.Generated.Mcp, :mcp_disconnect},
url: "/mcp/#{name}/disconnect",
method: :post,
query: query,
response: [{200, :boolean}],
opts: opts
})
end
@doc """
Get MCP status
Get the status of all Model Context Protocol (MCP) servers.
## Options
* `directory`
* `workspace`
"""
@spec mcp_status(opts :: keyword) :: {:ok, map} | :error
def mcp_status(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Mcp, :mcp_status},
url: "/mcp",
method: :get,
query: query,
response: [{200, :map}],
opts: opts
})
end
@doc false
@spec __fields__(atom) :: keyword
def __fields__(:mcp_auth_remove_200_json_resp) do
[success: {:const, true}]
end
def __fields__(:mcp_auth_start_200_json_resp) do
[authorization_url: :string, oauth_state: :string]
end
end