Skip to main content
Glama
app.erl2.97 kB
%% Main application module -module(app). -behaviour(application). -include("../include/records.hrl"). %% Application callbacks -export([ start/2, stop/1 ]). %% API exports -export([ start_services/0, stop_services/0, get_config/0, health_check/0 ]). %%%=================================================================== %%% Application callbacks %%%=================================================================== -spec start(application:start_type(), term()) -> {ok, pid()} | {error, term()}. start(_StartType, _StartArgs) -> io:format("Starting test application~n"), case start_services() of ok -> supervisor:start_link({local, app_sup}, ?MODULE, []); {error, Reason} -> {error, Reason} end. -spec stop(term()) -> ok. stop(_State) -> io:format("Stopping test application~n"), stop_services(), ok. %%%=================================================================== %%% API functions %%%=================================================================== -spec start_services() -> ok | {error, term()}. start_services() -> try {ok, _Pid} = services:start_link(), io:format("Services started successfully~n"), ok catch error:Reason -> io:format("Failed to start services: ~p~n", [Reason]), {error, Reason} end. -spec stop_services() -> ok. stop_services() -> try services:stop(), io:format("Services stopped successfully~n"), ok catch error:Reason -> io:format("Error stopping services: ~p~n", [Reason]), ok end. -spec get_config() -> #config{}. get_config() -> #config{ database_url = "postgresql://localhost:5432/testdb", port = 8080, debug = true }. -spec health_check() -> {ok, #{atom() => term()}} | {error, term()}. health_check() -> try Stats = services:get_statistics(), Config = get_config(), HealthInfo = #{ status => healthy, timestamp => utils:timestamp(), config => Config, statistics => Stats, uptime => erlang:statistics(wall_clock) }, {ok, HealthInfo} catch error:Reason -> {error, {health_check_failed, Reason}} end. %%%=================================================================== %%% Supervisor callbacks (simple implementation) %%%=================================================================== init([]) -> %% Simple supervisor strategy SupFlags = #{ strategy => one_for_one, intensity => 5, period => 10 }, ChildSpecs = [ #{ id => services, start => {services, start_link, []}, restart => permanent, shutdown => 5000, type => worker, modules => [services] } ], {ok, {SupFlags, ChildSpecs}}.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ryota-murakami/serena'

If you have feedback or need assistance with the MCP directory API, please join our Discord server