2.5 KiB
2.5 KiB
System Architecture (SYSTEM.md)
Overview
trymemcp is a stateless Python FastMCP server using the Streamable HTTP transport bound to 0.0.0.0:8000. It translates Model Context Protocol (MCP) tools/call invocations into authenticated asynchronous HTTP requests against the TryMe Gaming App API (https://tryme.tpk.pw).
Architecture Diagram
graph TB
Client["MCP Client (IDE / Agent / CLI)"] -->|"Streamable HTTP (0.0.0.0:8000/mcp)"| API["FastMCP HTTP Server (app/main.py)"]
Probe["Docker / K8s Health Probe"] -->|"GET /health"| API
API --> Tools["29 Typed MCP Tools"]
Tools --> Service["TryMeClient & Auth Resolver (app/client.py)"]
Service -->|"HTTPS REST (X-API-Key / Bearer / Cookie)"| External["TryMe Gaming App API (https://tryme.tpk.pw)"]
Request & Authentication Flow
sequenceDiagram
participant C as MCP HTTP Client
participant M as FastMCP Server (0.0.0.0:8000)
participant A as TryMeClient Auth Resolver
participant T as TryMe API (tryme.tpk.pw)
C->>M: POST /mcp (tools/call + optional HTTP headers)
M->>A: Validate tool args via Pydantic models
A->>A: Resolve auth (1: Tool Arg -> 2: MCP HTTP Header -> 3: Env Var)
A->>T: Async HTTPS request (httpx.AsyncClient)
T-->>A: JSON / 204 No Content / 302 Redirect
A-->>M: Structured Python dict/list (or TryMeApiError)
M-->>C: MCP JSON-RPC CallToolResult
Module Breakdown
app/config.py: Readsversion.iniand environment variables (MCP_HOST=0.0.0.0,MCP_PORT=8000,MCP_PATH=/mcp,TRYME_BASE_URL=https://tryme.tpk.pw, timeouts, and default credentials).app/models.py: Pydantic v2 models (QuestionOptionSchema,QuestionIn) enforcing OpenAPI 3.1 field constraints and generating rich JSON Schemas for MCP tool discovery.app/client.py: Asynchttpx.AsyncClientwrapper handling three-tier credential resolution, Bearer header normalization,tryme_sessioncookie extraction, redirect reporting, and structured upstream error reporting (TryMeApiError).app/main.py: FastMCP server instance, custom HTTP endpoints (/health,/openapi.yaml,/openapi.json), all 29 MCP tool definitions, ASGIapp, andrun_server()CLI entrypoint.helm-chart/&.gitea/workflows/cicd.yaml: Automated Docker multi-stage build, Harbor & DockerHub image publishing, and Helm OCI chart delivery.