Universal MCP Tool Framework
Универсальный фреймворк инструментов MCP
Многоразовая основа на Python для инструментов Model Context Protocol. Фреймворк централизует регистрацию, обнаружение, разрешения, разделение режимов операций, структурированные ошибки, журналирование, конфигурацию, вывод состояния/статуса и соглашения о расширениях.
Границы проектирования
Фреймворк — это основа MCP-сервера, а не универсальная оболочка, контроллер файловой системы или механизм политик. Инструменты регистрируются явно и выполняются через одну границу разрешений.
Режим операции | По умолчанию | Требование |
| Включено | Инструмент должен быть зарегистрирован как доступный только для чтения. |
| Отключено | Конфигурация включает |
| Отключено | Конфигурация включает |
Инструмент должен пройти обе проверки: его режим операции включён, и требуемые области присутствуют в контексте выполнения.
Related MCP server: achmadya-dev/mcp-core
Включённая поверхность
Возможность | Реализация |
Стандартный 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Добавление инструмента
Выберите один режим операции.
Объявите все требуемые области.
Зарегистрируйте обработчик через
ToolRegistry.Добавьте тест для обнаружения, разрешённого выполнения и путей отклонения.
Предоставьте тонкий 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-проектов.
Шаблон проекта | Сгенерированная возможность |
| Устанавливаемый пакет |
| Всё из |
Создайте полностью инициализированный проект. По умолчанию генератор создаёт локальный 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 и сообщает об ошибках синтаксиса. |
Анализ зависимостей | Проверяет метаданные |
Обнаружение ошибок | Фиксирует ошибки синтаксиса, конфигурации, тестов и компиляции исходников в отчёте. |
Обнаружение и выполнение тестов | Обнаруживает |
Проверка сборки | Компилирует |
Проверка конфигурации | Проверяет JSON-файлы в |
Отчёт о регрессиях/изменениях | Использует статус Git для отметки незакоммиченных изменений; мутация Git не выполняется. |
Отчёт о состоянии/статусе | Возвращает агрегированные счётчики и общий результат PASS, FAIL или WARNING. |
FAIL приводит к ненулевому статусу выхода команды. WARNING указывает на неполное, но не ошибочное состояние, например, отсутствие виртуальной среды, тестов, каталога конфигурации или недоступную историю Git.
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 gradedqualityCmaintenanceMCP hub server that aggregates tools from multiple domain packages into a single globally-available interface.1MIT
- AlicenseNot gradedqualityAmaintenanceProvides a shared MCP SDK wrapper for building MCP servers with stdio transport, tool registration, JSON-safe responses, and environment helpers.26MIT
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.
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/ttacleinad-boop/Universal-MCP-Tool-Framework'
If you have feedback or need assistance with the MCP directory API, please join our Discord server