MCP Course documentation
Setting up the Project
Setting up the Project
In this section, we’ll set up the development environment for our Pull Request Agent.
We’ll use modern Python tooling with
uvfor dependency management and create the necessary configuration files. If you’re not familiar withuv, you can learn more about it here.
Project Structure
Let’s start by creating the project directory and understanding the file structure:
git clone https://huggingface.co/spaces/mcp-course/tag-this-repoOur final project structure will look like this:
hf-pr-agent/
├── mcp_server.py # Core MCP server with tagging tools
├── app.py # FastAPI webhook listener and agent
├── requirements.txt # Python dependencies
├── pyproject.toml # Project configuration
├── env.example # Environment variables template
├── cleanup.py # Development utilityDependencies and Configuration
Let’s walk through the dependencies and configuration for our project.
1. Python Project Configuration
We will use uv to create the pyproject.toml file to define our project:
If you don’t have
uvinstalled, you can follow the instructions here.
[project]
name = "mcp-course-unit3-example"
version = "0.1.0"
description = "FastAPI and Gradio app for Hugging Face Hub discussion webhooks"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"fastapi>=0.104.0",
"uvicorn[standard]>=0.24.0",
"gradio>=4.0.0",
"huggingface-hub[mcp]>=0.32.0",
"pydantic>=2.0.0",
"python-multipart>=0.0.6",
"requests>=2.31.0",
"python-dotenv>=1.0.0",
"fastmcp>=2.0.0",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src"]For compatibility with various deployment platforms, the same is repeated in requirements.txt
To create a virtual environment, run:
uv venv
source .venv/bin/activate # or .venv/Scripts/activate on WindowsTo install the dependencies, run:
uv sync2. Environment Configuration
Create env.example to document required environment variables:
# Hugging Face API Token (required)
# Get from: https://huggingface.co/settings/tokens
HF_TOKEN=hf_your_token_here
# Webhook Secret (required for production)
# Use a strong, random string
WEBHOOK_SECRET=your-webhook-secret-here
# Model for the agent (optional)
HF_MODEL=owner/model
# Provider for MCP agent (optional)
HF_PROVIDER=huggingfaceYou will need to get your Hugging Face API token from here.
You will also need to generate a webhook secret. You can do this by running the following command:
python -c "import secrets; print(secrets.token_hex(32))"You will then need to add the webhook secret to your .env file based on the env.example file.
Next Steps
With our project structure and environment set up, we’re ready to:
- Create the MCP Server - Implement the core tagging functionality
- Build the Webhook Listener - Handle incoming discussion events
- Integrate the Agent - Connect MCP tools with webhook processing
- Test and Deploy - Validate functionality and deploy to Spaces
In the next section, we’ll dive into creating our MCP server that will handle all the Hugging Face Hub interactions.
< > Update on GitHubKeep your
.envfile secure and never commit it to version control. The.envfile should be added to your.gitignorefile to prevent accidental exposure of secrets.