Connect a custom MCP server to Construct: limits, auth and risk Construct now lets users connect a custom Model Context Protocol (MCP) server by entering its public HTTPS address and MCP path in the App Store, after which agents can call its tools with per-agent access controls. Construct communicates in plain JSON-RPC over HTTPS with a 15-second timeout and 512,000 bytes per request, does not perform the MCP `initialize` handshake, and caches the first 80 tools from a 3-second background tool-list fetch. Construct refuses private and local network addresses, requires HTTPS in production, and restricts app installation to owners and admins by default in team workspaces. Connect a custom MCP server to Construct: limits, auth and risk Nischal https://construct.computer/authors/nischal/ · Author Writes about Construct, AI agents, and building useful software. Published · @naik nischal https://x.com/naik nischal To connect a custom MCP server to Construct, open the App Store, choose Add MCP server in your library, and enter the server's public HTTPS address and its MCP path /mcp unless you changed it . Your agents can use its tools straight away, and you turn the server off per agent. Construct talks to the server in plain JSON-RPC over HTTPS: before each call it lists the tools, checks the arguments against the tool's own schema, then calls it, with 15 seconds and 512,000 bytes per request. It does not perform the initialize handshake, so the server has to answer without one. The Model Context Protocol MCP is the open standard for exposing tools to AI applications: a server lists tools, each with a name, a description and a JSON Schema for its inputs, and a client calls them. This guide covers what Construct sends your server, what it expects back, who can call it, and what this autumn's MCP security problems mean for a server you put on the internet. Is a custom MCP server worth building? Often it is not. Construct already connects apps such as Gmail, HubSpot, Notion, Linear and GitHub through its integration catalog, and an MCP server is one more service to host, secure and keep up. It is worth building when the system is yours and no catalog will ever list it, or when you want the agent to have a narrower interface than a whole account. A tool that can only look up an approval status is easier to reason about than a connected account that can read, send and delete. | Which route fits the system you want the agent to reach | | |---|---| | The system | Better route in Construct | |---|---| | A SaaS app in the catalog with the action needed | Connect the app | | Your own service or database with an API | A custom MCP server | | A website with no API | The live browser https://construct.computer/blog/ai-agent-browser-and-terminal/ | | People need a screen, not the agent | A workspace app https://construct.computer/blog/build-internal-tools-with-construct/ | | A one-off export | Import the file into Files and let the agent work on it in the terminal | Adding the server and choosing who can use it 1. Open the App Store and go to your library. Choose Add MCP server . 2. Enter the Server URL , for example https://mcp.example.com , and the MCP path . The path must stay on the same origin as the URL. 3. Optionally set an App ID , which is how agents and the App Store refer to the server. Choose Add server . 4. Open each agent in the Agents app and use App access to turn the server off for every agent that does not need it. New apps are allowed for every agent by default. In a team workspace, installing apps is an owner and admin permission by default, and an owner can grant it to members. Construct refuses private and local network addresses, requires HTTPS in production, and refuses an install from the Discord Activity, because the server would keep receiving call tokens after a Discord link was removed. Two boundaries are worth knowing before you rely on App access. A workflow https://construct.computer/use-cases/workflows/ runs as the person who owns it unless it names an agent, and then it can use every app installed for that person whatever an agent's App access says. And every scheduled run and every workflow step re-checks, at the moment it runs, that the server is still installed, that access is still granted and that the tool's schema still matches, so removing a server takes effect on the next run. What Construct sends your server Right after you add the server, Construct asks it for its tool list in the background, allowing 3 seconds, and caches the first 80 tools with their descriptions and annotations. Agents search that cached list by matching what they need against tool names and descriptions. The cache is not refreshed on its own, so a tool you add to the server later will not appear in agent search until you remove the server and add it again. If the first fetch failed, Construct asks the server live on each search instead, and a server that does not answer contributes no tools. When the agent calls a tool, Construct makes two requests. First a tools/list , to get the current schema. It drops any tool whose input schema is not a JSON object, keeps the first 200, finds the tool by name and validates the agent's arguments against its schema JSON Schema 2020-12 . Arguments that do not match never reach your server. Then the call itself: POST /mcp HTTP/1.1 Host: mcp.example.com Content-Type: application/json Authorization: Bearer