Skip to main content
Glama

FastMCP Example

A minimal Python FastMCP-style server with a single tool endpoint and Playwright Page Object Model (POM) tests.

Project structure

  • fastmcp/ - package implementing the FastMCP server and tool registry

  • fastmcp/tools/ - individual tool implementations

  • tests/ - unit tests, browser tests, and BDD scenarios

  • tests/pages/ - Playwright page object classes

  • tests/features/ - BDD feature files

  • tests/steps/ - BDD step definitions

  • tests/utils/ - shared browser and server helpers

  • fastmcp/tools/external_api_tool.py - example business intelligence tool using an external API

Related MCP server: qa-ai-mcp-server-gits

Setup

  1. Install Python 3.10+ and ensure it is on your PATH.

  2. Install the Allure CLI separately so you can view test reports.

  3. From the project root:

python -m pip install --upgrade pip
python -m pip install -e .[dev]
python -m playwright install chromium

Run the server

python server.py

Open http://127.0.0.1:8000 to verify the serve running.

FastMCP endpoints

  • GET / - server status

  • GET /tools - registered tool metadata

  • POST /tool/{tool_name} - invoke a tool

The new external_api tool can be called at /tool/external_api and returns a simple business intelligence summary from a public API.

Example request:

curl -X POST http://127.0.0.1:8000/tool/echo \
  -H "Content-Type: application/json" \
  -d '{"prompt":"hello"}'

Tests

Run the existing pytest suite:

pytest

Generate Allure results:

pytest --alluredir=allure-results

View the report locally after installing the Allure CLI:

allure serve allure-results

Or generate a static HTML report:

allure generate allure-results --clean -o allure-report
allure open allure-report

Page Object Model

The browser tests use a dedicated POM class at tests/pages/root_page.py. That keeps UI interactions separate from test assertions and makes the suite easier to extend.

Related MCP Connectors

Related MCP Servers