heku
One MCP server. Any API. Any LLM.
Describe an integration as JSON. heku serves it as a tool your agent can call. GitHub, Stripe, Linear, internal REST: one config each, one server total.
Most MCP servers are thin HTTP wrappers. You do not need a new one every time.
Roughly 85% of MCP servers are HTTP proxies around an existing API. Another 10% wrap CLI commands. Only about 5% need their own runtime. heku covers the 95% with JSON configs on one server, so you stop paying the per-integration tax in manifest size and ops time.
See it running
Install in one command.
Point the hosted console at localhost.
Chat with your tools without wiring a client.
Config in. Tools out.
Write a config.
JSON describes the connector type and each tool call. GraphQL, gRPC, and child-MCP configs can leave tools empty and heku introspects the source.
Start heku.
One server loads every config. Credentials live in .env files per service, not in your MCP client JSON.
Agent calls tools.
Lazy discovery keeps the cold-start manifest small until the agent searches for what it needs.
What people build with heku
Agent harness
Wire Cursor or Claude to GitHub, Slack, and Linear without maintaining three separate MCP servers.
github-http · slack-http · linear-graphqlInternal APIs
Turn hundreds of internal REST endpoints into agent tools with JSON configs, not a new microservice per team.
Hosted gateway
Run heku once on a server; agents connect over HTTP from anywhere — no local MCP process per machine.
Share and install
Publish a config to heku hub. Anyone installs with one command and their agent can call your API.
heku install @rtl/githubBrowse heku hub →Want the full story on lazy discovery and self-authored configs? Read the launch post.
Two hundred configs. Same cold-start cost.
Traditional MCP loads every tool schema at connect. heku's discovery handshake is O(1) regardless of config count — flat or namespaced naming, same bounded manifest. Service tools are found on demand via search.
Eight connector types, one config format.
Each config sets a connector.type and connection details. Arrow through the types below to see each shape.
Leave tools empty and heku introspects the schema on load. Queries and mutations show up in the manifest without hand-written definitions.
Console and heku hub
Run heku locally, then use the hosted console against your instance. Install community configs from heku hub without hand-rolling JSON.
Console
Chat with your tools, edit configs, inspect prompts, and check auth status for every connector.
Open console →heku hub
Browse community configs, install with one command, and publish your own integrations.
Browse heku hub →heku install @rtl/linear
heku install @rtl/slack@1.2.0
heku publish ./my-config.json
Let the agent write its own configs
The same meta-tools that power lazy discovery let an agent hand itself a new capability mid-conversation. Disable write access in console settings when you want a fixed integration set.
Encounter
The agent meets a system it has no tools for. You drop in API docs, an OpenAPI spec, or a few cURL examples.
Author
The agent calls heku.create_config and writes the JSON itself: endpoints, auth, tool names, inline.
Hot reload
The file watcher picks up the new config. The server stays up. Existing tools stay live. No restart.
Call
By the next user message, the new tools are callable. Same session, same client, no human in the loop.
See it in action: heku writes an OpenRouter config from live docs.
Built in from day one
JSON-defined tools
json-toolsDescribe a tool in a few lines of JSON. No SDK to learn, no framework to wire up, no code to maintain.