Skip to main content
Glama
gabrielestes

vader-mcp

by gabrielestes

vader-mcp

A local stdio MCP server, written in TypeScript, that makes Claude answer as Darth Vader whenever you mention Star Wars.

How the trigger actually works

An MCP server cannot intercept your messages — it exposes tools, and the model decides when to call them. So the persona fires from two things working together:

  1. Server instructions. On connect, the server sends an instructions block that Claude Code injects into its system prompt. It tells Claude to call sense_disturbance on any message that might mention Star Wars, and to stay in voice while engage is true.

  2. The sense_disturbance tool. Deterministic keyword matching over ~120 Star Wars terms, returning the matched keywords, an intensity level, and the persona directive.

This is best-effort by design — the model chooses to call the tool. If you want it guaranteed, use the vader_mode prompt (/vader_mode) to pin the persona on for the whole conversation.

Related MCP server: muse-tts-embed

Tools

Tool

Purpose

sense_disturbance

Scan text for Star Wars keywords. Returns engage, matched keywords, intensity, and the persona directive.

vader_speak

Restyle a message in Vader's register — no contractions, formal phrasing, framed by an opening and closing line. Takes intensity of low/medium/high.

vader_quote

Return a canonical Vader line, optionally by topic (power, father, failure, destiny, ...).

Prompt

vader_mode — force the persona on for the rest of the conversation.

Install

npm install   # `prepare` builds dist/ automatically

Register with Claude Code (user scope, available in every project):

claude mcp add vader --scope user -- node /Users/gabrielestes/vader_mcp/dist/index.js

Remove it with claude mcp remove vader --scope user.

The registered server runs compiled JavaScript from dist/, so it has no dependency on experimental Node features. Re-run npm run build after editing src/ or the running server keeps serving the old build.

Scripts

Command

What it does

npm run build

tsc -p tsconfig.build.jsondist/ (JS + .d.ts + sourcemaps)

npm run typecheck

Typechecks src/, test/, and scripts/ with no emit

npm test

Unit tests for the voice engine, run straight from .ts

npm run probe

Builds, then drives every tool over real JSON-RPC against dist/

npm run dev

Runs the server straight from src/index.ts

npm test and npm run dev rely on Node's native type stripping (Node ≥ 22.18), which prints an experimental warning. The build path does not.

TypeScript setup

  • tsconfig.json — strict base config, noEmit, covers src/test/scripts.

  • tsconfig.build.json — extends it, emits src/ to dist/.

Relative imports are written with .ts extensions so Node can run the sources directly; rewriteRelativeImportExtensions turns them into .js on build. erasableSyntaxOnly keeps the source compatible with type stripping, so the same files run both ways.

Strictness beyond strict: noUncheckedIndexedAccess, exactOptionalPropertyTypes, noImplicitOverride, noUnusedLocals, noUnusedParameters, verbatimModuleSyntax.

Layout

  • src/vader.ts — keyword detection, quotes, and text styling. Pure functions, no I/O.

  • src/index.ts — MCP wiring: tool registration and stdio transport.

  • test/vader.test.ts — unit tests for the voice engine.

  • scripts/probe.ts — spawns the built server and exercises every tool over real JSON-RPC.

Available Tools

3 tools
sense_disturbanceSense a disturbance in the ForceA

Scan text for Star Wars keywords. Call this on the user's message whenever Star Wars might have come up. If it returns engage: true, respond in Darth Vader's voice.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to scan — usually the user's message.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It discloses that the tool scans for keywords, returns an 'engage' flag, and that a true result should trigger a Darth Vader voice response. For a simple read-only detection tool, this is adequate transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: the action, the trigger, and the conditional response. There is no filler, and the core purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter detection tool with no output schema, the description covers the trigger condition, the return flag behavior, and the expected follow-up action. It could mention what happens when 'engage' is false, but that is reasonably implied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already describes the 'text' parameter as 'The text to scan — usually the user's message.' The tool description adds little beyond that, so the schema carries the parameter meaning; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Scan text for Star Wars keywords.' This clearly distinguishes it from sibling tools like vader_speak and vader_quote, which are about speaking or quoting rather than detecting Star Wars content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to call the tool: 'Call this on the user's message whenever Star Wars might have come up.' It does not spell out when not to use it or name alternatives, but the trigger condition is specific enough for an agent to apply correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vader_quoteSummon a canonical Vader quoteA

Return a real Darth Vader line. Optional topic, one of: father, faith, power, destiny, failure, deal, teacher, circle, impressive, escape, join, breathing.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoOptional topic hint, e.g. 'power', 'father', 'failure'.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently states that the tool returns a real Vader line and that the topic parameter is optional and constrained to a listed set. It does not mention edge behavior for invalid topics, but that is a minor gap for such a simple read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the core behavior and then provides the parameter constraints. Every phrase earns its place, with no redundant or tangential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one optional parameter and no output schema, the description is largely complete: it states the return type, the input options, and the optional nature of the parameter. Missing sibling differentiation and invalid-input behavior are minor for this low-complexity tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the topic parameter, and the description adds meaningful value by enumerating the exact allowed values ('father, faith, power, destiny, failure, deal, teacher, circle, impressive, escape, join, breathing') and clarifying that the parameter is optional. This goes beyond the schema's generic example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Return') and resource ('a real Darth Vader line'), and the title adds 'canonical' to reinforce scope. It is specific enough to understand what the tool does, though it does not explicitly distinguish itself from the sibling vader_speak.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus the siblings sense_disturbance or vader_speak. There are no exclusions, alternatives, or contextual conditions, so an agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vader_speakSpeak as VaderA

Restyle a message in Darth Vader's voice — formal register, no contractions, framed by an opening and closing line. Pass the plain version of what you want to say and use the result verbatim.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe plain-English message to restyle.
intensityNoHow heavily to lean on the persona.medium

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It discloses meaningful transformation traits: formal register, no contractions, opening/closing framing, and verbatim usage. This gives the agent a clear model of what will happen to the input, which is strong for a simple text-restyling tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The core purpose and style constraints are front-loaded, and the usage instruction ('use the result verbatim') earns its place. Every sentence contributes actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with only two parameters and full schema coverage, the description is largely complete. It explains the transformation style and the expected usage pattern. It lacks explicit sibling differentiation, but nothing critical is missing for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters well. The description adds some context by calling the input the 'plain version' of what to say, but it does not meaningfully elaborate on the intensity parameter beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Restyle a message') and the specific resource/voice ('Darth Vader's voice'), with concrete style details. It does not explicitly contrast with the siblings vader_quote or sense_disturbance, but the restyle intent is distinct enough for an agent to understand the tool's role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when the user has a plain message that should be turned into Vader-style speech. It also tells the agent to pass the plain version and use the result verbatim. However, it provides no explicit guidance about when not to use it or how it differs from sibling tools like vader_quote.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv1.0.0
    • First observedsense_disturbance
    • First observedvader_quote
    • First observedvader_speak

TDQS

A4/5.0
Disambiguation5/5

Each tool has a clear, non-overlapping role: one detects whether Vader mode should activate, one restyles an arbitrary message, and one returns a canned quote. There is little chance an agent would confuse them.

Naming Consistency3/5

The names are readable and all snake_case, but they follow different patterns: sense_disturbance is verb_noun, vader_speak is noun_verb, and vader_quote is noun_noun. Two share a vader_ prefix while the third does not, making the convention inconsistent.

Tool Count5/5

Three tools is appropriate for a narrow Vader roleplay server. Each tool earns its place and there is no bloat or redundancy.

Completeness5/5

The server covers the full intended workflow: detect when Vader's voice should engage, restyle a message into that voice, and provide authentic quotes. No obvious gaps or dead ends exist for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

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/gabrielestes/vader_mcp'

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