Wraps a FastAPI application as an MCP server, exposing REST endpoints as MCP tools for user management, task management, and statistics retrieval.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FastAPI MCP Servercreate a new user named Alex with email alex@example.com and age 28"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FastAPI + MCP Server Integration with Gemini CLI
This project demonstrates how to build a FastAPI application, wrap it as an MCP (Model Context Protocol) Server, and integrate it with Gemini CLI for direct tool calling.
Project Structure
├── sample_app.py # FastAPI application with user and task management
├── mcp_server.py # MCP server that wraps the FastAPI app
├── requirements.txt # Python dependencies
├── setup.sh # Setup script
├── demo.sh # Interactive demonstration script
├── test_integration.py # Integration test script
├── venv/ # Python virtual environment
└── README.md # This fileFeatures
FastAPI Application (sample_app.py)
User Management: Create, read users with name, email, and age
Task Management: Create, read, update, delete tasks
Statistics: Get overview of users and tasks
Health Check: Basic health monitoring endpoint
MCP Server (mcp_server.py)
Tool Integration: Exposes all FastAPI endpoints as MCP tools
Error Handling: Proper HTTP error handling and logging
Type Safety: Full type annotations and schema validation
Available MCP Tools
get_app_info- Get basic app informationget_health- Check app health statusget_users- List all userscreate_user- Create a new userget_user- Get user by IDget_tasks- List all taskscreate_task- Create a new taskget_task- Get task by IDupdate_task- Update an existing taskdelete_task- Delete a taskget_stats- Get user and task statistics
Quick Start
Option 1: Automated Demo
./demo.shThis interactive script will guide you through the entire setup and testing process.
Option 2: Manual Setup
1. Run Setup Script
./setup.sh2. Start the FastAPI Application
source venv/bin/activate
python sample_app.pyThe FastAPI app will be available at http://localhost:8000
3. Start the MCP Server (in another terminal)
source venv/bin/activate
python mcp_server.py4. Install Gemini CLI
npm install -g @google/gemini-cli@latest5. Add MCP Server to Gemini CLI
gemini mcp add fastapi-sample stdio python $(pwd)/mcp_server.py6. Test the Integration
# List available tools
gemini mcp list
# Call a tool
gemini call fastapi-sample get_app_info
# Create a user
gemini call fastapi-sample create_user --name "John Doe" --email "john@example.com" --age 30
# Get all users
gemini call fastapi-sample get_users
# Create a task
gemini call fastapi-sample create_task --title "Learn MCP" --description "Study Model Context Protocol" --user_id 1
# Get statistics
gemini call fastapi-sample get_statsManual Setup
If you prefer to set up manually:
1. Install Python Dependencies
pip3 install -r requirements.txt2. Start Services
FastAPI app:
python3 sample_app.pyMCP server:
python3 mcp_server.py
3. Install and Configure Gemini CLI
npm install -g @google/gemini-cli@latest
gemini mcp add fastapi-sample stdio python3 /path/to/mcp_server.pyAPI Endpoints
The FastAPI application provides the following REST endpoints:
GET /- App informationGET /health- Health checkGET /users- List usersPOST /users- Create userGET /users/{user_id}- Get user by IDGET /tasks- List tasksPOST /tasks- Create taskGET /tasks/{task_id}- Get task by IDPUT /tasks/{task_id}- Update taskDELETE /tasks/{task_id}- Delete taskGET /stats- Get statistics
MCP Tool Examples
Create and Manage Users
# Create a user
gemini call fastapi-sample create_user --name "Alice Smith" --email "alice@example.com" --age 25
# Get user by ID
gemini call fastapi-sample get_user --user_id 1
# List all users
gemini call fastapi-sample get_usersCreate and Manage Tasks
# Create a task
gemini call fastapi-sample create_task --title "Complete project" --description "Finish the MCP integration" --user_id 1
# Update a task
gemini call fastapi-sample update_task --task_id 1 --title "Complete project" --description "Finish the MCP integration" --user_id 1 --completed true
# Delete a task
gemini call fastapi-sample delete_task --task_id 1Get Statistics
gemini call fastapi-sample get_statsTroubleshooting
Common Issues
Port already in use: Make sure port 8000 is available for the FastAPI app
MCP server connection failed: Ensure the FastAPI app is running before starting the MCP server
Gemini CLI not found: Make sure Node.js and npm are installed, then install Gemini CLI globally
Debug Mode
To run the FastAPI app in debug mode:
uvicorn sample_app:app --reload --host 0.0.0.0 --port 8000Check MCP Server Status
gemini mcp listDevelopment
Adding New Endpoints
Add the endpoint to
sample_app.pyAdd the corresponding tool to
mcp_server.pyin thehandle_list_tools()functionAdd the tool handler in the
handle_call_tool()function
Testing
You can test the FastAPI endpoints directly using curl:
# Test app info
curl http://localhost:8000/
# Create a user
curl -X POST http://localhost:8000/users \
-H "Content-Type: application/json" \
-d '{"name": "Test User", "email": "test@example.com", "age": 30}'
# Get users
curl http://localhost:8000/usersLicense
This project is for educational purposes and demonstrates MCP integration patterns.