Skip to main content
Glama

project-mcp-tools

Фреймворк на Python, который предоставляет инструменты разработчика одновременно через три протокола: MCP (Model Context Protocol), REST API и CLI — всё из единого общего реестра инструментов.

Обзор

project-mcp-tools решает проблему поддержки отдельных серверных частей инструментов для разных потребителей. Напишите инструмент один раз с помощью декоратора @tool(), и он сразу станет доступен:

  • AI-ассистентам через протокол MCP (на базе FastMCP)

  • HTTP-клиентам через REST API (на базе FastAPI + uvicorn)

  • Пользователям терминала через CLI (на базе argparse)

Встроенные инструменты охватывают разработку на C++ (компиляция, статический анализ, форматирование, генерация каркасов классов/тестов, анализ дерева include), проверку форматирования Python и операции с git — всё с изоляцией процессов через выполнение в подпроцессах.

Установка

Требования: Python 3.14+, пакетный менеджер uv

# Clone the repository
git clone <repository-url>
cd project-mcp-tools

# Install dependencies
uv sync

Использование

MCP-сервер

Запускает сервер FastMCP, к которому могут подключаться AI-ассистенты:

uv run mcp-server

Настройте ваш MCP-клиент на использование этого сервера. Например, в opencode.json в корне хост-проекта (проекта, над которым вы хотите, чтобы работали инструменты, а не самого каталога project-mcp-tools):

{
  "mcp": {
    "project-mcp-tools": {
      "type": "local",
      "command": ["uv", "--directory", "project-mcp-tools", "run", "mcp-server", "--target-project", "../my-host-project"]
    }
  }
}

Важно: --directory указывает uv, где найти пакет project-mcp-tools (pyproject.toml, зависимости, venv). --target-project задаёт рабочую директорию для процесса MCP и всех его подпроцессов — это проект, над которым фактически будут работать инструменты. Путь разрешается относительно project-mcp-tools/ (поскольку uv --directory меняет рабочую директорию). Без такого разделения инструменты git/cpp/python работали бы внутри project-mcp-tools/, а не в вашем хост-проекте.

REST API-сервер

Запускает сервер FastAPI на http://0.0.0.0:8000:

uv run api --target-project ../my-host-project

Каждый инструмент доступен как POST /tools/<tool_name>. Параметры из сигнатуры функции инструмента становятся полями JSON-тела запроса.

Пример запроса:

curl -X POST http://localhost:8000/tools/git_quick_upload \
  -H "Content-Type: application/json" \
  -d '{"message": "my commit"}'

Swagger UI доступен по адресу http://localhost:8000/docs.

CLI

Вызовите любой инструмент из терминала:

uv run cli --target-project ../my-host-project git_quick_upload --message "your commit message"

--target-project должен идти перед именем инструмента. Инструменты, не ссылающиеся на хост-проект (например, get_random_number), можно вызывать без --target-project.

Каталог инструментов

Общие

Инструмент

Сигнатура

Описание

create_image

(description: str, file_name: str | None = None) -> str

Генерирует изображение с помощью Gemini (модель gemini-3.1-flash-lite-image) по заданному текстовому описанию. Сохраняет в resources/images/

describe_image

(image_path: str, description: str) -> str

Интерпретирует изображение из целевого проекта с помощью Gemini vision (фиксированная модель gemini-flash-lite-latest) для моделей без поддержки зрения. image_path указывается относительно целевого проекта

debug

() -> str

Возвращает отладочную информацию об окружении (cwd, пути, переменные окружения)

get_random_number

(start: int = 1, end: int = 100) -> str

Возвращает случайное число между start и end

Git

Инструмент

Сигнатура

Описание

git_discard_changes

() -> str

Отменяет все незакоммиченные изменения и удаляет неотслеживаемые файлы. Возвращает к HEAD

git_pull_submodules

() -> str

Обновляет каждый подмодуль до последнего удалённого коммита (требуются чистые подмодули); обновление указателя остаётся незакоммиченным

git_quick_upload

(message: str) -> str

Выполняет git pull, git add ., git commit -m <message> и git push

Python

Инструмент

Сигнатура

Описание

python_analyze

() -> str

Применяет python_code_verifier ко всем файлам *.py в каталоге инструментов

python_clear

() -> str

Удаляет все каталоги __pycache__ в текущем каталоге

python_code_verifier

(files: list[str]) -> str

Проверяет правила форматирования Python для указанных файлов

C++

Инструмент

Сигнатура

Описание

cpp_analyze

() -> str

Применяет исправления форматирования ко всем файлам .cpp/.hpp, затем запускает статический анализ cppcheck

cpp_code_verifier

(files: list[str]) -> str

Проверяет правила форматирования C++ для указанных файлов

cpp_compile

() -> str

Компилирует весь C++ проект параллельно с помощью Clang

cpp_create_class

(class_hierarchy: str, include_list: list[str] = [], using_list: list[str] = [], create_header_only: bool = False) -> str

Создаёт каркас нового C++ класса из строки иерархии (например, "game/player")

cpp_create_test

(hierarchy: str, flg_adhoc: bool = False, include_list: list[str] = []) -> str

Создаёт каркас C++ тестового файла

cpp_analyze_include_tree

(file_path: str = None) -> str

Отображает рекурсивное дерево зависимостей include для C++ файла. По умолчанию — главный файл проекта

cpp_generate_opengl_html

() -> str

Генерирует opengl.htm — одностраничное HTML-дерево профиля OpenGL 4.6 core. Читает include/glad/snake_case.hpp из целевого проекта, загружает официальные справочники Khronos в /tmp/generate-opengl-html и записывает результат в корень целевого проекта

Сессия

Инструмент

Сигнатура

Описание

session_context_usage

(session_id: str | None = None, context_limit: int | None = None) -> str

Сообщает, какая часть окна контекста модели используется текущей сессией чата opencode (context_used, context_percent, лимит модели). Читает базу данных opencode напрямую; автоматически определяет активную сессию в целевом проекте. См. opencode knowledge

Структура проекта

project-mcp-tools/
├── main.py                    # Entry point — builds tool_manager, starts servers
├── pyproject.toml             # Project config, dependencies, entry points
├── tools/                     # Core engine package
│   ├── __init__.py
│   ├── tool_manager.py        # Core orchestrator — shared registry, tool folder loading, subprocess dispatch, CLI/API/MCP exposure
│   ├── tool.py                # @tool() decorator, ToolInfo/ParameterInfo models, response contract helpers
│   ├── path_manager.py        # Project/target root resolution — injectable, no global state
│   └── folder_scanner.py      # Auto-discovers @tool-decorated functions in directories
├── general/                    # General-purpose tools (no host project dependency)
│   ├── create_image.py         # Gemini image generation tool
│   ├── describe_image.py       # Gemini image interpretation tool
│   ├── debug.py                # Environment debugging tool
│   └── get_random_number.py    # Random number generator
├── sak/
│   ├── common.py              # Utilities (process creation, JSON, assertions)
│   └── fso/                   # File system objects
├── lib/
│   ├── base_verifier.py       # Abstract regex-based code formatter
│   ├── project_config.py      # Global project configuration
│   ├── project_file.py        # Abstract source file with license header management
│   └── template.py            # Jinja-like template engine with imports and lists
├── cpp/
│   ├── analyze.py             # C++ full analysis tool
│   ├── code_verifier.py       # C++ formatting verification tool
│   ├── compile.py             # C++ parallel compilation tool
│   ├── create_class.py        # C++ class scaffolding tool
│   ├── create_test.py         # C++ test scaffolding tool
│   ├── include_tree.py        # C++ include dependency tree tool
│   └── cpp_lib/               # C++ domain library (compiler, model, verifier, build)
├── python/
│   ├── analyze.py             # Python full analysis tool
│   ├── code_verifier.py       # Python formatting verification tool
│   └── python_lib/            # Python domain library (model, verifier, config)
├── session/
│   ├── context_usage.py       # opencode session context usage tool
│   └── session_lib/           # Session domain library (opencode database reader)
├── git/
│   ├── discard_changes.py     # Git reset + clean tool
│   └── quick_upload.py        # Git pull/add/commit/push tool
├── resources/
│   └── images/               # Generated images (from create_image tool)
├── .agents/
│   └── skills/               # AI assistant skills (compliance audit, uv package manager)
└── docs/
    ├── templates/             # Template files for class/test scaffolding (user zone)
    ├── example/               # Usage examples (e.g. google-genai.py) (user zone)
    └── agent/                 # AI-managed knowledge base (architecture, guides, workflows, status)
        ├── architecture.md    # System architecture and design decisions
        ├── development/       # Tool development guide
        ├── style-guide/       # Coding style guides
        ├── workflow/          # Workflow documentation
        └── status.md          # Agent task status

Архитектура

Система построена вокруг центрального объекта tool_manager, который хранит общий реестр инструментов и обеспечивает все три транспорта (CLI, REST API и MCP).

Подробное описание архитектуры системы, проектных решений и механизма целевого проекта см. в руководстве System Architecture.

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

Чтобы добавить новый инструмент, создайте Python-файл в существующей папке инструментов (или в новой) и декорируйте функцию с помощью @tool().

Пошаговое руководство и рекомендации по структурированию слоя инструментов и доменных библиотек см. в Tool Development Guide.

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

Глобальные и доменные конфигурации централизованы в кодовой базе. Полный список ключей и значений конфигурации см. в System Architecture - Centralized Configuration.

Соглашения о написании кода

Весь код в этом проекте должен соответствовать строгим правилам, включая исключительное использование snake_case для всех идентификаторов и особые правила расстановки пробелов. Полный набор правил см. в Python Style Guide.

Лицензия

GNU General Public License v3.0 — подробности см. в заголовках лицензии в исходных файлах.

-
license - not tested
-
quality - not tested
C
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 Connectors

  • Package intelligence MCP for AI agents — 22 tools, 19 ecosystems, AGPL SDK, free.

  • Free public MCP for AI agents — 193 tools, 44 workflows. No API key.

  • AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.

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/maxwellaguiarsilva/project-mcp-tools'

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