
Security News
npm Tooling Bug Incorrectly Marks One-Character Packages as Security Holders
npm confirmed a tooling bug incorrectly marked several one-character packages as security holders and said it was working on a rollback.
opencode-lazy-loader
Advanced tools
This is the OpenCode plugin that lazy-loads skill-embedded MCP servers. It lets skills bundle their own MCP servers so they can be loaded on-demand instead of being configured globally.
Note: This package was renamed from opencode-embedded-skill-mcp to opencode-lazy-loader. If you still have the old package, upgrade to the new name.
This is a standalone OpenCode plugin that enables skills to bundle and manage their own Model Context Protocol (MCP) servers, then lazy-load them on demand.
This allows skills to bring their own tools, resources, and prompts without requiring manual server configuration in opencode.json.
mcp.json).${VAR} and ${VAR:-default} expansion in MCP configurations.Deprecation notice: The package was renamed from opencode-embedded-skill-mcp to opencode-lazy-loader. If you installed the old name, update to the new package.
Add the plugin to your opencode.json:
{
"plugin": ["opencode-lazy-loader"]
}
Or install it locally:
{
"plugin": ["./path/to/opencode-lazy-loader"]
}
This repo includes a working example skill. After installing the plugin, try:
skill(name="playwright-example")
Then use the embedded MCP:
skill_mcp(mcp_name="playwright", tool_name="browser_navigate", arguments='{"url": "https://example.com"}')
See .opencode/skill/playwright-example/SKILL.md for the full example.
You can define MCP servers in the skill's YAML frontmatter:
~/.config/opencode/skill/my-skill/SKILL.md
---
name: browser-automation
description: "A skill for automating browser interactions"
mcp:
playwright:
command: ["npx", "-y", "@playwright/mcp@latest"]
---
# Browser Automation
This skill provides browser automation tools via the `playwright` MCP.
Alternatively, place an mcp.json file in the skill directory:
~/.config/opencode/skill/browser-automation/mcp.json
{
"mcpServers": {
"playwright": {
"command": ["npx", "-y", "@playwright/mcp@latest"]
}
}
}
In OpenCode:
skill(name="browser-automation")
Pro Tip: You don't always need to call the tool explicitly. Just ask for the skill by name in chat, and OpenCode will usually find and load it for you:
"Use the browser-automation skill to take a screenshot of google.com"
The plugin will load the skill and discover the capabilities of the embedded MCP server.
Invoke tools, read resources, or get prompts using skill_mcp:
skill_mcp(mcp_name="playwright", tool_name="screenshot", arguments='{"url": "https://google.com"}')
skillLoads a skill and displays its instructions along with any available MCP capabilities (tools, resources, prompts).
skill_mcpInvokes an operation on a skill-embedded MCP server.
The MCP configuration supports multiple formats for compatibility with both OpenCode and oh-my-opencode:
interface McpServerConfig {
// Command formats (both supported):
command: string | string[] // Array: ["npx", "-y", "@some/mcp"] or String: "npx"
args?: string[] // Used with string command: ["-y", "@some/mcp"]
// Environment variable formats (both supported):
env?: Record<string, string> | string[] // Object: { "KEY": "val" } or Array: ["KEY=val"]
}
Object format for env (recommended):
{
"my-server": {
"command": "npx",
"args": ["-y", "@some/mcp-server"],
"env": {
"API_KEY": "${MY_API_KEY}",
"DEBUG": "true"
}
}
}
Array format for env (OpenCode style):
{
"my-server": {
"command": ["npx", "-y", "@some/mcp-server"],
"env": ["API_KEY=${MY_API_KEY}", "DEBUG=true"]
}
}
Here's a complete example of a skill with an embedded MCP server (from .opencode/skill/playwright-example/SKILL.md):
---
name: playwright-example
description: Browser automation skill for web testing, scraping, and interaction. Use for end-to-end testing, screenshots, and browser automation tasks.
argument-hint: describe what you want to do (e.g., "take a screenshot of homepage", "test login flow", "fill out a form")
mcp:
playwright:
command: ["npx", "-y", "@playwright/mcp@latest"]
---
# Playwright Browser Automation
This skill provides browser automation capabilities via the Playwright MCP server.
## Available Operations
- **Navigation**: Navigate to URLs, go back/forward, reload pages
- **Screenshots**: Capture full page or element screenshots
- **Interactions**: Click, type, select, hover, and other user interactions
- **Forms**: Fill out forms, submit data, handle file uploads
## Example Tasks
- "Navigate to the login page and take a screenshot"
- "Fill out the registration form with test data"
- "Extract all product names from the catalog page"
MIT
FAQs
OpenCode plugin for lazy-loading skill-embedded MCP servers
The npm package opencode-lazy-loader receives a total of 55 weekly downloads. As such, opencode-lazy-loader popularity was classified as not popular.
We found that opencode-lazy-loader demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
npm confirmed a tooling bug incorrectly marked several one-character packages as security holders and said it was working on a rollback.

Research
/Security News
Newer packages in this compromise use native extensions and .pth loaders to execute JavaScript stealers in developer environments.

Research
Socket found 37 malicious PyPI wheels that abuse Python startup hooks to launch a Bun-powered credential stealer tied to Mini Shai-Hulud/Miasma.