build-mcp-use-agent
Use if building TypeScript mcp-use MCPAgent code where an LLM orchestrates MCP tools (run/stream).
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use if building TypeScript mcp-use MCPAgent code where an LLM orchestrates MCP tools (run/stream).
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use skill if you are exhaustively testing or release-gating martool CLI commands in a source checkout or deployed Coolify container over SSH, without local Docker or provider spend.
Use if driving agent-browser for Chrome/CDP automation, @ref snapshots, tabs, or verification.
Use if testing or debugging an iOS app via agent-device CLI — simulator flows, evidence, bug triage.
Use if supervising Jean agents through MCP and Computer Use for monitoring, recovery, or closure.
Use if auditing or designing a CLI for agent/LLM use — JSON output, exit codes, non-interactive.
Use if auditing or designing an MCP server for agent-readiness — framework, security, context.
| name | build-mcp-use-agent |
| description | Use if building TypeScript mcp-use MCPAgent code where an LLM orchestrates MCP tools (run/stream). |
Build or audit TypeScript MCPAgent code from the mcp-use package — the LLM-driven loop where a model chooses, calls, and chains MCP tools across one or more servers.
This SKILL.md is a routing spine. Load-bearing rules and the minimal runnable path live here; deep detail lives in references/.
Trigger on any of these:
MCPAgent from mcp-use and calls agent.run({ prompt }), agent.stream(...), agent.streamEvents(...), or agent.prettyStreamEvents(...).ChatModel or "provider/model" shorthand) into an agent loop that must select tools at runtime.MCPAgent invocation against one or more MCP servers.MCPAgent.maxSteps, leaks sessions, or returns wrong-shaped output.MCPAgent (OpenAI, Anthropic, Google, Groq, custom LangChain adapter) or migrates between them.MCPClient work — listing tools, manually calling a known tool, reading resources, sessions, React hooks, mcp-use/browser, npx mcp-use client. Route to build-mcp-use-client.build-mcp-use-server.@modelcontextprotocol/* SDK servers (no mcp-use wrapper). Route to build-mcp-server-sdk-v1 or build-mcp-server-sdk-v2.build-langchain-ts-app.Rule of thumb: if an LLM decides which MCP tool to call, this skill. If the app already knows which MCP call to make, build-mcp-use-client. If you are writing the server, build-mcp-use-server.
| # | Rule | Why |
|---|---|---|
| 1 | Import agent APIs from mcp-use. Do not import raw @modelcontextprotocol/* primitives for agent code. | The agent loop, tool wiring, and lifecycle live in mcp-use. |
| 2 | Prefer object-form calls: run({ prompt }), stream({ prompt }), streamEvents({ prompt }), prettyStreamEvents({ prompt }). Plain-string overloads are compatibility paths. | Object form is the documented surface and supports schema, callbacks, tags. |
| 3 | Use a tool-calling chat model — LangChain ChatModel instance or supported "provider/model" shorthand. | Non-tool-calling models silently fail to invoke MCP tools. |
| 4 | Verified providers: OpenAI, Anthropic, Google, Groq, custom LangChain adapter. Treat OpenRouter / Ollama / local routes as custom adapters unless you re-verified primary docs. | Provider catalogs drift; do not ship from training-cutoff memory. |
| 5 | Verify model IDs and mcp-use version before shipping. Run scripts/check-mcp-use-version.sh or npm view mcp-use version engines peerDependencies --json. Match Node.js to the latest engines field. | Version, engines, and peer deps change between minor releases. |
| 6 | Set maxSteps deliberately. If the agent loops, lower the cap and narrow the prompt or tool surface before raising it. | Unbounded loops burn tokens and never converge. |
| 7 | Disable memory (memoryEnabled: false) for stateless handlers and batch jobs. Keep memory only for real multi-turn sessions. | Memory in stateless paths leaks state across requests. |
| 8 | Restrict risky tools with disallowedTools. Never use toolsUsedNames as an access filter. | toolsUsedNames is a result field, not a permission gate. |
| 9 | Set observe: false for high-throughput or cost-sensitive paths when tracing is not required. | Tracing has non-zero overhead. |
| 10 | Treat production runtime as Node.js unless verified. Do not imply edge-runtime support for agents that need Node APIs, stdio MCP servers, child processes, or LangChain provider packages. | Edge runtimes lack the APIs mcp-use and most providers depend on. |
| 11 | Keep observability claims precise — traces / logs / events are covered; metrics are production patterns unless implemented. | Overclaiming observability misleads reviewers. |
package.json, mcp-use, imports of MCPAgent / MCPClient, agent.run(), agent.stream(), agent.streamEvents(), LangChain provider packages, server configs, existing cleanup.llm: "provider/model" plus inline mcpServers. Best for scripts, demos, compact handlers.MCPClient. Best for shared clients, code mode, callbacks, custom providers, lifecycle ownership. For deterministic client work that does not run the agent loop, route to build-mcp-use-client.run({ prompt }) call working before adding streaming, structured output, memory, observability, or server manager.maxSteps, memory policy, tool restrictions, env validation, cleanup, runtime checks, observability — based on the target environment.The only inline example in this spine. Expanded variants live in references/guides/quick-start.md and references/examples/agent-recipes.md.
import "dotenv/config";
import { MCPAgent } from "mcp-use";
if (!process.env.OPENAI_API_KEY) {
throw new Error("OPENAI_API_KEY is required.");
}
const agent = new MCPAgent({
llm: "openai/gpt-4o",
llmConfig: { temperature: 0 },
mcpServers: {
filesystem: {
command: "npx",
args: ["-y", "@modelcontextprotocol/server-filesystem", process.cwd()],
},
},
maxSteps: 10,
memoryEnabled: false,
autoInitialize: true,
});
try {
const result = await agent.run({
prompt: "List top-level files and summarize their roles.",
});
console.log(result);
} finally {
await agent.close();
}
Before the first call, validate provider env vars and each MCP server command or URL. Debug broken prerequisites before changing agent logic.
run() resolves to the final value (string or schema-typed result).stream() yields AgentStep objects; the final value appears only when the generator completes (done === true from .next()).streamEvents() yields raw lifecycle events and does not return a final value. Consume events such as on_chain_end and tool/model events.streamEvents(), the mcp-use structured result is event.data.output on on_structured_output.step.observation from stream() is empty at yield time; use streamEvents() for live tool-result payloads.MCPAgent via mcpServers; the agent owns the generated client.MCPClient from inline config or config-file helpers, then pass client to MCPAgent.codeMode lives on MCPClient, not MCPAgent.await agent.close().client.closeAllSessions() or client.close() (the latter when code mode / E2B requires it).await agent.flush() before cleanup.Load only what the current task needs.
| Reference | Load when |
|---|---|
references/guides/quick-start.md | First runnable agent, setup, chat loop, HTTP handlers, cleanup basics. |
references/guides/agent-configuration.md | Constructor options, explicit vs simplified mode, config-file boundary, tool restrictions, prompt controls. |
references/guides/llm-integration.md | Provider setup, model drift policy, shorthand strings, custom adapters, provider switching. |
references/guides/streaming.md | stream(), streamEvents(), prettyStreamEvents(), generator completion, event handling. |
references/guides/structured-output.md | Zod schemas, typed returns, structured-output events, validation retries. |
references/guides/memory-management.md | memoryEnabled, externalHistory, token budgets, stateless handlers, history cleanup. |
references/guides/server-manager.md | useServerManager, dynamic server activation, multi-server management tools. |
references/guides/observability.md | Langfuse auto-init, callbacks, tags, metadata, trace flushing, raw events. |
references/guides/advanced-patterns.md | Code mode, advanced provider/config examples, combined patterns. |
references/patterns/production-patterns.md | Shutdown, retries, rate limits, timeouts, health metrics, deployment hardening. |
references/patterns/anti-patterns.md | Review checklist for lifecycle, memory, mode mixing, provider drift, tool access, observability. |
references/examples/agent-recipes.md | Copyable CLI, filesystem, browser, multi-server, structured output, streaming, code-mode recipes. |
references/examples/integration-recipes.md | Next.js / Vercel AI SDK, Express SSE, React frontend, Langfuse, fallback, dynamic servers. |
references/troubleshooting/common-errors.md | Known errors, stuck agents, Node/runtime checks, server spawn failures, streaming mistakes. |
Scripts live in scripts/ beside this skill. Use --help first when the task is unclear.
| Script | Purpose | Mutates? | Doc |
|---|---|---|---|
scripts/check-mcp-use-version.sh | Print installed/latest mcp-use, engines, peer deps, and optional peer metadata without env values. | No | scripts/check-mcp-use-version.md |
scripts/scaffold-agent.sh | Scaffold a minimal TypeScript MCPAgent project in an explicit target directory. Requires --force before overwriting. | Yes | scripts/scaffold-agent.md |
scripts/diagnose-agent-stuck.sh | Inspect Node version, package versions, provider env presence, config flags, cleanup, server reachability, and output-mode mistakes. | No | scripts/diagnose-agent-stuck.md |
SKILL.md stays lean and routes every reference file.Use if and is 100 characters or fewer.mcp-use version claims remain.engines result.python3 scripts/validate-skills.py.