Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Memory Alpha Server

БесплатноНе проверен

An MCP server that brings Star Trek knowledge from Memory Alpha into your AI sessions. Search articles, look up episodes, compare starships, and more.

GitHubEmbed

Описание

An MCP server that brings Star Trek knowledge from Memory Alpha into your AI sessions. Search articles, look up episodes, compare starships, and more.

README

An MCP (Model Context Protocol) server that brings Star Trek knowledge from Memory Alpha into your AI sessions. Search articles, look up episodes, compare starships, simulate battles, build away teams, take trivia quizzes, and get your code reviewed by Q himself.

Disclaimer: This is an unofficial fan project. Not affiliated with CBS, Paramount, or Memory Alpha. All content is dynamically fetched from Memory Alpha's public API (CC-BY-SA licensed). No copyrighted material is embedded or redistributed.

Installation

Claude Desktop

Add to your Claude Desktop config (claude_desktop_config.json):

{ 
  "mcpServers": {
    "memory-alpha": {
      "command": "npx",
      "args": ["-y", "memory-alpha-mcp"]
    }
  }
}

Claude Code

claude mcp add memory-alpha -- npx -y memory-alpha-mcp

Manual

npm install -g memory-alpha-mcp
memory-alpha-mcp

Requirements

  • Node.js 18+ (uses built-in fetch)

How It Works

The server dynamically fetches content from Memory Alpha's public MediaWiki API (no authentication required). Raw wikitext is parsed into clean structured data using wtf_wikipedia, with custom regex fallbacks for Memory Alpha's {{sidebar ...}} templates.

Architecture

src/
  index.ts              # Entry point: MCP server + stdio transport + graceful shutdown
  api/                   # MediaWiki API client layer
    client.ts            #   HTTP client with rate limiting (5 req/s), retry, 10s timeout, caching
    parse.ts             #   action=parse (wikitext retrieval)
    search.ts            #   action=query&list=search
    categories.ts        #   action=query&list=categorymembers
    random.ts            #   action=query&list=random
    types.ts             #   TypeScript interfaces for API responses
  parser/                # Wikitext parsing pipeline
    wikitext.ts          #   Main parser: wtf_wikipedia wrapper, disambiguation detection
    infobox.ts           #   Brace-balanced sidebar/infobox extraction with regex fallback
    sections.ts          #   Section extraction by heading
  tools/                 # 31 MCP tool implementations
  prompts/               # 22 Trek-themed prompt templates
  resources/             # 7 static reference resources
  utils/
    cache.ts             #   In-memory TTL cache with LRU eviction (5min TTL, 100 entries)
    logger.ts            #   console.error wrapper (never console.log - corrupts stdio)
    text.ts              #   Wikitext cleaning, HTML stripping, truncation, template stripping
    attribution.ts       #   CC-BY-SA attribution footer appended to all responses
    shuffle.ts           #   Fisher-Yates shuffle

Key Design Decisions

Decision Rationale
Dynamic API fetch only Legal safety: we're an API client, not a content host
wtf_wikipedia for parsing Best-in-class wikitext parser with zero transitive dependencies
Brace-balanced template matching Memory Alpha's {{sidebar}} templates nest, breaking naive regex
In-memory cache (not disk) Simple, no extra dependencies, sufficient for session-length usage
console.error only console.log corrupts the stdio MCP transport
All responses as formatted text Better for LLM consumption than raw JSON

Tools (31)

Core Tools

search_memory_alpha

Search Memory Alpha for Star Trek articles, characters, ships, episodes, and more.

Parameter Type Required Description
query string yes Search query (e.g. "Jean-Luc Picard", "USS Enterprise")
limit number (1-20) no Max results to return (default: 10)

get_article

Get a full or partial article from Memory Alpha. Use exact article titles for best results.

Parameter Type Required Description
title string yes Article title (e.g. "James T. Kirk", "Warp drive")
section string no Specific section heading (e.g. "Background information")
summary_only boolean no Return only the intro summary (default: false)

Automatically detects disambiguation pages and returns a list of available articles instead.

get_random_article

Get random Star Trek articles from Memory Alpha.

Parameter Type Required Description
count number (1-5) no Number of random articles (default: 1)

browse_categories

Browse Memory Alpha articles by category.

Parameter Type Required Description
category string yes Category name (e.g. "Federation starships", "Vulcans")
limit number (1-50) no Max articles to list (default: 20)

Domain Tools

get_episode

Get details about a Star Trek episode: synopsis, writer, director, stardate, guest cast. Look up by title or by series + season + episode number.

Parameter Type Required Description
title string no Episode title (e.g. "The Best of Both Worlds")
series string no Series abbreviation (TOS, TNG, DS9, VOY, ENT, DIS, PIC, LD, PRO, SNW)
season number no Season number
episode number no Episode number within the season

Provide either title or all three of series + season + episode.

list_episodes

List all episodes for a Star Trek series season.

Parameter Type Required Description
series string yes Series abbreviation (TOS, TNG, DS9, VOY, ENT, DIS, PIC, LD, PRO, SNW)
season number (1-10) yes Season number

get_starship

Get details about a Star Trek starship: class, registry, armaments, crew complement.

Parameter Type Required Description
name string yes Ship name (e.g. "USS Enterprise (NCC-1701-D)", "USS Defiant")

species_info

Get info about a Star Trek species: homeworld, physiology, culture, quadrant.

Parameter Type Required Description
species string yes Species name (e.g. "Klingon", "Vulcan", "Borg", "Ferengi")

character_lookup

Get details about a Star Trek character: rank, species, affiliation, biography, career history, and memorable quotes.

Parameter Type Required Description
name string yes Character name (e.g. "Jean-Luc Picard", "Worf", "Seven of Nine")

Extracts sidebar data from individual/character/personnel templates. Automatically detects disambiguation pages.

get_timeline

Get Star Trek events for a specific in-universe year.

Parameter Type Required Description
year string yes Year or era (e.g. "2364", "22nd century", "2150s")

on_this_day

Get Star Trek events, air dates, and birthdays for a specific date.

Parameter Type Required Description
date string no Date in "Month Day" format (e.g. "February 14"). Defaults to today.
timezone string no IANA timezone (e.g. "America/New_York"). Defaults to UTC when no date is provided.

crew_manifest

Get the crew roster for a Star Trek starship or station.

Parameter Type Required Description
ship string yes Ship or station name (e.g. "USS Enterprise (NCC-1701-D)", "Deep Space 9")

rules_of_acquisition

Look up Ferengi Rules of Acquisition by number, randomly, or search by keyword. Rules are dynamically parsed from Memory Alpha's article.

Parameter Type Required Description
rule_number number no Specific rule number to look up
random boolean no Get a random Rule of Acquisition (default: false)
search string no Search rules by keyword

stardate_converter

Convert between stardates and real-world dates, or get the current stardate. Supports both TOS-era and TNG-era conversion formulas.

Parameter Type Required Description
date string no Real-world date to convert (e.g. "2026-02-14", "March 5 1987"). Defaults to today.
stardate number no Stardate to convert to a real-world date (e.g. 41153.7)
era "TOS" | "TNG" no Era for conversion formula (default: "TNG")

Provide either date or stardate. If neither is given, converts today's date.

Fun Tools

compare

Compare two Star Trek subjects side-by-side with infobox data in a markdown table.

Parameter Type Required Description
subject1 string yes First subject (e.g. "USS Enterprise (NCC-1701-D)")
subject2 string yes Second subject (e.g. "USS Voyager")

trivia_quiz

Generate a Star Trek trivia question from random Memory Alpha facts.

Parameter Type Required Description
difficulty "easy" | "medium" | "hard" no Difficulty level (default: "medium")

who_said_it

Quote attribution challenge - guess which Star Trek character said it.

Parameter Type Required Description
difficulty "easy" | "medium" | "hard" no Difficulty level (default: "medium")

alien_phrases

Look up phrases and vocabulary from Star Trek alien languages. Extracts structured vocabulary sections (Common phrases, Vocabulary, Lexicon, etc.) when available, falling back to full article text.

Parameter Type Required Description
language string yes Alien language (e.g. "Klingon", "Vulcan", "Ferengi", "Romulan")

Supports Klingon, Vulcan, Ferengi, Romulan, Bajoran, Cardassian, and Dominion with known article mappings. Other languages are searched dynamically.

prime_directive_check

Evaluate whether an action violates the Prime Directive, with a humorous Starfleet assessment.

Parameter Type Required Description
action string yes The action to evaluate (e.g. "Giving warp technology to a pre-warp civilization")

Returns a violation probability, threat level, historical precedent, and context from the Prime Directive article.

red_shirt_analysis

Assess survival odds in classic Trek redshirt style.

Parameter Type Required Description
description string yes Describe the mission or situation (e.g. "Exploring an uncharted planet with strange energy readings")

Analyzes keywords in the description to compute survival probability, risk factors, probable cause of demise, and recommended last words.

battle_simulator

Pit two Star Trek ships against each other in a tactical analysis based on their specs. Fetches real ship data from Memory Alpha, compares combat-relevant specifications, and generates a battle narrative.

Parameter Type Required Description
ship1 string yes First ship (e.g. "USS Enterprise (NCC-1701-D)")
ship2 string yes Second ship (e.g. "Borg cube")

Returns a spec comparison table, combat probability percentages, predicted victor, and a dramatic battle narrative.

away_team_builder

Recommend an optimal away team composition for a mission based on crew specialties. Analyzes mission keywords to determine needed roles, selects from a crew database, and assesses mission risk.

Parameter Type Required Description
mission string yes Describe the mission (e.g. "Negotiate peace treaty with hostile species on a volcanic planet")
team_size number (2-6) no Number of team members (default: 4)

Returns recommended crew, mission analysis, required equipment, and risk assessment.

episode_recommender

Get episode recommendations based on a Star Trek episode you enjoyed. Analyzes the source episode's themes and categories to find related episodes.

Parameter Type Required Description
episode string yes Episode title you liked (e.g. "The Inner Light", "In the Pale Moonlight")
count number (1-10) no Number of recommendations (default: 5)

holodeck_program

Generate a Star Trek holodeck program designation, safety assessment, and malfunction probability. Analyzes the scenario to determine classification, complexity, and risks.

Parameter Type Required Description
scenario string yes Describe the desired holodeck scenario (e.g. "A noir detective mystery in 1940s San Francisco")
safety_protocols boolean no Whether safety protocols are enabled (default: true)

Returns program designation, classification, malfunction probability, environmental parameters, safety assessment, and known risks.

start_trivia_game

Generate a bundle of Star Trek trivia questions for a multi-player game session. Returns a game_id and question set for Clara to track scores per player.

Parameter Type Required Description
num_questions number (3-10) no Number of questions to generate (default: 5)
difficulty "easy" | "medium" | "hard" no Difficulty level (default: "medium")

check_trivia_answer

Check a player's trivia answer against the correct answer. Fully stateless — Clara passes the correct answer from the game bundle.

Parameter Type Required Description
player_answer string yes The player's answer (letter or full text)
correct_answer string yes The correct answer string (from start_trivia_game output)
player_name string no Player name for personalized response

diplomatic_scenario

Generate a Star Trek diplomatic negotiation scenario between two factions, with positions, demands, and leverage points.

Parameter Type Required Description
faction_a string yes First faction (e.g. "Federation", "Klingon Empire")
faction_b string yes Second faction (e.g. "Romulan Star Empire")
dispute string no Optional subject of the dispute

anomaly_of_the_week

Generate a Star Trek space anomaly with effects on the ship and possible resolutions — classic TNG vibes.

Parameter Type Required Description
severity "minor" | "moderate" | "critical" no How dangerous the anomaly is (default: "moderate")

mirror_universe

Describe the mirror universe version of a character, ship, or event. Checks Memory Alpha for a dedicated mirror article.

Parameter Type Required Description
subject string yes The character, ship, or event to look up (e.g. "Spock", "Benjamin Sisko")

first_contact_assessment

Given a species name, look it up and assess warp capability, government type, and recommended first contact approach.

Parameter Type Required Description
species string yes The species to assess (e.g. "Bajoran", "Tamarian")

temporal_incursion

Look up a known Trek time-travel event and describe the temporal paradox and its resolution.

Parameter Type Required Description
event string no Episode/event name (e.g. "City on the Edge of Forever"). Random if omitted.

Prompts (22)

Prompt Parameters Description
explain_like_spock topic Explain a topic with Vulcan logic and emotional detachment
star_trek_analogy concept Explain a coding/tech concept using Star Trek analogies
captains_log summary, stardate? Format a summary as a Captain's Log entry (auto-generates stardate if omitted)
technobabble explanation Transform a technical explanation into Star Trek technobabble
engage plan Summarize a plan with Picard's decisive authority. Ends with "Engage."
make_it_so plan Confirm a plan with Picard's commanding authority. Ends with "Make it so."
fascinating topic Perform a Spock-style analytical deep-dive
dammit_jim task, role McCoy-style scope creep objection: "I'm a {role}, not a..."
resistance_is_futile process Borg-style efficiency optimization of a process
kobayashi_maru scenario Analyze a no-win scenario and find creative Kirk-style solutions
live_long_and_prosper session_summary Vulcan salute session wrap-up with logical assessment
qs_judgment code Q's omnipotent, theatrically condescending roast of your code
scotty task, actual_estimate? Scotty-style engineering time estimate (multiply everything by 4 to look like a miracle worker)
guinan situation Guinan-style wise bartender advice — cryptic but exactly what you needed
worf situation Worf-style security assessment and tactical recommendation
counselor_troi subject Counselor Troi empathic analysis — sense the feelings in your code or situation
seven_of_nine subject Borg efficiency critique — precise, unsentimental, brutally optimal
kira_nerys situation Bajoran resistance perspective — morally direct, politically sharp, passionately principled
janeway problem Janeway-style determination — coffee, science, and sheer force of will
quark_deal proposal Ferengi contract negotiation — profit, loss, and hidden clauses
data_inquiry topic Data-style systematic analysis — thorough, earnest, peppered with probability estimates
holographic_doctor subject EMH-style assessment — brilliant, sarcastic, perpetually underappreciated

Resources (7)

Resource URI Description
Series Reference trek://series All Trek series (TOS through SNW) with years, seasons, setting, ship, and captain
Glossary trek://glossary Key Star Trek terminology: warp drive, phaser, transporter, tricorder, etc.
Technobabble trek://technobabble Particles, fields, phenomena, engineering actions, and systems for generating authentic technobabble
Starship Classes trek://starship-classes Ship classes by faction (Federation, Klingon, Romulan, Cardassian, Borg, Dominion) with era, role, and notable vessels
Factions trek://factions Major Trek factions — government type, home region, notable treaties, diplomatic stance
Prime Directive Cases trek://prime-directive-cases Canonical episodes where the Prime Directive was tested, with dilemmas and outcomes
Technology Index trek://technology-index Key Trek technologies — how they work, notable failures, and series of origin

These are static reference resources with original descriptions (not Memory Alpha content), available for context without making API calls.

Examples

"Search Memory Alpha for Borg"
"Tell me about the episode 'The Best of Both Worlds'"
"List all episodes of TNG Season 3"
"What are the specs of the USS Defiant?"
"Look up Jean-Luc Picard's character profile"
"Give me a random Star Trek trivia question"
"Check if giving warp technology to a pre-warp civilization violates the Prime Directive"
"What's my red shirt survival odds for exploring an unknown cave alone?"
"Look up Ferengi Rule of Acquisition #34"
"Compare the USS Enterprise-D with the USS Voyager"
"Simulate a battle between the Enterprise-D and a Borg cube"
"Build me an away team for a diplomatic mission on a hostile planet"
"Recommend episodes similar to 'The Inner Light'"
"Generate a holodeck program for a 1940s detective noir mystery"
"What's the current stardate?"
"Convert stardate 41153.7 to a real-world date"
"What happened in Star Trek on February 14?"
"Look up Klingon phrases"
"Explain microservices like Spock would"
"Give me Scotty's estimate for migrating a database"
"Assess this situation as Worf would: the build pipeline is failing"
"Review my code as Q"

Development

git clone https://github.com/yourusername/memory-alpha-mcp.git
cd memory-alpha-mcp
npm install
npm run build   # Compile TypeScript
npm run dev     # Run with tsx (hot reload)
npm test        # Run test suite (146 tests)

Testing

The project includes 146 unit tests across 17 test files using vitest:

Test File Coverage
tests/text.test.ts Text utilities: truncation, HTML stripping, wikitext cleaning, template stripping, key formatting, table cell escaping
tests/cache.test.ts TTL cache: get/set, expiry, LRU eviction
tests/infobox.test.ts Sidebar/infobox extraction: typed templates, nested templates, multi-word types
tests/sections.test.ts Section extraction, intro extraction, heading listing
tests/shuffle.test.ts Fisher-Yates shuffle: correctness, element preservation, distribution
tests/client.test.ts Rate limiter: request serialization, interval enforcement
tests/episodes.test.ts Season table parsing: episode extraction, title cleanup, deduplication, padding, and non-episode link filtering
tests/rules-parsing.test.ts Rules of Acquisition regex patterns: all format variants, deduplication, sorting
tests/stardate.test.ts Stardate converter: date-to-stardate, stardate-to-date, TOS/TNG era formulas
tests/battle-simulator.test.ts Battle simulator: combat scoring, narrative generation, ship data parsing
tests/away-team.test.ts Away team builder: role analysis, team selection, mission risk assessment
tests/holodeck.test.ts Holodeck program: designation generation, classification, malfunction probability, safety assessment
tests/wikitext-parser.test.ts Wikitext parser: disambiguation detection, false-positive protection, and normalized link extraction
tests/red-shirt-capped.test.ts Red shirt survival: capped risk analysis, boundary testing
tests/prime-directive-capped.test.ts Prime Directive: capped violation score, boundary testing
tests/trivia-answer.test.ts Trivia answer checking: exact match, letter match, fuzzy match
tests/quote-filter.test.ts Quote extraction: matched pair validation, artifact rejection

MCP Inspector

Test tools interactively:

npx @modelcontextprotocol/inspector node dist/index.js

Attribution & Licensing

This project (MIT)

The server code itself is licensed under the MIT License.

Memory Alpha content (CC-BY-SA)

All Star Trek content is dynamically fetched at runtime from Memory Alpha's public MediaWiki API. Memory Alpha content is licensed under CC-BY-SA 3.0.

How attribution works:

  • Every tool response that includes Memory Alpha content automatically appends an attribution footer via withAttribution() in src/utils/attribution.ts
  • The footer reads: "Source: Memory Alpha (CC-BY-SA) | Unofficial fan project - not affiliated with CBS/Paramount"
  • Error responses that contain no Memory Alpha content do not include the footer
  • The seven static resources (trek://series, trek://glossary, trek://technobabble, trek://starship-classes, trek://factions, trek://prime-directive-cases, and trek://technology-index) contain original reference descriptions, not Memory Alpha content
  • No copyrighted material is embedded in the source code or package -- all wiki content is fetched live from the API and attributed at the point of display

This approach satisfies CC-BY-SA requirements by providing attribution with every piece of content served, linking to the source, and identifying the license. The project acts as an API client, not a content host.

from github.com/SandboxServers/Memory-Alpha-MCP

Установка Memory Alpha Server

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/SandboxServers/Memory-Alpha-MCP

FAQ

Memory Alpha Server MCP бесплатный?

Да, Memory Alpha Server MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Memory Alpha Server?

Нет, Memory Alpha Server работает без API-ключей и переменных окружения.

Memory Alpha Server — hosted или self-hosted?

Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.

Как установить Memory Alpha Server в Claude Desktop, Claude Code или Cursor?

Открой Memory Alpha Server на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare Memory Alpha Server with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории ai