Contenido estático
Conceptos estables: Spec-Driven Development, arquitectura, patrones clásicos, principios de calidad.
Cambia raramente
- Definiciones y principios
- Diagramas conceptuales
- Patrones arquitectónicos
Conocimiento · 09
Model Context Protocol (MCP) es el estándar que permite que clientes de IA accedan a recursos, prompts y herramientas de forma uniforme. Aplicado a este portal, convierte catálogos estáticos (modelos, patrones, roles) en contenido vivo curado desde un servidor.
Concepto
MCP separa contexto de cliente. Un servidor MCP expone resources (documentos o datos), prompts (plantillas reusables) y tools (operaciones invocables). Un cliente MCP — sea Claude, un IDE o una web — los consume con permisos explícitos y sin duplicar integraciones.
Para NoumorDevs, el beneficio es directo: el catálogo de modelos, los roles y los patrones pueden vivir fuera del frontend y actualizarse al ritmo del mercado, sin recompilar ni desplegar la web.
Arquitectura
Las páginas consumen ContentService, que expone datos como ContentSource<T> con metadata (key, updatedAt, origin). Hoy el origin es static: los datos vienen de TypeScript. Mañana, tras conectar un servidor MCP, el origin pasa a mcp sin cambiar los componentes.
El McpContentAdapter es el único punto que habla el protocolo. Se puede intercambiar por una implementación real (@modelcontextprotocol/sdk) sin tocar nada más.
@Injectable({ providedIn: 'root' })
export class McpContentAdapter {
// Placeholder: en producción se sustituye por un cliente real
// @modelcontextprotocol/sdk
async fetch<T>(key: string): Promise<McpPayload<T> | null> {
if (!this.endpoint) return null;
const res = await this.client.readResource({ uri: key });
return { data: res.contents as T, updatedAt: res.meta.updatedAt };
}
}
Estático vs dinámico
Conceptos estables: Spec-Driven Development, arquitectura, patrones clásicos, principios de calidad.
Cambia raramente
Información que envejece rápido y se beneficia de curación externa.
Se refresca desde MCP
nm://models — catálogo de modelosnm://roles — definiciones de roles y skillsnm://patterns — patrones de IA emergentesnm://roadmap — rutas de aprendizajeImplementación
1. Un servidor MCP (Node/Python) expone los recursos anteriores. Los resource IDs siguen el esquema nm://<dominio>.
2. Un pipeline de ingesta curado (repos Git, APIs de proveedores, fuentes verificadas) mantiene los recursos actualizados con revisión humana.
3. El frontend arranca con snapshot estático y, si hay servidor configurado, refresca vía ContentService.refreshFromMcp(key).
4. Un indicador visual muestra el origen y la fecha de cada dataset, para que el lector sepa si lee snapshot o datos recientes.
// Dentro de ModelsPage
private readonly content = inject(ContentService);
private readonly source = this.content.register(
'nm://models', AI_MODELS, AI_MODELS_UPDATED_AT,
);
protected models = computed(() => this.source.data);
// Al montar, en clientes con MCP configurado:
await this.content.refreshFromMcp<AiModel[]>('nm://models');
Gobernanza
Corregir un modelo obsoleto no requiere build ni release del frontend.
Los mismos recursos los consumen otros clientes (CLI, IDE, agentes).
Cada recurso tiene fuente, fecha y responsable de curación.