agentsclimarketplace

Build mcp use agent

Skill yigitkonur/skills-by-yigitkonur/skills/build-mcp-use-agent

Use if building TypeScript mcp-use MCPAgent code where an LLM orchestrates MCP tools (run/stream).From its SKILL.md

Install
npx -y skills add yigitkonur/skills-by-yigitkonur --skill build-mcp-use-agent

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 11 stars11 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

11.4 KB, as published. Nobody here has run it

Build MCP Use Agent

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/.

When to use this skill

Trigger on any of these:

  • Imports MCPAgent from mcp-use and calls agent.run({ prompt }), agent.stream(...), agent.streamEvents(...), or agent.prettyStreamEvents(...).
  • Wires an LLM (LangChain ChatModel or "provider/model" shorthand) into an agent loop that must select tools at runtime.
  • Builds a Next.js / Express / serverless handler whose body is a MCPAgent invocation against one or more MCP servers.
  • Adds streaming, structured output (Zod), memory, server-manager, code mode, observability (Langfuse), or production hardening to an existing MCPAgent.
  • Debugging an agent that loops, stalls, hits maxSteps, leaks sessions, or returns wrong-shaped output.
  • Picks a model/provider for an MCPAgent (OpenAI, Anthropic, Google, Groq, custom LangChain adapter) or migrates between them.

Do NOT use this skill for

  • Pure deterministic 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.
  • Building the MCP server itself — tools, resources, prompts, auth, transports, MCP Apps widgets, Inspector, deploy. Route to build-mcp-use-server.
  • Raw @modelcontextprotocol/* SDK servers (no mcp-use wrapper). Route to build-mcp-server-sdk-v1 or build-mcp-server-sdk-v2.
  • LangChain/LangGraph agent code where MCP is optional or absent. Route to 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.

Core rules (load-bearing — read before editing agent code)

#RuleWhy
1Import 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.
2Prefer 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.
3Use a tool-calling chat model — LangChain ChatModel instance or supported "provider/model" shorthand.Non-tool-calling models silently fail to invoke MCP tools.
4Verified 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.
5Verify 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.
6Set 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.
7Disable 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.
8Restrict risky tools with disallowedTools. Never use toolsUsedNames as an access filter.toolsUsedNames is a result field, not a permission gate.
9Set observe: false for high-throughput or cost-sensitive paths when tracing is not required.Tracing has non-zero overhead.
10Treat 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.
11Keep observability claims precise — traces / logs / events are covered; metrics are production patterns unless implemented.Overclaiming observability misleads reviewers.

Workflow

  1. Scan the target. Inspect the actual package or app path. Look for package.json, mcp-use, imports of MCPAgent / MCPClient, agent.run(), agent.stream(), agent.streamEvents(), LangChain provider packages, server configs, existing cleanup.
  2. Classify the work.
    • Existing agent: audit configuration, execution/output, MCP connections, production readiness against the rule table above.
    • New agent in an existing app: infer the smallest useful integration and wire it into the local structure.
    • New standalone agent: use the minimal runnable path below, then add only requested capabilities.
  3. Verify current package facts (Rule 5) before writing runtime, peer, or setup claims.
  4. Choose construction mode.
    • Simplified mode: llm: "provider/model" plus inline mcpServers. Best for scripts, demos, compact handlers.
    • Explicit mode: LangChain model instance plus 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.
  5. Build the non-streaming path first. Get one run({ prompt }) call working before adding streaming, structured output, memory, observability, or server manager.
  6. Harden deliberately. Add maxSteps, memory policy, tool restrictions, env validation, cleanup, runtime checks, observability — based on the target environment.
  7. Validate honestly. At minimum run TypeScript / package checks or the relevant script. Claim live MCP+LLM behavior only after running against a real server and key.

Minimal runnable path

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.

Completion contract

  • 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.
  • For structured output with 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.

Configuration and lifecycle contract

  • Simplified mode: configuration lives inline on MCPAgent via mcpServers; the agent owns the generated client.
  • Explicit mode: build an MCPClient from inline config or config-file helpers, then pass client to MCPAgent.
  • codeMode lives on MCPClient, not MCPAgent.
  • Cleanup policy:
    • Simplified mode or agent-owned client → await agent.close().
    • Explicit, shared client owned outside the agent → close the owner once at app shutdown via client.closeAllSessions() or client.close() (the latter when code mode / E2B requires it).
    • Do not call both cleanup paths for the same ownership scope unless current docs or local runtime prove it is necessary.
    • Serverless with tracing → await agent.flush() before cleanup.

Reference routing

Load only what the current task needs.

ReferenceLoad when
references/guides/quick-start.mdFirst runnable agent, setup, chat loop, HTTP handlers, cleanup basics.
references/guides/agent-configuration.mdConstructor options, explicit vs simplified mode, config-file boundary, tool restrictions, prompt controls.
references/guides/llm-integration.mdProvider setup, model drift policy, shorthand strings, custom adapters, provider switching.
references/guides/streaming.mdstream(), streamEvents(), prettyStreamEvents(), generator completion, event handling.
references/guides/structured-output.mdZod schemas, typed returns, structured-output events, validation retries.
references/guides/memory-management.mdmemoryEnabled, externalHistory, token budgets, stateless handlers, history cleanup.
references/guides/server-manager.mduseServerManager, dynamic server activation, multi-server management tools.
references/guides/observability.mdLangfuse auto-init, callbacks, tags, metadata, trace flushing, raw events.
references/guides/advanced-patterns.mdCode mode, advanced provider/config examples, combined patterns.
references/patterns/production-patterns.mdShutdown, retries, rate limits, timeouts, health metrics, deployment hardening.
references/patterns/anti-patterns.mdReview checklist for lifecycle, memory, mode mixing, provider drift, tool access, observability.
references/examples/agent-recipes.mdCopyable CLI, filesystem, browser, multi-server, structured output, streaming, code-mode recipes.
references/examples/integration-recipes.mdNext.js / Vercel AI SDK, Express SSE, React frontend, Langfuse, fallback, dynamic servers.
references/troubleshooting/common-errors.mdKnown errors, stuck agents, Node/runtime checks, server spawn failures, streaming mistakes.

Scripts

Scripts live in scripts/ beside this skill. Use --help first when the task is unclear.

ScriptPurposeMutates?Doc
scripts/check-mcp-use-version.shPrint installed/latest mcp-use, engines, peer deps, and optional peer metadata without env values.Noscripts/check-mcp-use-version.md
scripts/scaffold-agent.shScaffold a minimal TypeScript MCPAgent project in an explicit target directory. Requires --force before overwriting.Yesscripts/scaffold-agent.md
scripts/diagnose-agent-stuck.shInspect Node version, package versions, provider env presence, config flags, cleanup, server reachability, and output-mode mistakes.Noscripts/diagnose-agent-stuck.md

Final checks

  • SKILL.md stays lean and routes every reference file.
  • Frontmatter description starts with Use if and is 100 characters or fewer.
  • No stale hard-coded mcp-use version claims remain.
  • Node runtime guidance matches the latest npm engines result.
  • Provider/model claims follow the verification policy instead of dated catalogs.
  • Cleanup examples follow the ownership policy above.
  • Validation passes with python3 scripts/validate-skills.py.

Keep looking

Skills are one crate of 628,853. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.