Unified Agent Context System
Provides Prometheus-compatible metrics for monitoring the MCP server's health, sessions, tool invocations, and HTTP requests.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Unified Agent Context System (MCP)
Unified Agent Context System to dedykowana warstwa kontekstowa oparta o Model Context Protocol. Łączy portfolio, notatki, narzędzia diagnostyczne i obserwowalność w jeden serwer MCP, który może zasilać agentów AI uporządkowanymi danymi z kilku domen.
Spis Treści
Related MCP server: mcpdeployment
Możliwości
Obszar | Rola w systemie |
Warstwa MCP | Jeden punkt dostępu do narzędzi kontekstowych dla agentów AI. |
Moduły domenowe | Osobne moduły dla portfolio, Trilium i narzędzi diagnostycznych. |
Transport HTTP | Streamable HTTP z sesjami MCP pod |
Bezpieczeństwo | Bearer token wymagany dla ścieżek MCP. |
Observability | Health checks, request IDs i metryki Prometheus dla pracy serwera. |
Portfolio | Strukturalny dostęp do profilu, projektów, umiejętności, doświadczenia i kursów. |
Trilium | Dostęp do notatek, drzewa wiedzy i zapisu treści przez ETAPI. |
Środowiska | Podział pracy między środowisko produkcyjne dla portfolio i homelab dla Trilium. |
Test tools | Moduł kontrolny do diagnostyki rejestracji narzędzi. |
Rola Narzędzia
System pełni rolę dedykowanej warstwy kontekstowej dla agentów AI, ale pozostaje zorganizowany jak pełnoprawny serwer produkcyjny: ma moduły, izolację transportu, metryki, health checks i jawne kontrakty narzędzi. Zamiast trzymać kontekst w jednym dużym promptcie, wystawia go jako zestaw narzędzi MCP z czytelnymi namespace'ami.
Najważniejsze scenariusze:
prezentowanie danych portfolio przez narzędzia
portfolio_*,wyszukiwanie i filtrowanie treści z lokalnego korpusu Markdown,
pobieranie i zapisywanie notatek Trilium przez
trilium_*,wystawienie modułów przez HTTP dla agentów lub środowisk zdalnych,
monitorowanie działania przez
/healthzi/metrics.
Adres modułu w transporcie HTTP ma postać:
http://127.0.0.1:3333/mcp/<moduleId>Przykłady: /mcp/portfolio, /mcp/trilium, /mcp/test-tools.
Środowiska
Serwer jest projektowany jako jedna warstwa MCP działająca w dwóch kontekstach operacyjnych:
Środowisko | Moduł | Rola |
Produkcyjne |
| Publiczna warstwa danych portfolio, projektów, umiejętności, doświadczenia i kursów. |
Homelab |
| Integracja z prywatną bazą wiedzy Trilium przez ETAPI. |
Moduł trilium jest rozwijany na branchu feat/trilium-integration.
Architektura
flowchart LR
Entry["src/index.ts"] --> Config["config/modules.config.ts"]
Entry --> HTTP["startHttpTransport()"]
HTTP --> Route["/mcp/:moduleId"]
Route --> Registry["ToolRegistry"]
Registry --> Portfolio["portfolio module"]
Registry --> Trilium["trilium module"]
Registry --> TestTools["test-tools module"]
Portfolio --> PortfolioTools["portfolio_* tools"]
Trilium --> TriliumTools["trilium_* tools"]
TestTools --> TestToolsTools["test_* tools"]
HTTP --> Health["/healthz"]
HTTP --> Metrics["/metrics"]Główne warstwy:
Warstwa | Lokalizacja | Odpowiedzialność |
Core |
| Tworzenie |
Transporty |
| HTTP jako domyślna ścieżka uruchomienia oraz alternatywny transport stdio. |
Moduły |
| Domenowe zestawy narzędzi MCP. |
Observability |
| Health checks, metryki Prometheus, instrumentacja narzędzi. |
Config |
| Flagi |
Przepływ Sesji HTTP
sequenceDiagram
participant Client as MCP client
participant HTTP as HTTP transport
participant Config as modules.config
participant Registry as ToolRegistry
participant Module as Module tools
Client->>HTTP: POST /mcp/:moduleId initialize
HTTP->>Config: getEnabledModuleByName(moduleId)
Config-->>HTTP: ModuleConfig
HTTP->>Registry: build McpServer for module
Registry->>Module: register(server, options)
HTTP-->>Client: mcp-session-id
Client->>HTTP: POST/GET/DELETE with mcp-session-id
HTTP->>Module: handle MCP requestW HTTP moduleId pochodzi ze ścieżki URL, np. /mcp/portfolio. Namespace narzędzi jest osobną wartością konfiguracyjną, np. PORTFOLIO_NAMESPACE=portfolio, i wpływa na nazwy narzędzi typu portfolio_get_profile.
Transporty
Transport | Status | Plik | Zastosowanie |
Streamable HTTP | Domyślny |
| Serwer dla agentów zdalnych, VPS, reverse proxy i klientów MCP obsługujących HTTP. |
stdio | Alternatywny |
| Klienci spawnujący proces Node i komunikujący się przez stdin/stdout. |
HTTP
HTTP startuje z src/index.ts przez startHttpTransport(buildMcpServerForModule, { port, host }).
Wymagania:
MCP_INTERNAL_TOKENmusi być ustawiony i niepusty.Każde żądanie do
/mcp/<moduleId>musi mieć nagłówekAuthorization: Bearer <token>./healthzi/metricsnie wymagają Bearer tokena.
Domyślne wartości:
Zmienna | Domyślnie | Znaczenie |
|
| Host bindowania HTTP. |
|
| Port HTTP. |
|
| Endpoint health check. |
|
| Endpoint metryk Prometheus. |
stdio
startStdioTransport(server) istnieje w src/transports/stdio.ts, ale nie jest podłączony w domyślnym src/index.ts. Żeby użyć stdio, trzeba przygotować osobny entry point albo ręcznie przełączyć index.ts z HTTP na stdio.
Minimalny schemat:
const server = createMcpServer();
const registry = new ToolRegistry(server);
await registry.loadSingleModule(moduleConfig);
await startStdioTransport(server);Moduły i narzędzia
flowchart TD
Modules["src/modules"]
Modules --> Portfolio["portfolio"]
Portfolio --> P1["profile / about / manifest"]
P1 --> P2["search"]
P2 --> P3["projects / skills / experience / courses"]
Modules --> Trilium["trilium"]
Trilium --> T1["get_note"]
T1 --> T2["list_by_label"]
T2 --> T3["get_tree"]
T3 --> T4["save_note"]
Modules --> TestTools["test-tools"]
TestTools --> D1["get_user_data"]
D1 --> D2["get_products"]
Portfolio ~~~ Trilium
Trilium ~~~ TestToolsPortfolio
Moduł portfolio obsługuje środowisko produkcyjne: udostępnia publiczne dane portfolio z plików Markdown i manifest.json. Treść jest czytana z PORTFOLIO_CONTENT_ROOT, a ścieżki są chronione przed path traversal.
Domyślny namespace narzędzi: portfolio.
Narzędzie | Opis |
| Profil publiczny. |
| Sekcja "O mnie". |
| Manifest treści portfolio. |
| Wyszukiwanie po korpusie. |
| Projekty. |
| Umiejętności. |
| Doświadczenie. |
| Kursy. |
Trilium
Moduł trilium obsługuje środowisko homelab: integruje MCP z Trilium Notes przez ETAPI. Wymaga TRILIUM_BASE_URL i TRILIUM_API_TOKEN. Kod modułu znajduje się na branchu feat/trilium-integration.
Domyślny namespace narzędzi: trilium.
Narzędzie | Tryb | Opis |
| Read | Pobiera metadane notatki, opcjonalnie także treść. |
| Read | Wyszukuje notatki po labelce |
| Read | Buduje drzewo notatek od wskazanego korzenia. |
| Write | Tworzy nową notatkę albo aktualizuje tytuł/treść istniejącej. |
Ważne: chronione notatki Trilium są obsługiwane jako błąd narzędzia bez ujawniania treści.
test-tools
Moduł kontrolny do sprawdzania działania rejestracji narzędzi i odpowiedzi MCP.
Domyślny namespace narzędzi: test.
Narzędzie | Opis |
| Zwraca przykładowe dane użytkownika. |
| Zwraca przykładowe produkty. |
W konfiguracji publicznej lub produkcyjnej zwykle warto go wyłączyć:
ENABLE_MODULE_TEST_TOOLS=falseKonfiguracja
Konfiguracja modułów znajduje się w config/modules.config.ts, a przykładowe zmienne w .env.example.
Zmienne Wspólne
Zmienna | Wymagana | Opis |
| Nie | Host HTTP, domyślnie |
| Nie | Port HTTP, domyślnie |
| Tak dla HTTP | Bearer token wymagany dla |
| Nie |
|
| Nie | Domyślnie |
| Nie |
|
| Nie | Domyślnie |
Portfolio
Zmienna | Domyślnie | Opis |
| Włączony, jeśli nie | Flaga modułu. |
|
| Prefix nazw narzędzi. |
|
| Katalog treści. |
|
| Wersja korpusu zwracana w danych modułu. |
Trilium
Zmienna | Domyślnie | Opis |
| Włączony, jeśli nie | Flaga modułu. W |
|
| Prefix nazw narzędzi. |
| Brak | Bazowy URL Trilium ETAPI. |
| Brak | Token ETAPI. |
Jeśli Trilium jest włączony bez TRILIUM_BASE_URL i TRILIUM_API_TOKEN, src/index.ts przerwie start procesu.
test-tools
Zmienna | Domyślnie | Opis |
| Włączony, jeśli nie | Flaga modułu demonstracyjnego. |
|
| Prefix nazw narzędzi. |
Obsługa Operacyjna
Komenda | Opis |
| Start developerski przez |
| Kompilacja TypeScript i kopiowanie contentu portfolio do |
| Start produkcyjny z |
| Sprawdzenie typów bez generowania plików. |
Build uruchamia tsc oraz scripts/copy-portfolio-content.mjs, żeby content portfolio był dostępny po kompilacji.
Observability
Endpointy observability są rejestrowane tylko przez transport HTTP.
Health
GET /healthz zwraca:
{
"status": "ok",
"checks": []
}Status globalny:
ok- wszystkie checki włączonych modułów są poprawne.degraded- co najmniej jeden check zwrócił błąd.
Aktualne checki:
Moduł | Check | Znaczenie |
|
| Czy katalog contentu istnieje i jest czytelny. |
|
| Czy konfiguracja ETAPI działa i Trilium odpowiada. |
Metryki Prometheus
GET /metrics zwraca metryki z prom-client.
Metryka | Typ | Etykiety |
| Counter |
|
| Counter |
|
| Counter |
|
| Gauge |
|
| Counter |
|
| Counter |
|
| Counter |
|
| Histogram |
|
Każde żądanie HTTP dostaje requestId z nagłówka x-request-id albo z randomUUID().
Docker
Projekt zawiera Dockerfile i docker-compose.yml.
docker compose up --buildW docker-compose.yml kontener wystawia port 8090, dlatego w .env dla tego wariantu ustaw:
MCP_HOST=0.0.0.0
MCP_PORT=8090
MCP_INTERNAL_TOKEN=production-tokenPrzykładowy endpoint po starcie:
http://127.0.0.1:8090/mcp/portfolioIntegracja z klientami MCP
HTTP
Dla klientów obsługujących Streamable HTTP użyj adresu modułu:
http://<host>:<port>/mcp/<moduleId>Do żądań MCP dodaj nagłówek:
Authorization: Bearer <MCP_INTERNAL_TOKEN>Cursor i stdio
Domyślny entry point uruchamia HTTP, nie stdio. Jeśli klient wymaga konfiguracji command + args, przygotuj wariant stdio, który wywołuje startStdioTransport(server).
Po zbudowaniu projektu typowa ścieżka entry pointu to:
dist/src/index.jsTreść portfolio
Pliki portfolio znajdują się w:
src/modules/portfolio/content/Po buildzie content jest kopiowany do:
dist/src/modules/portfolio/content/Przykładowy front matter:
---
project_name: Mój projekt
project_category: Web Development
tech_stack: Next.js, TypeScript
---
Opis projektu...Dodawanie modułu
Utwórz katalog
src/modules/<nazwa>/.Dodaj
index.tsz eksportemregister(server, options).Opcjonalnie dodaj
checkHealth(config).Dodaj wpis do
config/modules.config.ts.Ustal
ENABLE_MODULE_<NAZWA>i namespace w.env.example.Rejestruj narzędzia z nazwą opartą o namespace, np.
${namespace}_my_tool.
HTTP używa name z konfiguracji jako moduleId w ścieżce /mcp/<moduleId>. Namespace służy do nazw narzędzi i może być inny niż moduleId.
Licencja
ISC
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
MCP compatibility and transport verification server.
MCP compatibility and transport verification server.
MCP compatibility and transport verification server.
Related MCP Servers
- FlicenseBqualityDmaintenanceAn MCP server framework featuring dynamic tool loading and a modular one-tool-per-file architecture for rapid development. It supports both Stdio and HTTP transport modes, offering automated test generation and centralized configuration management.11-
- FlicenseCqualityDmaintenanceMCP server that enables deployment and management of MCP servers through a simple configuration-based interface.1-
- FlicenseNot gradedqualityDmaintenanceA highly configurable, deployment-ready MCP server with modular architecture for dynamic tool loading and external package support.1-
- FlicenseNot gradedqualityBmaintenanceAn MCP server with HTTP/stdio support, a web admin panel for managing services, capabilities, and user permissions with Bearer token authentication, enabling relay and access control for MCP tools.-