create_serviceLABSCO SUMMARY
Your deployment target becomes something you can talk to.
Everything an app on ml.ink needs — the repo, the service, the database, the domain — is reachable from one session, so shipping a change and finding out what the build did stop being two different places you have to go.
What it is
A hosted control plane for ml.ink, reached at https://mcp.ml.ink/mcp over Streamable HTTP. It covers the whole life of an app there — the git repo it builds from, the service that runs it, the database behind it, and the DNS in front of it.
What you get
- Deploy a service from a git repo, then change its repo, branch, port, env, resources or commands and redeploy on the latest code
- Build and runtime logs for a service, alongside the configuration it is running with
- A database provisioned — SQLite via Turso — with the connection URL and auth token read back when you need them
- A git repo created for you, internal or on GitHub, plus the token to push to it
- Custom domains attached to a service, and DNS records added, listed and removed
- Workspaces created, people invited, invitations accepted or declined, members listed and removed
- An action log of what has happened on the account
Requirements
An ml.ink account. Clients that support OAuth sign in through the browser; otherwise generate an API key under Settings → API Keys and send it as an Authorization: Bearer header. Nothing to install — the server is hosted.
Setup effort
One command plus a key — claude mcp add --transport http ink https://mcp.ml.ink/mcp, then supply credentials
USE CASES
Shipping a service for the first time
Point it at a git repo and it deploys. If the repo does not exist yet it makes one and hands back a token to push to.
Finding out why a deploy went wrong
Read the build and runtime logs beside the service's current configuration, fix what was wrong, and put the latest code back out.
Giving an app a database
Provision the database and read back its connection URL and auth token, so the service that needs them is updated in the same pass.
Putting a service on your own domain
Attach the custom domain, add the DNS records it needs, then list them back to check what is actually set.
Bringing someone onto the account
Create the workspace, invite them, and see who is already a member and which invitations are still open.
Cleaning up what you are still paying for
List the services and databases, check the action log for what changed recently, and delete what nothing uses.
32 tools
Listed in project docs. Your client may show a different list.
list_servicesget_serviceupdate_serviceredeploy_servicedelete_servicecreate_resourcelist_resourcesget_resourcedelete_resourcecreate_repoget_git_tokenadd_custom_domainremove_custom_domainlist_delegationsadd_dns_recorddelete_dns_recordlist_dns_recordsworkspace_listworkspace_createworkspace_deleteworkspace_inviteworkspace_accept_inviteworkspace_decline_inviteworkspace_revoke_inviteworkspace_remove_memberworkspace_list_membersworkspace_list_inviteslist_projectsaccount_statuschatlist_action_logBEFORE YOU INSTALL
What to know first
Tools you get
32 tools named in the project's documentation.
Requires
A client that can reach a remote MCP server over HTTP
INSTALLATION
Connect your client
Server setup
claude mcp add
Claude Code
claude mcp add --transport http ink https://mcp.ml.ink/mcpHosted endpoint
https://mcp.ml.ink/mcpAdd this hosted endpoint to your MCP client, then sign in.
MCP Clients
Cursor
{
"mcpServers": {
"ink": {
"url": "https://mcp.ml.ink/mcp"
}
}
}Windsurf
{
"mcpServers": {
"ink": {
"serverUrl": "https://mcp.ml.ink/mcp"
}
}
}Codex
Register the endpoint, then sign in through the browser:
codex mcp add ink --url https://mcp.ml.ink/mcp
codex mcp login inkTo use an API key instead of signing in (Settings → API Keys in ml.ink), put the key in an environment variable and add --bearer-token-env-var with that variable's name to the add command; Codex sends it as the Bearer token.
Cline
{
"mcpServers": {
"ink": {
"type": "streamableHttp",
"url": "https://mcp.ml.ink/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}Roo Code
{
"mcpServers": {
"ink": {
"type": "streamable-http",
"url": "https://mcp.ml.ink/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}