project-mcp-tools
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.
Каталог инструментов
Общие
Инструмент | Сигнатура | Описание |
|
| Генерирует изображение с помощью Gemini (модель |
|
| Интерпретирует изображение из целевого проекта с помощью Gemini vision (фиксированная модель |
|
| Возвращает отладочную информацию об окружении (cwd, пути, переменные окружения) |
|
| Возвращает случайное число между start и end |
Git
Инструмент | Сигнатура | Описание |
|
| Отменяет все незакоммиченные изменения и удаляет неотслеживаемые файлы. Возвращает к HEAD |
|
| Обновляет каждый подмодуль до последнего удалённого коммита (требуются чистые подмодули); обновление указателя остаётся незакоммиченным |
|
| Выполняет |
Python
Инструмент | Сигнатура | Описание |
|
| Применяет |
|
| Удаляет все каталоги |
|
| Проверяет правила форматирования Python для указанных файлов |
C++
Инструмент | Сигнатура | Описание |
|
| Применяет исправления форматирования ко всем файлам |
|
| Проверяет правила форматирования C++ для указанных файлов |
|
| Компилирует весь C++ проект параллельно с помощью Clang |
|
| Создаёт каркас нового C++ класса из строки иерархии (например, |
|
| Создаёт каркас C++ тестового файла |
|
| Отображает рекурсивное дерево зависимостей include для C++ файла. По умолчанию — главный файл проекта |
|
| Генерирует |
Сессия
Инструмент | Сигнатура | Описание |
|
| Сообщает, какая часть окна контекста модели используется текущей сессией чата opencode ( |
Структура проекта
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 — подробности см. в заголовках лицензии в исходных файлах.
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 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.
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/maxwellaguiarsilva/project-mcp-tools'
If you have feedback or need assistance with the MCP directory API, please join our Discord server