project-mcp-tools
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 syncVerwendung
MCP-Server
Startet einen FastMCP-Server, mit dem sich KI-Assistenten verbinden können:
uv run mcp-serverKonfigurieren 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:
--directoryteiltuvmit, wo dasproject-mcp-tools-Paket zu finden ist (pyproject.toml, Abhängigkeiten, venv).--target-projectlegt 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 zuproject-mcp-tools/aufgelöst (dauv --directorydas Arbeitsverzeichnis ändert). Ohne diese Trennung würden Git-/C++-/Python-Tools innerhalb vonproject-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-projectJedes 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 |
|
| Generiert ein Bild mit Gemini (Modell |
|
| Interpretiert ein Bild aus dem Zielprojekt mit Gemini Vision (festes Modell |
|
| Gibt Umgebungs-Debugging-Informationen zurück (cwd, Pfade, Umgebungsvariablen) |
|
| Gibt eine Zufallszahl zwischen start und end zurück |
Git
Tool | Signatur | Beschreibung |
|
| Verwirft alle nicht committeten Änderungen und entfernt nicht verfolgte Dateien. Setzt auf HEAD zurück |
|
| Aktualisiert jedes Submodul auf den neuesten Remote-Commit (erfordert saubere Submodule); die Zeiger-Erhöhung bleibt uncommittet |
|
| Führt |
Python
Tool | Signatur | Beschreibung |
|
| Wendet |
|
| Entfernt alle |
|
| Überprüft Python-Formatierungsregeln für angegebene Dateien |
C++
Tool | Signatur | Beschreibung |
|
| Wendet Formatierungskorrekturen auf alle |
|
| Überprüft C++-Formatierungsregeln für angegebene Dateien |
|
| Kompiliert das gesamte C++-Projekt parallel mit Clang |
|
| Erstellt ein Gerüst für eine neue C++-Klasse aus einer Hierarchie-Zeichenkette (z. B. |
|
| Erstellt ein Gerüst für eine C++-Testdatei |
|
| Zeigt den rekursiven Include-Abhängigkeitsbaum einer C++-Datei an. Standardmäßig die Hauptdatei des Projekts |
|
| Generiert |
Sitzung
Tool | Signatur | Beschreibung |
|
| Meldet, wie viel vom Modell-Kontextfenster die aktuelle opencode-Chat-Sitzung verwendet ( |
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 statusArchitektur
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.
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