Skip to main content
Glama

CTX: Context as Code (CaC) tool

by context-hub
MIT License
235
  • Apple
  • Linux
ServerConfig.php2.01 kB
<?php declare(strict_types=1); namespace Butschster\ContextGenerator\Source\Gitlab\Config; use Butschster\ContextGenerator\Lib\Variable\VariableResolver; /** * Configuration for a GitLab server */ final readonly class ServerConfig implements \JsonSerializable { private function __construct( public string $url, public ?string $token, public array $headers, ) {} /** * Create a new GitLab server configuration * * @param string $url Server URL * @param string|null $token API token * @param array<string, string> $headers Custom HTTP headers */ public static function create( string $url, ?string $token = null, array $headers = [], ): self { return new self( url: $url, token: $token, headers: $headers, ); } public static function fromArray(array $config): self { if (!isset($config['url'])) { throw new \InvalidArgumentException('GitLab server configuration must have a "url" property'); } return self::create( url: (string) $config['url'], token: isset($config['token']) ? (string) $config['token'] : null, headers: (array) ($config['headers'] ?? []), ); } public function withResolvedVariables(VariableResolver $resolver): self { $resolvedHeaders = \array_map(static fn($value) => $resolver->resolve($value), $this->headers); return new self( url: $resolver->resolve($this->url), token: $this->token !== null ? $resolver->resolve($this->token) : null, headers: $resolvedHeaders, ); } public function jsonSerialize(): array { return \array_filter([ 'url' => $this->url, 'token' => $this->token, 'headers' => $this->headers, ], static fn($value) => $value !== null && (!\is_array($value) || !empty($value))); } }

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/context-hub/generator'

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