Manufact

How good is your MCP? Get a free quality score.Explore catalog

Introducing Manufact MCP v2.0

Andrew KhadderFounding Engineer
Introducing Manufact MCP v2.0

Our original MCP server had a deploy tool that filled in the blanks on its own. You gave it a GitHub repo, and it picked the server and the GitHub installation but never showed the agent how it chose. When one of those picks went wrong, the agent had no way to recover.

I rebuilt the Manufact MCP server to give the agent more control. With smaller tools, the agent composes its own steps and recovers when one fails.

More atomic tools

V2.0 splits deployment into small tools. Each one answers one question or makes one change, and returns the IDs the next call needs:

  1. list_organizations returns the organizations you can deploy to.
  2. list_github_installations returns your GitHub connections and their status.
  3. create_server takes an organization, an installation and a repository, creates the server and starts its first deployment. It returns both IDs.
  4. get_deployment returns the status and any failure message.
  5. get_deployment_build_logs returns the latest log entries.

By leveraging the agent's context it remembers the organization you picked and passes its ID forward.

The MCP reference documents the full tool catalog.

Errors name the next step

Small tools still fail, so each error needs to tell the agent what to do next. V1 gave one answer for every GitHub problem:

No existing Cloud server is connected to <repo>, and no GitHub installation in this
organization appears to have access to the repo. Install or reconnect the GitHub App
for this repo, or pass installationId explicitly.

The tool read only the first page of repositories, so it sent this even when access worked. In v2, each problem gets its own recovery step:

ProblemWhat the agent reads
No GitHub access to the repositoryRestore repository access with a fresh link from get_github_connect_url, then check list_deployments before you deploy again
Repository disconnected from the serverReconnect the repository with connect_github_repo_to_server and keep the server's production branch and root directory

Settings that only take effect after a deploy say so as well. update_server_subdomain returns requiresProductionDeployment, so the agent deploys before it reports the new URL.

How we QA the server now

Our QA loop has four steps:

  1. Inspect live analytics for tools with repeat errors and sessions that end early. Filter out scanner traffic and normal auth challenges first, since both inflate error rates: in July, scanner 404s pushed our own error rate from under 10% to 53% in one day. Then open the session traces. Ours showed Claude Code calls with organization_id in place of organizationId, so the server now accepts snake_case aliases and suggests the closest valid key.
  2. Reproduce a user's task in an agent, with a failure path.
  3. Add an eval case for the behavior you need to keep.
  4. Fix the tool or its error, rerun the task, and watch live traffic for the same pattern.

A Manufact eval suite with results for a sample issue-tracker task across several clients

An example eval suite in the Manufact platform. The per-client runs show why we review tool calls as well as the final score.

For your server, write evals around tasks users care about. Include a normal path and one where the user has not finished setup. Check the outcome, then read the tool trace for errors even when the run passes. Manufact test suites run a task across chat clients and coding agents and keep the calls and responses for review.

Start with one task your users rely on. If an agent recovers only through guesswork, inspect the tool name, schema and error response. If it passes in one client, run it in the others your users use.

Get started

Scaffold a new server with mcp-use:

npx create-mcp-use-app my-server

Push it to GitHub and deploy it on Manufact. Manufact adds analytics and test suites, the same tools we used on our own server. Or connect Manufact MCP and let your agent run the deploy.

Share