Skip to main content
Glama
ttacleinad-boop

Universal MCP Tool Framework

Универсальный фреймворк инструментов MCP

Многоразовая основа на Python для инструментов Model Context Protocol. Фреймворк централизует регистрацию, обнаружение, разрешения, разделение режимов операций, структурированные ошибки, журналирование, конфигурацию, вывод состояния/статуса и соглашения о расширениях.

Границы проектирования

Фреймворк — это основа MCP-сервера, а не универсальная оболочка, контроллер файловой системы или механизм политик. Инструменты регистрируются явно и выполняются через одну границу разрешений.

Режим операции

По умолчанию

Требование

read

Включено

Инструмент должен быть зарегистрирован как доступный только для чтения.

write

Отключено

Конфигурация включает write, и у вызывающего есть объявленная область.

execute

Отключено

Конфигурация включает execute, и у вызывающего есть объявленная область.

Инструмент должен пройти обе проверки: его режим операции включён, и требуемые области присутствуют в контексте выполнения.

Related MCP server: achmadya-dev/mcp-core

Включённая поверхность

Возможность

Реализация

Стандартный MCP-сервер

server.py предоставляет mcp для официального MCP Python SDK.

Регистрация и обнаружение

ToolRegistry владеет явной регистрацией и возвращает публичные метаданные инструментов.

Модель разрешений

ToolRuntime обеспечивает включённые режимы операций и области для каждого инструмента.

Разделение чтения/записи/выполнения

OperationMode обязателен для каждого инструмента. Только чтение — по умолчанию.

Обработка ошибок и журналирование

Каждое выполнение возвращает структурированный конверт результата; отклонённые и неудачные вызовы журналируются.

Конфигурация

config.example.json управляет идентичностью сервера, включёнными режимами и уровнем журналирования.

Состояние/статус

framework_health, framework_status и framework_discover_tools — это MCP-инструменты.

Примеры инструментов

Инструменты чтения времени, имитации записи заметок и имитации проверки демонстрируют каждый режим.

Путь расширения

Один декоратор регистрирует каждый новый инструмент; среда выполнения предоставляет все общие элементы управления.

Требования

  • Python 3.10+

  • Официальный MCP Python SDK, закреплённый на mcp==2.0.0

Быстрый старт

python -m venv .venv
. .venv/bin/activate
pip install -e .
python -m unittest discover -s tests -p "test_*.py"

Запустите сервер через MCP SDK:

mcp run server.py

Для интерактивной разработки с MCP Inspector:

mcp dev server.py

Конфигурация

Копируйте и изменяйте пример только тогда, когда требуются операции, отличные от чтения.

{
  "server_name": "Universal MCP Tool Framework",
  "enabled_modes": ["read"],
  "log_level": "INFO"
}

read — единственный режим по умолчанию. Чтобы разрешить зарегистрированный инструмент записи, добавьте write; чтобы разрешить зарегистрированный инструмент выполнения, добавьте execute. Включение режима не обходит требуемые области для каждого инструмента.

Запустите сервер с выбранным файлом конфигурации:

UNIVERSAL_MCP_CONFIG=config.json mcp run server.py

Добавление инструмента

  1. Выберите один режим операции.

  2. Объявите все требуемые области.

  3. Зарегистрируйте обработчик через ToolRegistry.

  4. Добавьте тест для обнаружения, разрешённого выполнения и путей отклонения.

  5. Предоставьте тонкий MCP-обработчик только в том случае, если инструмент принадлежит публичной поверхности сервера.

from universal_mcp.models import OperationMode
from universal_mcp.registry import ToolRegistry

registry = ToolRegistry()

@registry.register(
    name="inventory_get_item",
    description="Return one inventory item by stable identifier.",
    mode=OperationMode.READ,
    required_scopes={"inventory:read"},
)
def inventory_get_item(item_id: str) -> dict[str, str]:
    return {"item_id": item_id}

Вызывайте его через ToolRuntime.execute(), чтобы общий контракт разрешений, журналирования и ошибок всегда применялся.

Контракт результата

Все выполнения во время выполнения создают этот стабильный конверт:

{
  "ok": true,
  "data": {},
  "error": null
}

Отклонённые и неудачные запросы используют ok: false и машиночитаемый код ошибки, такой как tool_not_found, permission_denied или tool_execution_failed.

Структура репозитория

.
├── config.example.json
├── pyproject.toml
├── server.py
├── src/universal_mcp/
│   ├── config.py
│   ├── examples.py
│   ├── models.py
│   ├── registry.py
│   ├── runtime.py
│   └── server.py
└── tests/test_framework.py

Проверка

python -m unittest discover -s tests -p "test_*.py"

Тестовый набор проверяет обнаружение, доступ на чтение по умолчанию, запрет записи/выполнения по умолчанию, соблюдение областей, структурированные ошибки, вывод статуса и JSON-конфигурацию.

Универсальный набор инструментов для создания проектов

Репозиторий также предоставляет umcp-scaffold — управляемый генератор для повторяемых стартов Python-проектов.

Шаблон проекта

Сгенерированная возможность

python-library

Устанавливаемый пакет src/, стартовый модуль для юнит-тестов, конфигурация разработки/производства, скрипты настройки, документация, состояние проекта и инициализация Git.

mcp-tool

Всё из python-library, плюс стандартная точка входа MCP-сервера и закреплённая зависимость MCP SDK.

Создайте полностью инициализированный проект. По умолчанию генератор создаёт локальный Git-репозиторий, создаёт изолированный .venv, устанавливает локальные зависимости и проверяет сгенерированный проект.

umcp-scaffold create "My Project" ./my-project --type mcp-tool

Проверьте сгенерированный проект позже:

umcp-scaffold validate ./my-project

Каждый сгенерированный проект получает .project-state.json с версией схемы, именем, именем пакета, типом шаблона, состоянием жизненного цикла, флагами Git/зависимостей, временем создания и последним состоянием проверки. Генератор отклоняет непустые целевые каталоги, а не перезаписывает проект.

Локальный набор инструментов для анализа и тестирования кода

umcp-quality проверяет локальный Python-проект и возвращает машиночитаемый отчёт о качестве с результатами PASS, FAIL и WARNING.

umcp-quality ./my-project
umcp-quality ./my-project --format markdown

Проверка

Результат

Статический анализ кода

Анализирует каждый исходный файл Python и сообщает об ошибках синтаксиса.

Анализ зависимостей

Проверяет метаданные pyproject.toml и сообщает, существует ли виртуальная среда проекта.

Обнаружение ошибок

Фиксирует ошибки синтаксиса, конфигурации, тестов и компиляции исходников в отчёте.

Обнаружение и выполнение тестов

Обнаруживает tests/test_*.py и запускает стандартный тестовый раннер.

Проверка сборки

Компилирует src/ без записи изменений в проект.

Проверка конфигурации

Проверяет JSON-файлы в config/.

Отчёт о регрессиях/изменениях

Использует статус Git для отметки незакоммиченных изменений; мутация Git не выполняется.

Отчёт о состоянии/статусе

Возвращает агрегированные счётчики и общий результат PASS, FAIL или WARNING.

FAIL приводит к ненулевому статусу выхода команды. WARNING указывает на неполное, но не ошибочное состояние, например, отсутствие виртуальной среды, тестов, каталога конфигурации или недоступную историю Git.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides a shared MCP SDK wrapper for building MCP servers with stdio transport, tool registration, JSON-safe responses, and environment helpers.
    26
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Universal MCP proxy server that discovers, searches, and executes tools across all configured MCP servers from a single entry point.
    7
  • F
    license
    Not graded
    quality
    C
    maintenance
    Framework for building and running MCP servers as HTTP services. Define tools as pure Python functions, wire up with two lines, run with one command.

View all related MCP servers

Related MCP Connectors

  • Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.

  • MCP server for the Inistate platform: module discovery, entry management, and activity submission.

  • A basic MCP server to operate on the Postman API.

View all MCP Connectors

Latest Blog Posts

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/ttacleinad-boop/Universal-MCP-Tool-Framework'

If you have feedback or need assistance with the MCP directory API, please join our Discord server