Skip to main content
Glama
ttacleinad-boop

Universal MCP Tool Framework

Universal MCP Tool Framework

面向 Model Context Protocol 工具的可复用 Python 基础框架。该框架集中处理注册、发现、权限、操作模式分离、结构化错误、日志记录、配置、健康/状态输出以及扩展约定。

设计边界

该框架是 MCP 服务器基础,而非通用 shell、文件系统控制器或策略引擎。每个工具通过显式注册,执行时仅穿过一个统一权限边界。

操作模式

默认值

要求

read

启用

工具必须注册为只读工具。

write

禁用

配置启用 write,且调用方短暂拥有声明的工具作用域。

execute

禁用

配置启用 execute,且调用方短暂拥有声明的工具作用域。

工具必须同时通过两项检查:该工具的操作模式已启用,且执行上下文中存在该工具的所需作用域。

Related MCP server: achmadya-dev/mcp-core

包含的功能面

功能

实现

标准 MCP 服务器 面

server.py 暴露 mcp,供官方 MCP Python SDK 使用。

注册与发现

ToolRegistry 托管显式注册过程,并返回公开工具元数据。

权限模型

ToolRuntime 强制执行已启用的操作模式以及工具各自需要的 scope 作用域。

只读/写/执行扩展

OperationMode 每工具必填,只读为默认模式。

错误处理与日志

每次执行均返回结构化结果封装,日志同时记录被拒绝或失败调用。

配置

config.example.json 负责服务器身份、启用模式与日志级别。

健康/状态

framework_healthframework_statusframework_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. 为 discovery(发现)、允许执行和拒绝路径各加测试。

  5. 仅当工具属于公开服务时,才加一层轻量的 MCP handler,否则不暴露。

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() 调用执行,以自动获得公共权限、日志记录和错误返回约定的保证。

结果契约

所有 runtime 执行都返回如下稳定结构:

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

被拒绝或失败的请求置 ok: flase,并携带机器可读的错误码,如 tool_not_foundpermission_deniedtool_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"

测试套件覆盖的检查项包括:discovery、默认只读、默认拒绝写/执行、作用域强制、结构化错误、状态输出以及 json 配置正确性。

Universal MCP Tool Framework

该仓库还提供 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 文件,其中包含 schema 版本、项目名称、包名、模板类型、生命周期状态、Git/依赖标志位、创建时间以及最近校验状态。生成器拒绝覆盖非空目录。

本地代码分析与测试工具集

umcp-quatrik 可扫描本地 Python 项目,并生成带 PASSFAILWARNING 三种状态的机器可读质量报告。

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

检查项

检查结果

静态代码分析

解析每个 Python 源文件并报告语法错误。

依赖项分析

校验 pyproject.toml 元数据,并告知项目虚拟环境是否存用。

错误收集

将语法、配置、测试、源编译失败信息收入报告。

测试发现与执行

发现 tests/test_*.py 并启动 stdlib 测试运行器。

构建校验

不修改项目源码,仅为 src/ 做编译集成测试。

配置校验

校验 config/ 目录下所有 JSON 文件。

回归/diff 状态

使用 Git 状态查找未 add 的变更,不做任何 Git 变更操作。

健康/status

返回向上计数,以及总体的 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