Information
# Prefect MCP Server
A Model Context Protocol (MCP) server implementation for [Prefect](https://www.prefect.io/), allowing AI assistants to interact with Prefect through natural language.
## Features
This MCP server provides access to the following Prefect APIs:
- **Flow Management**: List, get, and delete flows
- **Flow Run Management**: Create, monitor, and control flow runs
- **Deployment Management**: Manage deployments and their schedules
- **Task Run Management**: Monitor and control task runs
- **Work Queue Management**: Create and manage work queues
- **Block Management**: Access block types and documents
- **Variable Management**: Create and manage variables
- **Workspace Management**: Get information about workspaces
## Configuration
Set the following environment variables:
\`\`\`bash
export PREFECT_API_URL="http://localhost:4200/api" # URL of your Prefect API
export PREFECT_API_KEY="your_api_key" # Your Prefect API key (if using Prefect Cloud)
\`\`\`
## Usage
Run the MCP server, and prefect:
\`\`\`
docker compose up
\`\`\`
## Example Input
Once connected, an AI assistant can help users interact with Prefect using natural language. Examples:
- "Show me all my flows"
- "List all failed flow runs from yesterday"
- "Trigger the 'data-processing' deployment"
- "Pause the schedule for the 'daily-reporting' deployment"
- "What's the status of my last ETL flow run?"
## Development
Several of the endpoints have yet to be implemented
### Adding New Functions
To add a new function to an existing API:
1. Add the function to the appropriate module in \`src/mcp_prefect\`
2. Add the function to the \`get_all_functions()\` list in the module
To add a new API type:
1. Add the new type to \`APIType\` in \`enums.py\`
2. Create a new module in \`src/prefect/\`
3. Update \`main.py\` to include the new API type
Example usage:
\`\`\`
\{
"mcpServers": \{
"mcp-prefect": \{
"command": "mcp-prefect",
"args": [
"--transport", "sse"
],
"env": \{
"PYTHONPATH": "/path/to/your/project/directory"
\},
"cwd": "/path/to/your/project/directory"
\}
\}
\}
\`\`\`