Skip to main content
Glama
README.md
# 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.