Skip to main content
Glama

project-mcp-tools

Ein Python-Framework, das Entwicklerwerkzeuge gleichzeitig über drei Protokolle bereitstellt: MCP (Model Context Protocol), REST API und CLI – alles aus einer einzigen, gemeinsamen Tool-Registry.

Überblick

project-mcp-tools löst das Problem, separate Tool-Backends für verschiedene Konsumenten zu pflegen. Schreiben Sie ein Tool einmal mit dem @tool()-Decorator, und es wird sofort verfügbar für:

  • KI-Assistenten über das MCP-Protokoll (unterstützt von FastMCP)

  • HTTP-Clients über eine REST-API (unterstützt von FastAPI + uvicorn)

  • Terminalbenutzer über eine CLI (unterstützt von argparse)

Die gebündelten Tools decken C++-Entwicklung (Kompilierung, statische Analyse, Formatierung, Klassen-/Test-Gerüstbau, Include-Tree-Analyse), Python-Formatierungsprüfung und Git-Operationen ab – alles mit Prozessisolierung durch Subprozessausführung.

Installation

Anforderungen: Python 3.14+, uv-Paketmanager

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

# Install dependencies
uv sync

Verwendung

MCP-Server

Startet einen FastMCP-Server, mit dem sich KI-Assistenten verbinden können:

uv run mcp-server

Konfigurieren Sie Ihren MCP-Client, um diesen Server zu verwenden. Zum Beispiel in opencode.json im Wurzelverzeichnis des Host-Projekts (das Projekt, auf das die Tools angewendet werden sollen, nicht das project-mcp-tools-Verzeichnis selbst):

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

Wichtig: --directory teilt uv mit, wo das project-mcp-tools-Paket zu finden ist (pyproject.toml, Abhängigkeiten, venv). --target-project legt das Arbeitsverzeichnis für den MCP-Prozess und alle seine Unterprozesse fest – dies ist das Projekt, auf das die Tools tatsächlich angewendet werden. Der Pfad wird relativ zu project-mcp-tools/ aufgelöst (da uv --directory das Arbeitsverzeichnis ändert). Ohne diese Trennung würden Git-/C++-/Python-Tools innerhalb von project-mcp-tools/ statt in Ihrem Host-Projekt arbeiten.

REST-API-Server

Startet einen FastAPI-Server auf http://0.0.0.0:8000:

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

Jedes Tool wird als POST /tools/<tool_name> bereitgestellt. Abfrageparameter aus der Funktionssignatur des Tools werden zu Feldern im JSON-Anforderungstext.

Beispielanfrage:

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

Swagger-UI ist unter http://localhost:8000/docs verfügbar.

CLI

Rufen Sie jedes Tool vom Terminal aus auf:

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

--target-project muss vor dem Toolnamen stehen. Tools, die nicht auf das Host-Projekt verweisen (z. B. get_random_number), können ohne --target-project aufgerufen werden.

Tool-Katalog

Allgemein

Tool

Signatur

Beschreibung

create_image

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

Generiert ein Bild mit Gemini (Modell gemini-3.1-flash-lite-image) aus der gegebenen Textbeschreibung. Speichert unter resources/images/

describe_image

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

Interpretiert ein Bild aus dem Zielprojekt mit Gemini Vision (festes Modell gemini-flash-lite-latest) für Modelle ohne Vision-Fähigkeit. image_path ist relativ zum Zielprojekt

debug

() -> str

Gibt Umgebungs-Debugging-Informationen zurück (cwd, Pfade, Umgebungsvariablen)

get_random_number

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

Gibt eine Zufallszahl zwischen start und end zurück

Git

Tool

Signatur

Beschreibung

git_discard_changes

() -> str

Verwirft alle nicht committeten Änderungen und entfernt nicht verfolgte Dateien. Setzt auf HEAD zurück

git_pull_submodules

() -> str

Aktualisiert jedes Submodul auf den neuesten Remote-Commit (erfordert saubere Submodule); die Zeiger-Erhöhung bleibt uncommittet

git_quick_upload

(message: str) -> str

Führt git pull, git add ., git commit -m <message> und git push aus

Python

Tool

Signatur

Beschreibung

python_analyze

() -> str

Wendet python_code_verifier auf alle *.py-Dateien im Tools-Verzeichnis an

python_clear

() -> str

Entfernt alle __pycache__-Verzeichnisse unter dem aktuellen Verzeichnis

python_code_verifier

(files: list[str]) -> str

Überprüft Python-Formatierungsregeln für angegebene Dateien

C++

Tool

Signatur

Beschreibung

cpp_analyze

() -> str

Wendet Formatierungskorrekturen auf alle .cpp/.hpp-Dateien an und führt dann cppcheck-Statikanalyse aus

cpp_code_verifier

(files: list[str]) -> str

Überprüft C++-Formatierungsregeln für angegebene Dateien

cpp_compile

() -> str

Kompiliert das gesamte C++-Projekt parallel mit Clang

cpp_create_class

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

Erstellt ein Gerüst für eine neue C++-Klasse aus einer Hierarchie-Zeichenkette (z. B. "game/player")

cpp_create_test

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

Erstellt ein Gerüst für eine C++-Testdatei

cpp_analyze_include_tree

(file_path: str = None) -> str

Zeigt den rekursiven Include-Abhängigkeitsbaum einer C++-Datei an. Standardmäßig die Hauptdatei des Projekts

cpp_generate_opengl_html

() -> str

Generiert opengl.htm, eine einseitige HTML-Baumansicht des OpenGL-4.6-Core-Profils. Liest include/glad/snake_case.hpp aus dem Zielprojekt, lädt die offiziellen Khronos-Referenzseiten in /tmp/generate-opengl-html herunter und schreibt die Ausgabe in das Wurzelverzeichnis des Zielprojekts

Sitzung

Tool

Signatur

Beschreibung

session_context_usage

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

Meldet, wie viel vom Modell-Kontextfenster die aktuelle opencode-Chat-Sitzung verwendet (context_used, context_percent, Modelllimit). Liest die opencode-Datenbank direkt; erkennt automatisch die aktive Sitzung im Zielprojekt. Siehe opencode-Wissen

Projektstruktur

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

Architektur

Das System ist um ein zentrales tool_manager-Objekt aufgebaut, das die gemeinsame Tool-Registry enthält und alle drei Transporte (CLI, REST-API und MCP) verwaltet.

Eine detaillierte Aufschlüsselung der Systemarchitektur, Designentscheidungen und des Zielprojekt-Mechanismus finden Sie im Leitfaden Systemarchitektur.

Hinzufügen eines neuen Tools

Um ein neues Tool hinzuzufügen, erstellen Sie eine Python-Datei in einem vorhandenen Tool-Ordner (oder einem neuen) und dekorieren Sie Ihre Funktion mit @tool().

Ein Schritt-für-Schritt-Tutorial und Richtlinien zur Strukturierung der Tool-Schicht und der Domänenbibliotheken finden Sie im Tool-Entwicklungsleitfaden.

Konfiguration

Globale und domänenspezifische Konfigurationen sind im Code zentralisiert. Eine vollständige Liste der Konfigurationsschlüssel und -werte finden Sie unter Systemarchitektur – Zentralisierte Konfiguration.

Codierungskonventionen

Der gesamte Code in diesem Projekt muss strengen Richtlinien entsprechen, einschließlich der ausschließlichen Verwendung von snake_case für alle Bezeichner und spezifischer Abstandsregeln. Die vollständigen Richtlinien finden Sie im Python-Styleguide.

Lizenz

GNU General Public License v3.0 – Einzelheiten finden Sie in den Lizenzheadern in den Quelldateien.

-
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