This guide explains how to test TypeScript, Go, C#, R, or any non-Python implementation against the Python TCK test suite using the HTTP bridge protocol.
How It Works
The HTTP bridge enables the Python TCK to validate implementations in any language:
-
Your implementation runs a thin HTTP conformance server that maps bridge protocol requests to your native client API.
-
The Python test suite uses
HTTPBridgeAdapterto proxy everyBaseAdaptermethod call as an HTTP POST. -
Test results are identical to running a native Python adapter — same reports, same compliance tiers.
Python TCK Tests
|
v
HTTPBridgeAdapter ──HTTP POST──> Conformance Server (TS/Go/C#/R/etc.)
|
v
Your Native Client
|
v
Neo4j / Service
Running the TypeScript Conformance Server
cd clients/typescript
# Set the upstream memory service endpoint
export MEMORY_ENDPOINT=http://localhost:7474
# Start the conformance server (default port 3001)
npm run conformance:server
Then in another terminal:
# Run the Python TCK against it
uv run pytest -m bronze --bridge-url http://localhost:3001 -v
Running the Go Conformance Server
cd clients/go
# Set the upstream memory service endpoint
export MEMORY_ENDPOINT=http://localhost:7474
# Start the conformance server
go run ./conformance
Then:
uv run pytest -m bronze --bridge-url http://localhost:3001 -v
Running the C# Conformance Server
cd clients/csharp
# Build the solution first
dotnet build Neo4j.AgentMemory.sln
# Set the upstream memory service endpoint and start the conformance server
cd conformance/Neo4j.AgentMemory.Conformance
MEMORY_ENDPOINT=http://localhost:7474 dotnet run --no-build
Then:
uv run pytest -m bronze --bridge-url http://localhost:3001 -v
|
Tip
|
Use TCK_BRIDGE_PORT to change the default port: TCK_BRIDGE_PORT=4000 dotnet run --no-build
|
Running the R Conformance Server
cd clients/rlang/conformance
# Set the upstream memory service endpoint and start the conformance server
MEMORY_ENDPOINT=http://localhost:7474 Rscript server.R
Then:
uv run pytest -m bronze --bridge-url http://localhost:3001 -v
|
Tip
|
The R server requires plumber, httr2, R6, and jsonlite packages. Install with Rscript -e "install.packages(c('plumber', 'httr2', 'R6', 'jsonlite'))".
|
Building Your Own Conformance Server
To test an implementation in any language:
-
Create an HTTP server listening on a configurable port (default 3001).
-
Implement POST handlers for each
BaseAdaptermethod. See Bridge Protocol Specification for the full endpoint list. -
Map incoming JSON parameters to your client’s native API calls.
-
Return JSON responses matching the TCK data model schemas.
Minimal Example (Pseudocode)
POST /add_message
Body: {"session_id": "...", "role": "user", "content": "Hello", "metadata": {}}
Response: {"id": "uuid", "role": "user", "content": "Hello", "timestamp": "ISO-8601", "metadata": {}}
POST /clear_all_data
Response: 204 No Content
POST /delete_message
Body: {"message_id": "uuid"}
Response: {"deleted": true}
Key Protocol Rules
-
Method names match
BaseAdaptermethods exactly (snake_case). -
UUIDs are serialized as strings.
-
Timestamps are ISO 8601 strings.
-
Null/undefined values are omitted from request bodies.
-
Void methods (like
clear_session) return HTTP 204. -
Not-found results (like
get_entity_by_namewith no match) returnnull.
Configuring the Bridge Port
Set the TCK_BRIDGE_PORT environment variable to change from the default 3001:
TCK_BRIDGE_PORT=4000 go run ./conformance
uv run pytest -m bronze --bridge-url http://localhost:4000
See Also
-
HTTP Bridge Protocol Specification — full endpoint and data type reference
-
Adding TCK to Your CI Pipeline — automate bridge testing in CI