Skip to main content
Glama

FastAPI MCP Server

by arrehman3
README.md5.65 kB
# 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 file ``` ## Features ### 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 1. `get_app_info` - Get basic app information 2. `get_health` - Check app health status 3. `get_users` - List all users 4. `create_user` - Create a new user 5. `get_user` - Get user by ID 6. `get_tasks` - List all tasks 7. `create_task` - Create a new task 8. `get_task` - Get task by ID 9. `update_task` - Update an existing task 10. `delete_task` - Delete a task 11. `get_stats` - Get user and task statistics ## Quick Start ### Option 1: Automated Demo ```bash ./demo.sh ``` This interactive script will guide you through the entire setup and testing process. ### Option 2: Manual Setup #### 1. Run Setup Script ```bash ./setup.sh ``` #### 2. Start the FastAPI Application ```bash source venv/bin/activate python sample_app.py ``` The FastAPI app will be available at `http://localhost:8000` #### 3. Start the MCP Server (in another terminal) ```bash source venv/bin/activate python mcp_server.py ``` #### 4. Install Gemini CLI ```bash npm install -g @google/gemini-cli@latest ``` #### 5. Add MCP Server to Gemini CLI ```bash gemini mcp add fastapi-sample stdio python $(pwd)/mcp_server.py ``` #### 6. Test the Integration ```bash # 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_stats ``` ## Manual Setup If you prefer to set up manually: ### 1. Install Python Dependencies ```bash pip3 install -r requirements.txt ``` ### 2. Start Services - FastAPI app: `python3 sample_app.py` - MCP server: `python3 mcp_server.py` ### 3. Install and Configure Gemini CLI ```bash npm install -g @google/gemini-cli@latest gemini mcp add fastapi-sample stdio python3 /path/to/mcp_server.py ``` ## API Endpoints The FastAPI application provides the following REST endpoints: - `GET /` - App information - `GET /health` - Health check - `GET /users` - List users - `POST /users` - Create user - `GET /users/{user_id}` - Get user by ID - `GET /tasks` - List tasks - `POST /tasks` - Create task - `GET /tasks/{task_id}` - Get task by ID - `PUT /tasks/{task_id}` - Update task - `DELETE /tasks/{task_id}` - Delete task - `GET /stats` - Get statistics ## MCP Tool Examples ### Create and Manage Users ```bash # 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_users ``` ### Create and Manage Tasks ```bash # 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 1 ``` ### Get Statistics ```bash gemini call fastapi-sample get_stats ``` ## Troubleshooting ### Common Issues 1. **Port already in use**: Make sure port 8000 is available for the FastAPI app 2. **MCP server connection failed**: Ensure the FastAPI app is running before starting the MCP server 3. **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: ```bash uvicorn sample_app:app --reload --host 0.0.0.0 --port 8000 ``` ### Check MCP Server Status ```bash gemini mcp list ``` ## Development ### Adding New Endpoints 1. Add the endpoint to `sample_app.py` 2. Add the corresponding tool to `mcp_server.py` in the `handle_list_tools()` function 3. Add the tool handler in the `handle_call_tool()` function ### Testing You can test the FastAPI endpoints directly using curl: ```bash # 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/users ``` ## License This project is for educational purposes and demonstrates MCP integration patterns.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/arrehman3/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server