mcp-tool-hub
MCP Tool Hub
Модульный, расширяемый мультисерверный хаб Model Context Protocol, созданный на TypeScript для команд автоматизации ИТ.
Предоставьте вашей LLM доступ к реальным инструментам: файлам, Git, веб-контенту и постоянной памяти. Развертывайте на любое количество клиентских машин одновременно с помощью Ansible.
Архитектура
mcp-tool-hub/
├── packages/
│ ├── core/ ← Shared types + BaseMCPServer abstract class
│ ├── server-filesystem/ ← Sandboxed local file access (read/write/list/delete)
│ ├── server-git/ ← Git log, diff, file contents, branches, status
│ ├── server-fetch/ ← Web fetching: HTML, JSON APIs, URL health checks
│ └── server-memory/ ← Persistent JSON knowledge base (survives restarts)
├── host/ ← Orchestrator: registry + CLI + stdio JSON interface
├── ansible/ ← Playbook, inventory, systemd service templates
└── docs/ ← How to add new servers (with template)Архитектура следует шаблону Model Context Protocol:
Каждый сервер полностью независим — свой пакет, своя сборка
Реестр в хосте сопоставляет
toolName → serverво время выполненияCLI предоставляет интерфейс stdio JSON — любая интеграция с LLM отправляет
{"toolName":"...", "arguments":{...}}в stdin и считывает результат из stdoutДобавление нового сервера = создание пакета, расширение
BaseMCPServer, регистрация вcli.ts
Related MCP server: mcp-toolbox
Быстрый старт
1. Установка и сборка
git clone https://github.com/your-org/mcp-tool-hub.git
cd mcp-tool-hub
npm install
npm run build2. Настройка
cp .env.example .env
# Edit .env with your paths and settings3. Запуск
# Via npm
npm run start --workspace=host
# Or directly
node host/dist/cli.js4. Вызов инструмента
Отправьте JSON в stdin, получите JSON из stdout:
echo '{"toolName":"read_file","arguments":{"path":"hello.txt"}}' | node host/dist/cli.jsДоступные инструменты
📁 Сервер файловой системы
Все операции ограничены песочницей MCP_FS_ROOT. Обход путей (../) заблокирован.
Инструмент | Описание |
| Чтение содержимого файла (utf8 или base64) |
| Запись или добавление в файл |
| Список содержимого директории (опционально рекурсивно) |
| Удаление файла |
| Перемещение или переименование файла |
| Получение размера, дат и типа пути |
🔀 Сервер Git
Только для чтения. Операции записи отсутствуют.
Инструмент | Описание |
| История коммитов для репозитория или файла |
| Содержимое файла в конкретном коммите/ветке |
| Разница между двумя ссылками (refs) |
| Статус рабочего дерева |
| Список веток (локальные + опционально удаленные) |
| Полные детали коммита и diff |
🌐 Сервер Fetch
Поддерживает опциональный список разрешенных доменов через MCP_FETCH_ALLOWED_DOMAINS.
Инструмент | Описание |
| Получение HTML или текста по URL |
| Получение и разбор ответа JSON API |
| Проверка доступности URL (HEAD-запрос) |
🧠 Сервер памяти
Постоянная память между перезапусками. Работает на основе JSON-файла.
Инструмент | Описание |
| Сохранение значения с ключом, пространством имен и тегами |
| Получение значения по ключу |
| Полнотекстовый поиск по всем записям |
| Удаление записи |
| Список всех пространств имен с количеством записей |
| Удаление всех записей в пространстве имен |
Развертывание через Ansible
Развертывание на все клиентские машины одновременно:
cd ansible
# First time
ansible-playbook -i inventory.yml deploy-mcp-hub.yml
# Update only (rebuild + restart)
ansible-playbook -i inventory.yml deploy-mcp-hub.yml --tags update
# Deploy to specific group
ansible-playbook -i inventory.yml deploy-mcp-hub.yml --limit serversПлейбук:
Устанавливает Node.js 20 (если отсутствует)
Создает выделенного системного пользователя
mcp-hubКопирует и собирает проект
Записывает конфигурацию
.envиз ваших переменных AnsibleУстанавливает и запускает systemd-службу (автоматический перезапуск при сбое)
Переменные для каждого хоста в inventory.yml позволяют настраивать разные разрешенные домены, уровни логирования и пути для каждой группы машин.
Добавление нового сервера
См. docs/adding-a-new-server.template.ts для получения полного шаблона с комментариями.
Вкратце:
// 1. Create packages/server-myservice/src/my-server.ts
export class MyServer extends BaseMCPServer {
constructor(options: MyOptions) {
super(SERVER_INFO, options);
this.registerTool("my_tool", this.handleMyTool.bind(this));
}
private async handleMyTool(args) {
return this.ok({ result: "done" });
}
}
// 2. Register in host/src/cli.ts
hub.use(new MyServer({ apiKey: process.env.MY_API_KEY! }));Идеи: server-slack, server-postgres, server-docker, server-ansible, server-ssh, server-jira
Переменные окружения
Переменная | По умолчанию | Описание |
|
| Корневая директория для всех данных хаба |
|
| Корень песочницы файловой системы |
|
| Базовый путь для репозиториев Git |
|
| Файл хранилища памяти |
| (пусто = все) | Список разрешенных доменов через запятую |
|
|
|
Примечания по безопасности
Файловая система: Строго ограничена песочницей. Атаки обхода путей возвращают ошибку, а не данные.
Git: Только чтение. Операции
commit,pushилиcloneне предоставляются.Fetch: Опциональный список разрешенных доменов предотвращает SSRF к внутренним сервисам.
Systemd-служба: Запускается от имени пользователя без прав root с параметрами
PrivateTmp=trueиNoNewPrivileges=true.
Требования
Node.js ≥ 18 (для нативного API
fetch)Git (для
server-git)Linux с systemd (для развертывания через Ansible)
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA modular MCP server providing file operations, web search, URL scraping, and sandboxed command execution for LLM interactions.1MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server enabling LLMs to execute commands, manage files, interact with Figma, search the web, generate images, and more, extending their capabilities beyond text generation.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceMCP server that gives any LLM a managed Docker workspace with live browser, terminal, code execution, document skills, and autonomous sub-agents.1,560117MIT
- AlicenseNot gradedqualityDmaintenanceA powerful MCP server that enables LLMs to safely execute code, control file systems, search the web, and integrate with services like Gmail and TMDB.MIT
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
An MCP server that gives your AI access to the source code and docs of all public github repos
Cloud-hosted MCP server for durable AI memory
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/TOMJARA/mcp-tool-hub'
If you have feedback or need assistance with the MCP directory API, please join our Discord server