Subclass pyarrow.flight.FlightServerBase and implement do_get, do_put, and get_flight_info methods; register the server on a port with server.serve()
Start the server in a background thread or process: server = MyFlightServer('grpc://0.0.0.0:8815'); server.serve()
On the client side: import pyarrow.flight; client = pyarrow.flight.connect('grpc://localhost:8815')
Issue a query by calling client.get_flight_info() with a FlightDescriptor, then retrieve data using client.do_get(ticket) where ticket comes from the FlightInfo response
Known gotchas
Arrow Flight uses gRPC under the hood; port conflicts with existing gRPC services are common — choose a non-standard port and confirm it is open in firewall rules
FlightServerBase.serve() blocks the calling thread; run it in a daemon thread or use the server as a context manager to avoid blocking your main program
For TLS, pass tls_certificates to the FlightServerBase constructor and use grpc+tls:// scheme in the client URI; mixing grpc:// (plaintext) with a TLS server causes a handshake failure
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp