Skip to main content
Glama

FastAPI MCP Server Integration with Gemini CLI

This project demonstrates how to create a FastAPI application, wrap it with an MCP (Model Context Protocol) server, and integrate it with Gemini CLI for natural language interactions.

Project Structure

.
├── app.py              # FastAPI application with REST endpoints
├── mcp_server.py       # MCP server that exposes FastAPI endpoints as tools
├── requirements.txt    # Python dependencies
├── gemini-config.json  # Gemini CLI configuration file
└── README.md          # This file

Features

FastAPI Application (app.py)

  • User Management: Create, read, and delete users

  • Task Management: Create, read, update (complete), and delete tasks

  • Calculations: Perform mathematical operations (add, subtract, multiply, divide)

  • Health Check: Monitor application status

MCP Server (mcp_server.py)

Exposes 11 FastAPI endpoints as MCP tools:

  • get_health - Check API health status

  • get_users - Retrieve all users

  • get_user - Get a specific user by ID

  • create_user - Create a new user

  • delete_user - Delete a user by ID

  • get_tasks - Retrieve all tasks

  • get_task - Get a specific task by ID

  • create_task - Create a new task

  • complete_task - Mark a task as completed

  • delete_task - Delete a task by ID

  • calculate - Perform mathematical calculations

Setup Instructions

1. Install Dependencies

pip install -r requirements.txt

2. Start the FastAPI Application

In one terminal, start the FastAPI server:

python app.py

Or using uvicorn directly:

uvicorn app:app --reload --host 0.0.0.0 --port 8000

The API will be available at http://localhost:8000

3. Install Gemini CLI

Install the Gemini CLI globally using npm:

npm install -g @google/gemini-cli@latest

4. Configure Gemini CLI

Add the MCP server to Gemini CLI configuration. The configuration file is typically located at:

  • Windows: %APPDATA%\Gemini CLI\config.json

  • macOS/Linux: ~/.config/gemini-cli/config.json

Or use the Gemini CLI command:

gemini mcp add fastapi-mcp-server python mcp_server.py

Alternatively, you can manually add this to your Gemini CLI config file:

{
  "mcpServers": {
    "fastapi-mcp-server": {
      "command": "python",
      "args": ["mcp_server.py"],
      "env": {
        "PYTHONPATH": "."
      }
    }
  }
}

Note: Make sure to provide the full path to mcp_server.py if running from a different directory.

5. Verify Setup

Verify that the MCP server is properly configured:

gemini mcp list

Practical Demonstration with Gemini CLI

Once everything is set up, you can interact with your FastAPI application through Gemini CLI using natural language. Here are some examples:

Example 1: Check API Health

gemini> Check the health of the FastAPI application

Gemini CLI will call the get_health tool and return the API status.

Example 2: Create a User

gemini> Create a new user named John Doe with email john@example.com and age 30

This will invoke the create_user tool with the provided parameters.

Example 3: List All Users

gemini> Show me all users

This uses the get_users tool to retrieve all users from the API.

Example 4: Create a Task

gemini> Create a task titled "Complete MCP integration" with description "Integrate MCP server with Gemini CLI"

The create_task tool will be called to create the task.

Example 5: Perform Calculation

gemini> Calculate 25 multiplied by 4

Or:

gemini> What is 100 divided by 5?

This will use the calculate tool to perform the mathematical operation.

Example 6: Complete a Task

gemini> Mark task with ID 1 as completed

This will call the complete_task tool.

Example 7: Get Task Details

gemini> Show me task number 1

Uses the get_task tool to retrieve task details.

Example 8: Delete a User

gemini> Delete user with ID 1

Invokes the delete_user tool.

Testing the API Directly

You can also test the FastAPI endpoints directly using curl or a REST client:

# Health check
curl http://localhost:8000/health

# Get all users
curl http://localhost:8000/users

# Create a user
curl -X POST http://localhost:8000/users \
  -H "Content-Type: application/json" \
  -d '{"name": "John Doe", "email": "john@example.com", "age": 30}'

# Create a task
curl -X POST http://localhost:8000/tasks \
  -H "Content-Type: application/json" \
  -d '{"title": "Test Task", "description": "This is a test task"}'

# Perform calculation
curl -X POST http://localhost:8000/calculate \
  -H "Content-Type: application/json" \
  -d '{"operation": "multiply", "a": 25, "b": 4}'

API Documentation

Once the FastAPI application is running, you can access interactive API documentation at:

  • Swagger UI: http://localhost:8000/docs

  • ReDoc: http://localhost:8000/redoc

Troubleshooting

MCP Server Not Found

If Gemini CLI cannot find the MCP server:

  1. Ensure you're in the correct directory when starting Gemini CLI

  2. Check that the path to mcp_server.py in the config is correct

  3. Verify Python is in your PATH

Connection Errors

If you get connection errors:

  1. Ensure the FastAPI application is running on port 8000

  2. Check that the API_URL in mcp_server.py matches your FastAPI server URL

  3. Verify there are no firewall restrictions

Import Errors

If you encounter import errors:

  1. Make sure all dependencies are installed: pip install -r requirements.txt

  2. Verify you're using the correct Python environment

  3. Check that the mcp package is installed correctly

Requirements

  • Python 3.8 or higher

  • Node.js and npm (for Gemini CLI)

  • All packages listed in requirements.txt

License

This is a sample project for educational purposes.

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/teeps-heisenberg/MCP-Server-Fast-MCP'

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