LabscoMCP early access ↗
Pavel-K-GroupMCP SERVER

Universal MCP Server

A self-hosted server with a plugin folder — drop a TypeScript file in and the tool registers itself.

by Pavel-K-Group ↗MCP Plumbing: Proxies, Registries & InspectorsCommunity

LABSCO SUMMARY

Written to be extended, and the bundled tools show how.

The auto-loading src/tools/ folder is the actual product: a new tool is one file with a Zod schema and a handler, no registration step, no touching the server. The five bundled tools double as worked examples, and finding a todo by position or partial title rather than by id is a small design choice that makes them usable from a conversation.

What it is

A TypeScript server built around a loader: every file in src/tools/ is discovered and registered at startup, so adding a tool means writing one file with a name, description, Zod input schema and handler. It ships with a working set already — Telegram, HTTP, a calculator, and CRUD over blocks, todos and agents. Documentation is in Russian.

What you get

  • sendTelegramMessage sends a message through your bot; httpRequest performs GET, POST, PUT or DELETE with headers and a body
  • calculator evaluates a mathematical expression
  • manageBlocks is full CRUD over blocks — list, create, update, delete, get — across types including text, todo, media, link, container, calendar and database
  • Todos as four separate tools: createTodo with priority, due date, tags and project; readTodos, updateTodo and deleteTodo, each able to find a task by exact id, by its position in the list, or by a partial title search
  • manageUnits is the same CRUD shape over AI agents — name, description, model, system prompt, tools and agent type
  • Deleting a todo is a soft delete

Requirements

You host it yourself. npm install, then run it with Docker Compose — docker-compose.local.yml exposes port 8080 for development, docker-compose.yml is the production variant. Configure a .env from .env.example with TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID for the Telegram tool, DATABASE_URL pointing at PostgreSQL for the blocks, todos and agents tools, and PORT. Clients connect over Server-Sent Events at http://localhost:8080/sse, as a url entry in clients that take one, such as Cursor. The README's Claude Desktop example uses the same url entry, but Claude Desktop's config file only launches local commands, so it does not load there.

Setup effort

Run a container — build the image from the repository, then point your client at it