MCP connector wires A2AJ, CourtListener, and Ansvar as OpenAI Responses API tools

Three commits evolve `mcp_connector.py` from a simple httpx client into a `MikeOSS_MCP_Manager` that registers multiple Canadian legal MCP servers as tools via the OpenAI Responses API. The endpoint URLs and the A2AJ guide notebook are the most practically useful outputs.

searchintegration

4bc08fd rewrites the connector to use AsyncOpenAI(...).responses.create(..., tools=[{"type":"mcp","server_url":...}]) instead of a hand-rolled httpx/JSON-RPC client. This is the OpenAI SDK's native remote MCP support. The commit also adds a2aj_mcp_guide.ipynb, the official A2AJ notebook demonstrating how to connect to https://api.a2aj.ca/mcp (note: api.a2aj.ca/mcp is the older endpoint; the newer one is mcp.a2aj.ca/mcp).

bd3ca89 renames the class to MikeOSS_MCP_Manager and registers three servers: A2AJ at https://api.a2aj.ca/mcp, CourtListener at https://mcp.courtlistener.com, and @ansvar/canadian-law-mcp via npx. The Ansvar server is defined structurally but not actually wired - a comment notes a "stdio-to-sse bridge would be needed in a full production environment."

659528c8 makes the A2AJ URL configurable via A2AJ_MCP_URL env var (defaulting to the public endpoint) and adds README documentation for self-hosting the A2AJ Mongo/Elasticsearch stack for local data sovereignty.

Two things to flag before adopting this pattern. First, all tools are registered with "require_approval": "never", which auto-approves every remote tool call. Review that before putting it in front of real client data. Second, the sovereignty framing is in tension with the implementation: Canadian legal queries are routed through the OpenAI Responses API, so they transit OpenAI's infrastructure regardless of whether the retrieval endpoints are local.

So what Worth a look for the Canadian MCP endpoint inventory (A2AJ at `https://api.a2aj.ca/mcp`, CourtListener at `https://mcp.courtlistener.com`, `@ansvar/canadian-law-mcp`) and for the "remote MCP server as an OpenAI tool" pattern. Change `require_approval` before production use, and factor in that the OpenAI Responses API path undermines the data sovereignty story.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

3 commits from jrklaus8/mike-Canada, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
4bc08fdb Refactor MCP connector to use OpenAI SDK based on A2AJ notebook guide MikeOSS Bot 2026-05-22 ↗ GitHub
bd3ca893 feat: Add CourtListener and Ansvar Canadian Law MCP integrations MikeOSS Bot 2026-05-22 ↗ GitHub
659528c8 docs: Document option to self-host A2AJ Mongo/Elasticsearch stack for local data sovereignty MikeOSS Bot 2026-05-22 ↗ GitHub

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-541.md from inside the repo you want the changes in.

⬇ Download capture-thread-541.md