README.md•3.86 kB
# Mission Control Plane (MCP) Server
## Project Overview
This project implements a Mission Control Plane (MCP) server using FastAPI, designed to provide a robust and extensible backend for managing and interacting with various functionalities, referred to as "skills." It leverages Docker and Docker Compose for easy deployment and includes hot-reloading for efficient development.
## Features
* **FastAPI Backend:** A high-performance, easy-to-use web framework for building APIs with Python 3.11.
* **Dockerized Deployment:** Packaged in a `python:3.11-slim` Docker container for consistent environments.
* **Docker Compose:** Simplifies the management and orchestration of the server and its dependencies.
* **Hot-Reloading:** Automatic code reloading during development for a smooth workflow.
* **Skills Feature:** A dynamic system allowing LLMs to progressively discover and understand tools/functionalities defined in a structured `skillz` directory. The MCP server serves as a documentation hub for these skills, enabling LLMs to interpret and execute actions based on the provided skill definitions. When implementing skills, agents should utilize the `tmp` directory for any local file generation or copying.
* **Local Skill Execution**: Skills exposed by the MCP can be retrieved and executed locally, providing flexibility for client-side operations. Refer to `GEMINI.md` for detailed instructions on how to use skills locally.
## Getting Started
To set up and run the MCP server, ensure you have Docker and Docker Compose installed.
1. **Clone the repository:**
```bash
git clone https://github.com/pwntato/skillz_mcp
cd skillz_mcp
```
2. **Start the server:**
```bash
docker compose up -d
```
This command will build the Docker image (if not already built) and start the server in detached mode.
3. **Access the API Documentation:**
The server will be available at `http://localhost:8000`. You can access the interactive API documentation (Swagger UI) by navigating to `http://localhost:8000/docs` in your web browser.
## API Endpoints
* `/`: Redirects to the API documentation (`/docs`).
* `/skills`: Returns an `instruction` field explaining the purpose of skills for LLMs, along with a list of available skills, including their name, description, and `skill_id` (derived from the skill's directory name).
* `/skills/{skill_id}/{file_path:path}`: Retrieves an `instruction` field explaining the purpose of skills for LLMs, along with the content of a specific file within a given skill's directory. This is used by LLMs for progressive loading of skill details and associated scripts.
* `/skills/{skill_id}/files`: Returns an `instruction` field explaining the purpose of skills for LLMs, along with a list of all files within a given skill's directory.
## Skills Development
The "skills" feature allows for dynamic extension of the MCP server's capabilities. Each skill is defined within its own directory under the `skillz/` folder. The MCP server acts as a repository for these skill definitions, which are then interpreted and executed by an LLM.
* The `skillz` directory is mounted into the container at `/skillz` and can be used for storing and accessing data.
* The `tmp` directory is available for generating or copying files locally during development or agent operations. Its contents are git-ignored.
## Testing
Automated tests are configured using `pytest` and can be run locally or via GitHub Actions.
To run tests locally (ensure you have `pytest` and `httpx` installed in your local Python environment):
```bash
PYTHONPATH=. pytest
```
## Contributing
Contributions are welcome! Please refer to `GEMINI.md` for development conventions and guidelines.
## License
This project is licensed under the MIT License. See the `LICENSE` file for details.