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 if driving agent-browser for webpage interaction, screenshots, @ref snapshots, tabs, UI verification, CDP attach, Steel Browser, or cloud providers (Browser Use, Browserbase, Browserless, Kernel).
Use if verifying claimed-done work or auditing session/plan/branch completion with evidence.
Use if creating, redesigning, or merging a Claude skill, with research before writing SKILL.md.
Use skill if you are running repeatable Codex reviews across lenses or branches, optionally verifying and fixing confirmed findings in isolated worktrees.
Use if running deep multi-file research over 5+ entities or a market — wave-dispatched corpus.
Use if finishing a project — review and merge every branch/worktree into main, retire dead branches.
| 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.