Skip to main content
Glama
ttacleinad-boop

Universal MCP Tool Framework

Universal MCP Tool Framework

Model Context Protocol 도구를 위한 재사용 가능한 Python 기반입니다. 이 프레임워크는 등록, 발견, 권한, 운영 모드 분리, 구조화된 오류, 로깅, 구성, 상태/헬스 출력, 확장 규칙을 중앙화합니다.

설계 경계

이 프레임워크는 MCP 서버 기반이지, 일반적인 셸, 파이일시스템 컨트롤러, 정책 엔진이 아닙니다. 도구는 명시적으로 등록되며 단일 권한 경계를 통해 실행됩니다.

운영 모드

기본값

요구 사항

read

활성화됨

도구가 읽기 전용으로 등록되어야 합니다.

write

비활성화됨

구성에서 write가 활성화되고 호출자가 선언된 스코프를 보유해야 합니다.

execute

비활성화됨

구성에서 execute가 활성화되고 호출자가 선언된 스코프를 보유해야 합니다.

도구는 두 가지 검사를 모두 통과해야 합니다. 즉, 운영 모드가 활성화되어 있고 필요한 스코프가 실행 컨스트에 존재해야 합니다.

Related MCP server: achmadya-dev/mcp-core

제 공 범위

구분

표준 MCP 서버

server.py는 MCP Python SDK용 공식 mcp를 노출합니다.

등록 및 발견

ToolRegistry가 명시적 인기록을 관자하고 공용 도구 메타데이터를 반환합니다.

권한 모델

ToolRuntime이 활성화된 작동 모드와 스코프를 적용합니다.

읽기/쓰기/실행 분리

모든 도구에 OperationMode가 필수입니다. 읽기 전용이 기존값입니다.

오류 처리 및 로깅

모든 실행은 구저된 결과 envelope을 만기하며, 거부되거나 실패한 출은 기록됩니다.

구 성

config.example.json은 서버 이, 활성화 모드, 로그 수운을 관리합니다.

헬스/상테

framework_health, framework_status, framework_discover_tools는 관련 MCP 도구입니다.

예시 도구

시간 읽기, 시리레드 노트 쓰기, 시환된 실행 도구가 모드를 보여입니다.

확장 방식

새 도구는 데코레이터 하나로 등록되며, 파일 유지보수가 모든 공통 관리를 제공합니다.

요조건

  • Python 3.10+

  • mcp==2.0.0로 고정된 공식 MCP Python SDK

빠른 기작

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. 도구가 public 서버 표면에 속한 경우에만 제한된 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()을 통해서학세요.

결과 규약

모든 러타임 작업은 다음의 안정된 결과 envelope를 생합니다:

{
  "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 프로젝트의 시작을 위한 생성을 정형화하는 생성기입니다.

프로젝트 템플레이트

성성 기조

library-ypython

설치 가능한 src/ 패키지, 유닉트 테스트 시작, 개발/프로덕션 설정, 스립트, 설자, 문서, 프로젝트 상태, Git 초기화가 포함됩니다.

mcp-tool

y.py의 모든 요소와 표준 MCP 서버 엔트리 포인트, MCP SDK 의존가 추가됩니다.

전체 초기화된 프로젝트를 만들으세요. 기본적으로 생성기는 로컬 Git 리포지터리를 만들고, 격리된 .venv를 만들고, 로컬 의존를 된 설치하고, 생성된 프로젝트를 검증합니다.

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

생성된 프로젝트를 만족하십시오:

umcp-scaffold validate ./my-project

Generat 생성된 모든 프로젝트.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/를 컴파일합니다.

설정 검증

config/ 아래 JSON 파일을 검증합니다.

커밋/diff 보고

Git 상태로 커밋되지 않은 변경을 보고하며, Git 변경 작업은 수행하지 않습니다.

상태/헬스 보고

총계와 함께 PASS, FAIL 또는 WARNING 결과를 반환합니다.

FAIL은 명령의 종바 코드가 0이 아닙니다. WARNING은 비완전하지만 실패 조건이 아닙 것(예: 아래 가환경, 테스트가 없, config/가 없음, 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