sendTelegramMessageLABSCO 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
sendTelegramMessagesends a message through your bot;httpRequestperforms GET, POST, PUT or DELETE with headers and a bodycalculatorevaluates a mathematical expressionmanageBlocksis 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:
createTodowith priority, due date, tags and project;readTodos,updateTodoanddeleteTodo, each able to find a task by exact id, by its position in the list, or by a partial title search manageUnitsis 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
USE CASES
Adding a tool of your own
Write one file in the tools folder; it registers itself on the next start.
Getting a notification out of an agent run
Send the result to yourself on Telegram when something finishes.
Managing a task list by conversation
Create, read, update and delete todos by name or position rather than by id.
Calling an API that has no server of its own
Use the generic HTTP tool with your own method, headers and body.
Keeping structured notes and blocks
Run the full CRUD over blocks of whatever type suits the content.
9 tools
Listed in project docs. Your client may show a different list.
httpRequestcalculatormanageBlockscreateTodoreadTodosupdateTododeleteTodomanageUnitsBEFORE YOU INSTALL
What to know first
Tools you get
9 tools named in the project's documentation.
Requires
- Docker with Docker Compose, to run docker-compose.local.yml
- An MCP client that connects to an SSE URL (http://localhost:8080/sse)
- DATABASE_URL in .env, pointing at a PostgreSQL database — used by the blocks, todos and agents tools
- TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID in .env, for the Telegram tool
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Build the image from the repository, then point your client at it.
Server setup
git clone https://github.com/Pavel-K-Group/Mcp-Server
cd Mcp-Server
npm install
cp .env.example .env
docker-compose -f docker-compose.local.yml up --buildMCP Clients
Cursor
{
"mcpServers": {
"Universal MCP Server": {
"url": "http://localhost:8080/sse"
}
}
}