Skip to main content
Glama
olaservo

dangerous-skills-mcp

by olaservo

dangerous-skills-mcp

A TypeScript MCP server that serves a "dangerous skills" corpus over MCP, implementing the Skills delivery model from SEP-2640. Under an opt-in --adversarial profile it also serves a set of crafted, spec-violating fixtures for testing how MCP hosts handle skill delivery — archive path traversal, decompression bombs, digest/frontmatter mismatches, name collisions, and more.

The corpus is forked from gricha/dangerous-skills (MIT © 2026 Greg Pstrucha). Every payload is benign — it writes a marker file or prints a canary string; nothing performs real harm.

Live endpoint

Deployed as a public Hugging Face Docker Space:

https://olaservo-dangerous-skills-mcp.hf.space/mcp

It's a free CPU Space, so the first request after idle is a slow cold start — retry once. The live Space runs the --adversarial profile. See hf-space/README.md to run or redeploy it.

Any SEP-2640 host can consume it. With fast-agent:

fast-agent go --shell
/mcp connect --name dsk https://olaservo-dangerous-skills-mcp.hf.space/mcp
/skills registry dsk
/skills add check-licenses

Related MCP server: MCP Server TypeScript

Run locally

Requires Node 20+ and pnpm. Runs via tsx (no build step).

pnpm install

# stdio (the default transport)
pnpm serve:stdio                   # faithful corpus only
pnpm serve:stdio -- --adversarial  # + adversarial fixtures

# HTTP (127.0.0.1:3940/mcp by default)
pnpm serve:http

# smoke client — spawns the server and runs conformance checks
pnpm smoke                   # PASS/FAIL per check
pnpm smoke -- --adversarial  # also prints what a conformant host MUST do per fixture

Reading the oversized fixtures over stdio

Two adversarial fixtures are deliberately larger than the MCP SDK's default 10 MiB stdio read-buffer cap: adv-oversized-payload (16 MiB) and adv-walk-budget (3 × 9 MiB, ~12.6 MiB each once base64-framed). A client using the default cap does not get an error on those reads — the SDK closes the whole connection.

This matters for host testing: adv-oversized-payload's oracle is that a host must bound the size of a fetched resource before decoding it. A host that simply gets disconnected never receives the payload, and can be mis-scored as having correctly rejected it.

To exercise those fixtures, either use HTTP (pnpm serve:http, unaffected by the cap) or raise the cap on your client:

new StdioClientTransport({ command, args, maxBufferSize: 64 * 1024 * 1024 });

This repo's own server and smoke client both set STDIO_MAX_BUFFER_SIZE (64 MiB, src/server.ts), so pnpm smoke -- --adversarial covers them.

What it serves

Skills are addressed under a skill:// URI scheme:

  • skill://index.json — the catalog (per-skill url + sha256 digest, frontmatter, and archives).

  • skill://<name>/SKILL.md and supporting files — individually addressable and digest-verifiable.

  • skill://<name>.tar.gz / .zip — per-skill archives.

On top of standard MCP resources it adds a resources/directory/read method and advertises the io.modelcontextprotocol/skills capability. The --adversarial profile adds the spec-violating fixtures (namespaced adv-); the smoke client documents each one and the action a conformant host should take. See src/adversarial/catalog.ts for the full list.

Configuration

  • SERVE_PROFILE--adversarial to serve fixtures (the HF image's default), empty for the faithful corpus only.

  • SKILLS_ROOT — corpus root (defaults to the vendored third_party/dangerous-skills/skills).

  • HOST / PORT — HTTP bind address (default 127.0.0.1:3940).

  • ALLOWED_HOSTS, MCP_DISABLE_DNS_REBINDING_PROTECTION — relax the localhost host check for remote hosting behind a proxy.

License

MIT (see LICENSE). The vendored corpus is MIT © 2026 Greg Pstrucha (gricha/dangerous-skills); its notice is kept at third_party/dangerous-skills/LICENSE.

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    -
    quality
    D
    maintenance
    A demonstration MCP server built in TypeScript that shows how to implement stdio-based communication for integration with MCP clients. Serves as a template for building custom MCP servers with strong typing and maintainability.
  • -
    license
    -
    quality
    -
    maintenance
    A production-ready TypeScript MCP server providing basic tools (add, echo, timestamp), resources (server info, greetings, data access), and prompt templates (analyze, code-review, summarize). Serves as a foundation for building custom MCP servers with extensible architecture.
    270
  • A
    license
    -
    quality
    A
    maintenance
    A TypeScript ESM MCP server exposing 20 public instruction tools and 7 utility tools, backed by 102 internal skills across 18 domain families — from requirements discovery and code quality through governance, resilience, and physics-inspired analysis.
    665
    6
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    A minimal test MCP server built with TypeScript, demonstrating basic Model Context Protocol capabilities like tools, resources, and prompts.
    35
    ISC

View all related MCP servers

Related MCP Connectors

  • Scans MCP servers for tool poisoning, prompt injection and supply chain risks.

  • An MCP server for deep research or task groups

  • Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/olaservo/dangerous-skills-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server