使用说明
AutoMCP命令行界面
AutoMCP是一个轻量级的Node.js CLI,它:
- 使用
mcp/fetchMCP服务器(通过Docker)获取API文档。 - 提示LLM为该API设计完整的Node/TypeScript MCP服务器。
- 创建隔离 苯甲酸雌二醇 沙盒,写入所有文件并运行
npm install+npm run build. - 打印带有沙盒ID、构建日志和生成文件的结构化JSON,非常适合黑客马拉松演示。
不再需要Mastra运行时;存储库现在包含单个CLI工作流。
需求
| 依赖性 | 目的 |
|---|---|
| Node.js≥20 | 原生 fetchESM支持 |
| Docker | 运行 mcp/fetch 服务器 |
E2B_API_KEY |
验证沙盒创建 |
| LLM API密钥 | OPENAI_API_KEY (默认)或 GROQ_API_KEY |
可选环境变量:
# LLM provider selection
LLM_PROVIDER=openai # or groq
LLM_MODEL=gpt-4o-mini # optional override (MODEL also accepted)
# API keys (provide whichever provider you choose)
OPENAI_API_KEY=sk-...
GROQ_API_KEY=gsk-...
CLI会自动启动
docker run -i --rm mcp/fetch无论何时需要文件。确保Docker桌面(或守护进程)正在运行。
设置
git clone <repo-url>
cd autoMCP
pnpm install
# Provide secrets (use your own secure method)
export E2B_API_KEY=...
export LLM_PROVIDER=openai # or groq
export OPENAI_API_KEY=... # required if LLM_PROVIDER=openai
export GROQ_API_KEY=... # required if LLM_PROVIDER=groq
export LLM_MODEL=... # optional override
构建(排放 dist/):
pnpm build
在开发过程中直接使用tsx运行:
pnpm dev -- \
--apiName "JSONPlaceholder" \
--baseUrl https://jsonplaceholder.typicode.com \
--docs https://jsonplaceholder.typicode.com/
运行编译后的CLI:
pnpm start -- \
--apiName "JSONPlaceholder" \
--baseUrl https://jsonplaceholder.typicode.com \
--docs https://jsonplaceholder.typicode.com/ \
--maxIterations 3
这 --maxIterations 标志控制代理进行的构建/验证尝试次数(默认3次,最小1次,最大10次)。
Web用户界面
AutoMCP包括一个基于web的UI,便于在浏览器中访问。
启动Web服务器
开发模式:
pnpm dev:web
生产模式(建成后):
pnpm build
pnpm start:web
web UI将在 http://localhost:3000 (或指定的端口 PORT 环境变量)。
使用Web UI
- 打开浏览器并导航到
http://localhost:3000 - 填写表格:
- API名称:API的友好名称(例如“JSONPlaceholder”)
- 基础URL:API的基本URL(例如https://api.example.com")
- 文档URL:API文档的URL
- 最大尝试次数:构建/验证重试次数(默认值3)
- 点击“生成MCP服务器”
- 等待生成完成(这可能需要1-2分钟)
- 查看结果,包括:
- 生成的文件位置
- 生成日志
- 测试的下一步
- 通过提供的按钮下载ZIP工件(即使验证/构建失败也可用)
web UI提供了一个用户友好的界面,用于生成MCP服务器,而无需使用命令行。
CLI打印JSON类似于:
{
"sandboxId": "sbx_XYZ",
"projectDir": "/home/user/generated/jsonplaceholder-mcp",
"filesWritten": [
"/home/user/generated/jsonplaceholder-mcp/package.json",
"/home/user/generated/jsonplaceholder-mcp/src/server.ts",
"... more files ..."
],
"localPath": "/abs/path/output/jsonplaceholder",
"commands": [
{
"command": "npm install",
"exitCode": 0,
"stdout": "...",
"stderr": "",
"durationMs": 5230
},
{
"command": "npm run build",
"exitCode": 0,
"stdout": "...",
"stderr": "",
"durationMs": 3120
}
],
"documentationSource": "mcp-fetch",
"summary": "MCP server exposing endpoints GET /posts, GET /users, POST /posts."
}
工件保存在 output/<slug>/ (例如。, output/jsonplaceholder).该文件夹包含生成的源, Dockerfile,以及LLM建议的任何额外文件。
运作原理
-
文档提取工具(
src/lib/mcpFetchClient.ts)- 生成物
docker run -i --rm mcp/fetch通过MCP SDK。 - 呼叫
fetch工具将任何文档URL转换为markdown/纯文本。 - 回退到原始HTTP
fetch如果MCP不可用。
- 生成物
-
LLM规划师(
src/lib/llm.ts)- 将文档、API名称和基本URL发送到您选择的LLM提供商(默认情况下为OpenAI,Groq可选)。
- 尊重
LLM_MODEL(或MODEL)因此,您可以选择任何支持的模型;默认值为gpt-4o-mini(OpenAI)和llama-3.1-70b-instant(Groq)。 - 该模型返回描述端点的JSON、可选的额外文件和shell命令。
- 确保
npm install和npm run build总是包括在内。
-
沙盒运行器(
src/lib/e2bSandbox.ts)- 创建E2B沙盒,将每个文件写入
/home/user/generated/<api>-mcp,并按顺序运行命令。 - 捕获每个命令的stdout/stderr以及退出代码。
- 命令一完成,就把沙箱拆掉。
- 创建E2B沙盒,将每个文件写入
-
模板和本地副本(
src/templates/mcpProject.ts,src/lib/localSaver.ts)- 将LLM元数据与已知良好的MCP服务器模板(package.json,tsconfig,
src/server.ts,Dockerfile,自述)。 - 将所有生成的文件保存到
output/<slug>/因此,您可以在本地检查或部署它们。
- 将LLM元数据与已知良好的MCP服务器模板(package.json,tsconfig,
-
CLI(
src/cli.ts)- 作语法分析
--apiName,--baseUrl,--docs. - 验证所需的环境变量。
- 调用编排器(
runAutoMcp)并打印最终的JSON结果。
- 作语法分析
故障排除
| 问题 | 修复 |
|---|---|
docker: command not found |
安装Docker桌面/引擎并重新启动CLI。 |
CLI日志 MCP tools unavailable |
Docker获取服务器失败--检查 docker run -i --rm mcp/fetch 手动。 |
E2B_API_KEY is not set |
参观 e2b.dev 以创建API密钥,然后将其导出 |
| 生成失败,因为缺少LLM API密钥 | 导出 OPENAI_API_KEY (或 GROQ_API_KEY 如果 LLM_PROVIDER=groq). |
要进行详细的MCP调试,请手动运行fetch服务器:
docker run -it --rm -p 8080:8080 mcp/fetch
然后用curl调用它来检查响应。
部署到Fly.io
您可以托管web UI+API,这样队友就可以远程生成/下载MCP服务器。
1.安装Fly工具
curl -L https://fly.io/install.sh | sh
fly auth signup # or fly auth login
2.配置应用程序
此回购现在包含一个生产 Dockerfile (root)构建TypeScript包并运行 dist/webServer.js.创建应用程序并设置机密:
fly launch --no-deploy # answer prompts (keep Dockerfile)
fly secrets set \
E2B_API_KEY=... \
LLM_PROVIDER=openai \
OPENAI_API_KEY=... \
GROQ_API_KEY=... # only if LLM_PROVIDER=groq
可选秘密: LLM_MODEL, PORT (容器内默认为3000)。
3.部署
fly deploy
Fly将使用包含的Dockerfile进行构建,公开Express服务器,并从以下位置提供静态UI public/。您可以共享Fly发布的URL,以便其他人可以提交作业并从返回的JSON下载他们生成的MCP项目(localPath 在容器内部是相对的——如果需要持久性工件,可以考虑连接S3、Fly卷或下载端点)。
下载工件
每次运行都会在下创建(或更新)一个文件夹 output/<slug> 哪里 <slug> 源自API名称。web UI显示了一个下载按钮,点击:
GET /download/:id
哪里 :id 是蛞蝓吗/downloadId API返回。端点流式传输最新文件的ZIP(即使构建失败),这样您就可以检查部分输出或与队友共享工件。
项目结构
src/
cli.ts # CLI entry point
webServer.ts # Express web server for UI
autoMcp.ts # Orchestration logic
lib/
mcpFetchClient.ts # Connects to mcp/fetch
llm.ts # OpenAI prompt + JSON parsing
e2bSandbox.ts # Writes files and runs commands inside E2B
public/
index.html # Web UI frontend
这种最小的布局使交换LLM提供者、MCP服务器或沙箱技术(如果需要)变得容易。