What are you connecting?

Nothing to connect

This ships with Mindfront. Just ask it.

That system

Already built in. Open Settings → Integrations and sign in.

That system

Then Settings → Modules → Add MCP Server. The tools appear on their own.

It won't connect

If the vendor allow-lists callers, Mindfront's outbound address has to be on that list. If it wants a login rather than a key, use the sign-in option — a pasted key comes back as CREDENTIALS_REJECTED.

Nobody ships a connector for that

So you run a small web service and Mindfront calls it. Two endpoints, about forty lines, any language. An afternoon.

I already have a service running

1 of 5

Save this as bridge.py

It returns made-up data on purpose. Get Mindfront talking to it first; the real query is a one-line change.

#!/usr/bin/env python3
import json
from http.server import HTTPServer, BaseHTTPRequestHandler

META = {
    "protocolVersion": 4,
    "moduleVersion": "1.0.0",
    "moduleName": "OrdersBridge",
    "description": "Answers questions about orders.",
    "actions": [{
        "name": "getOrderStatus",
        "description": "Gets the status of an order by its number.",
        "route": "/action/getOrderStatus",
        "riskLevel": "safe",
        "input": {
            "type": "object",
            "properties": {"orderNumber": {"type": "string"}},
            "required": ["orderNumber"]
        }
    }]
}

def get_order_status(n):          # <- replace with your query
    return {"orderNumber": n, "status": "In production"}

class Bridge(BaseHTTPRequestHandler):
    def reply(self, payload):
        self.send_response(200)
        self.send_header("Content-type", "application/json")
        self.end_headers()
        self.wfile.write(json.dumps(payload).encode())

    def do_GET(self):
        self.reply(META) if self.path == "/meta" else self.send_error(404)

    def do_POST(self):
        n = int(self.headers.get("Content-Length", 0))
        body = json.loads(self.rfile.read(n) or b"{}")
        if self.path == "/action/getOrderStatus":
            try:
                self.reply({"status": "success",
                            "data": get_order_status(body.get("orderNumber"))})
            except Exception as e:
                self.reply({"status": "failure", "error": {"message": str(e)}})
        else:
            self.send_error(404)

HTTPServer(("", 8080), Bridge).serve_forever()
My data's in a database — write it for me

Paste this into Claude or ChatGPT with your schema. Table names alone are enough.

Read this first: https://mindfront.engineering/docs/llms-full.txt

Write me a complete, runnable Mindfront Fiber bridge in one file.
protocolVersion 4. Three actions, all riskLevel "safe" (they only
read). Every action needs name, description, route, riskLevel and
input. Always return HTTP 200 — put logical errors in the body as
{"status": "failure", "error": {"message": "..."}}.

Then give me the one command to run it.

IT MUST ANSWER:
1.
2.
3.

MY SCHEMA (table names alone are fine):
2 of 5

Start it

Leave the terminal open. Closing it stops the service.

python3 bridge.py
It won't start

Address already in use — something else holds port 8080. Change it to 8081 on the last line and note the new number; step 5 asks for it.

3 of 5

Open it in a browser

JSON with getOrderStatus in it means the service is answering.

http://localhost:8080/meta
I get an error page

Go back to the terminal and read the last line. Python prints the reason there in plain English — almost always a typo, or the window was closed.

4 of 5

Paste that JSON here

Mindfront drops actions missing a name, route or risk level — silently, with no error. This catches it first.

Checking…

5 of 5

Point Mindfront at it

Settings → Modules → Add Fiber Module. Base URL is where the service runs as seen from the Mindfront serverlocalhost on your laptop is not localhost there.

It says Degraded

Open that base URL in a browser on the Mindfront server. If it doesn't load there it's a network route, not your code. If it does, /meta is slower than five seconds — it must return a fixed object and never touch the database.

Connected

Mindfront can reach it

Anyone in the org can ask about it now. Every call is logged against whoever prompted it.