Skip to main content
Glama

CTX: Context as Code (CaC) tool

by context-hub
MIT License
235
  • Apple
  • Linux
GenerateConfigAction.php4.55 kB
<?php declare(strict_types=1); namespace Butschster\ContextGenerator\McpServer\Action\Resources; use Butschster\ContextGenerator\DirectoriesInterface; use Butschster\ContextGenerator\McpServer\Action\Resources\Service\JsonSchemaService; use Butschster\ContextGenerator\McpServer\Attribute\Resource; use Butschster\ContextGenerator\McpServer\Routing\Attribute\Get; use Butschster\ContextGenerator\Template\Detection\TemplateDetectionService; use PhpMcp\Schema\Content\TextResourceContents; use PhpMcp\Schema\Result\ReadResourceResult; use Psr\Http\Message\ServerRequestInterface; use Psr\Log\LoggerInterface; #[Resource( name: 'CTX Schema Builder Instructions', description: 'Returns instructions for generating a CTX configuration file', uri: 'ctx://schema-builder-instructions', mimeType: 'application/json', )] final readonly class GenerateConfigAction { public function __construct( private LoggerInterface $logger, private DirectoriesInterface $dirs, private TemplateDetectionService $detectionService, private JsonSchemaService $jsonSchema, ) {} #[Get(path: '/resource/ctx/schema-builder-instructions', name: 'resources.ctx.schema-builder-instructions')] public function __invoke(ServerRequestInterface $request): ReadResourceResult { try { $detection = $this->detectionService->detectBestTemplate($this->dirs->getRootPath())->jsonSerialize(); $response = <<<'INSTRUCTIONS' You are an expert system for analyzing software projects and generating CTX configuration files. ## Your Role Analyze the provided project structure, user requirements, and generate a complete, valid CTX configuration file that follows the JSON Schema specification. ## JSON Schema %s ## Project info %s ## Available Tools 1. Use directory-list if you need to list directories in the project 2. Use file-read if you need to read files in the project ## Analysis Process 1. **Project Structure**: Examine directories, files, and detected frameworks 2. **Framework Patterns**: Apply framework-specific best practices 3. **Context Prioritization**: Focus on code most valuable for AI development assistance 4. **Document Organization**: Create logical, coherent context document groupings ## Configuration Rules 1. **Schema Compliance**: All output must validate against the provided JSON Schema 2. **Practical Focus**: Prioritize directories and files developers actively work with 3. **Logical Grouping**: Create documents that group related functionality 4. **Appropriate Sources**: Use optimal source types (file/tree) for each context need 5. **Meaningful Descriptions**: Provide clear, descriptive document names ## Output Requirements - Generate complete YAML configuration in artefact form - Use tree sources for structure overview - Use file sources for code analysis - Include tags - Do not include modifiers, - Validate all paths exist in project structure INSTRUCTIONS; $response = \sprintf( $response, \json_encode($this->jsonSchema->getSimplifiedSchema()), \json_encode($detection), ); return new ReadResourceResult([ new TextResourceContents( uri: 'ctx://schema-builder-instructions', mimeType: 'application/json', text: $response, ), ]); } catch (\Throwable $e) { $this->logger->error('Error generating configuration', [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString(), ]); return new ReadResourceResult([ new TextResourceContents( uri: 'ctx://schema-builder-instructions', mimeType: 'application/json', text: 'Error: ' . $e->getMessage(), ), ]); } } }

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