Skip to main content
Glama

CTX: Context as Code (CaC) tool

by context-hub
MIT License
235
  • Apple
  • Linux
GetDocumentContentResourceAction.php1.89 kB
<?php declare(strict_types=1); namespace Butschster\ContextGenerator\McpServer\Action\Resources; use Butschster\ContextGenerator\Application\Logger\LoggerPrefix; use Butschster\ContextGenerator\Config\Loader\ConfigLoaderInterface; use Butschster\ContextGenerator\Config\Registry\ConfigRegistryAccessor; use Butschster\ContextGenerator\Document\Compiler\DocumentCompiler; use Butschster\ContextGenerator\Document\Compiler\Error\ErrorCollection; use Butschster\ContextGenerator\McpServer\Routing\Attribute\Get; use PhpMcp\Schema\Content\TextResourceContents; use PhpMcp\Schema\Result\ReadResourceResult; use Psr\Http\Message\ServerRequestInterface; use Psr\Log\LoggerInterface; final readonly class GetDocumentContentResourceAction { public function __construct( #[LoggerPrefix(prefix: 'resources.ctx.document')] private LoggerInterface $logger, private ConfigLoaderInterface $configLoader, private DocumentCompiler $compiler, ) {} #[Get(path: '/resource/ctx/document/{path:.*}', name: 'resources.ctx.document')] public function __invoke(ServerRequestInterface $request): ReadResourceResult { $path = $request->getAttribute('path'); $this->logger->info('Getting document content', ['path' => $path]); $config = new ConfigRegistryAccessor($this->configLoader->load()); $contents = []; foreach ($config->getDocuments() as $document) { if ($document->outputPath === $path) { $contents[] = new TextResourceContents( uri: 'ctx://document/' . $document->outputPath, mimeType: 'text/markdown', text: (string) $this->compiler->buildContent(new ErrorCollection(), $document)->content, ); break; } } return new ReadResourceResult($contents); } }

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