Current section
Files
Jump to
Current section
Files
lib/codex/app_server/mcp.ex
defmodule Codex.AppServer.Mcp do
@moduledoc false
alias Codex.AppServer.Connection
alias Codex.AppServer.Params
@type connection :: pid()
@spec list_servers(connection(), keyword()) :: {:ok, map()} | {:error, term()}
def list_servers(conn, opts \\ []) when is_pid(conn) and is_list(opts) do
params =
%{}
|> Params.put_optional("cursor", Keyword.get(opts, :cursor))
|> Params.put_optional("limit", Keyword.get(opts, :limit))
Connection.request(conn, "mcpServers/list", params, timeout_ms: 30_000)
end
@spec oauth_login(connection(), keyword()) :: {:ok, map()} | {:error, term()}
def oauth_login(conn, opts) when is_pid(conn) and is_list(opts) do
name = Keyword.fetch!(opts, :name)
params =
%{"name" => name}
|> Params.put_optional("scopes", Keyword.get(opts, :scopes))
|> Params.put_optional("timeoutSecs", Keyword.get(opts, :timeout_secs))
Connection.request(conn, "mcpServer/oauth/login", params, timeout_ms: 30_000)
end
end