Current section

Files

Jump to
opencode_sdk lib opencode generated mcp.ex
Raw

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.EffectHttpApiErrorBadRequest.t()
| OpenCode.Generated.InvalidRequestError.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,
{:union,
[
{OpenCode.Generated.EffectHttpApiErrorBadRequest, :t},
{OpenCode.Generated.InvalidRequestError, :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.InvalidRequestError.t()
| OpenCode.Generated.McpServerNotFoundError.t()
| OpenCode.Generated.McpUnsupportedOAuthError.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,
{:union,
[
{OpenCode.Generated.InvalidRequestError, :t},
{OpenCode.Generated.McpUnsupportedOAuthError, :t}
]}},
{404, {OpenCode.Generated.McpServerNotFoundError, :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.EffectHttpApiErrorBadRequest.t()
| OpenCode.Generated.InvalidRequestError.t()
| OpenCode.Generated.McpServerNotFoundError.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,
{:union,
[
{OpenCode.Generated.EffectHttpApiErrorBadRequest, :t},
{OpenCode.Generated.InvalidRequestError, :t}
]}},
{404, {OpenCode.Generated.McpServerNotFoundError, :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.BadRequestError.t()
| OpenCode.Generated.McpServerNotFoundError.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}},
{400, {OpenCode.Generated.BadRequestError, :t}},
{404, {OpenCode.Generated.McpServerNotFoundError, :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.InvalidRequestError.t()
| OpenCode.Generated.McpServerNotFoundError.t()
| OpenCode.Generated.McpUnsupportedOAuthError.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,
{:union,
[
{OpenCode.Generated.InvalidRequestError, :t},
{OpenCode.Generated.McpUnsupportedOAuthError, :t}
]}},
{404, {OpenCode.Generated.McpServerNotFoundError, :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,
OpenCode.Generated.BadRequestError.t()
| OpenCode.Generated.McpServerNotFoundError.t()}
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},
{400, {OpenCode.Generated.BadRequestError, :t}},
{404, {OpenCode.Generated.McpServerNotFoundError, :t}}
],
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,
OpenCode.Generated.BadRequestError.t()
| OpenCode.Generated.McpServerNotFoundError.t()}
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},
{400, {OpenCode.Generated.BadRequestError, :t}},
{404, {OpenCode.Generated.McpServerNotFoundError, :t}}
],
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, OpenCode.Generated.BadRequestError.t()}
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}, {400, {OpenCode.Generated.BadRequestError, :t}}],
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