内存Alpha MCP服务器
MCP(模型上下文协议)服务器,从 阿尔法记忆 进入你的AI会话。搜索文章、查找剧集、比较星际飞船、模拟战斗、组建团队、参加智力问答,并让Q亲自审查你的代码。
免责声明: 这是一个非官方的粉丝项目。不隶属于哥伦比亚广播公司、派拉蒙或记忆阿尔法。所有内容都是从MemoryAlpha的公共API(CC-BY-SA许可)动态获取的。没有嵌入或重新分发受版权保护的材料。
安装
克劳德桌面版
添加到您的Claude桌面配置(claude_desktop_config.json):
{
"mcpServers": {
"memory-alpha": {
"command": "npx",
"args": ["-y", "memory-alpha-mcp"]
}
}
}克劳德代码
claude mcp add memory-alpha -- npx -y memory-alpha-mcp手册
npm install -g memory-alpha-mcp
memory-alpha-mcp需求
- Node.js 18+(使用内置
fetch)
运作原理
建筑
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关键设计决策
| 决定 | 理由 |
|---|---|
| 仅限动态API获取 | 法律安全:我们是API客户端,而不是内容主机 |
wtf_wikipedia 用于解析 | 具有零传递依赖关系的同类最佳wikitext解析器 |
| 支撑平衡模板匹配 | 记忆阿尔法 {{sidebar}} 模板嵌套,打破朴素正则表达式 |
| 内存缓存(不是磁盘) | 简单,没有额外的依赖关系,足以满足会话长度的使用 |
console.error 只有 | console.log 破坏stdio MCP传输 |
| 所有响应均为格式化文本 | 比原始JSON更适合LLM使用 |
工具(31)
核心工具
search_memory_alpha
在Memory Alpha中搜索《星际迷航》的文章、角色、船只、剧集等。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
query | string | yes | 搜索查询(例如“Jean-Luc Picard”、“USS Enterprise”) |
limit | number(1-20) | no | 返回的最大结果数(默认值:10) |
get_article
从Memory Alpha获取完整或部分文章。使用精确的文章标题以获得最佳效果。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
title | string | 是 | 文章标题(例如“詹姆斯·T·柯克”、“曲速驱动器”) |
section | string | no | 特定章节标题(例如“背景信息”) |
summary_only | boolean | no | 仅返回简介摘要(默认值:false) |
自动检测消歧页面,并返回可用文章的列表。
get_random_article
从Memory Alpha获取随机的《星际迷航》文章。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
count | number(1-5) | no | 随机文章数(默认值:1) |
browse_categories
按类别浏览Memory Alpha文章。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
category | string | yes | 类别名称(例如“联邦星舰”、“火神”) |
limit | number(1-50) | no | 要列出的最大文章数(默认值:20) |
域名工具
get_episode
获取《星际迷航》一集的详细信息:剧情简介、编剧、导演、明星、客串演员。按标题或按系列+季节+剧集号查找。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
title | string | 否 | 剧集标题(例如“两全其美”) |
series | string | no | 系列缩写(TOS、TNG、DS9、VOY、ENT、DIS、PIC、LD、PRO、SNW) |
season | number | no | 季节号 |
episode | number | no | 本季剧集数量 |
提供其中之一 title 或全部三个 series + season + episode.
list_episodes
列出《星际迷航》系列的所有剧集。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
series | string | yes | 系列缩写(TOS、TNG、DS9、VOY、ENT、DIS、PIC、LD、PRO、SNW) |
season | 数字(1-10) | 是 | 季节号 |
get_starship
获取《星际迷航》星际飞船的详细信息:等级、登记、武器、船员编制。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | yes | 船名(例如“美国企业号(NCC-1701-D)”、“美国挑衅号”) |
species_info
获取有关《星际迷航》中物种的信息:家园、生理、文化、象限。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
species | string | 是 | 物种名称(例如“克林贡”、“瓦肯”、“博格”、“费伦吉”) |
character_lookup
获取《星际迷航》角色的详细信息:等级、物种、隶属关系、传记、职业史和令人难忘的引语。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | yes | 角色名称(例如“让-吕克·皮卡德”、“沃尔夫”、“九中七”) |
从个人/角色/人员模板中提取侧边栏数据。自动检测消歧页面。
get_timeline
获取特定宇宙年的《星际迷航》事件。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
year | string | yes | 年份或年代(例如“2364”、“22世纪”、“2150年代”) |
on_this_day
获取《星际迷航》事件、播出日期和特定日期的生日。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
date | string | no | “月-日”格式的日期(例如“2月14日”)。默认为今天。 |
timezone | string | no | IANA时区(例如“美国/纽约”)。未提供日期时默认为UTC。 |
crew_manifest
获取《星际迷航》星舰或空间站的船员名单。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
ship | string | yes | 船名或站名(例如“美国企业号(NCC-1701-D)”、“深空9号”) |
rules_of_acquisition
按数字、随机或按关键字搜索Ferengi习得规则。规则是从Memory Alpha的文章中动态解析的。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
rule_number | number | no | 要查找的特定规则编号 |
random | boolean | no | 获取随机获取规则(默认值:false) |
search | string | 否 | 按关键字搜索规则 |
stardate_converter
在标准日期和现实世界日期之间进行转换,或获取当前标准日期。支持TOS时代和TNG时代的转换公式。
| 参数 | 类型 | 必填 | 说明 | |
|---|---|---|---|---|
date | string | no | 要转换的真实世界日期(例如“2026-02-14”、“1987年3月5日”)。默认为今天。 | |
stardate | number | no | 要转换为真实日期的Stardate(例如41153.7) | |
era | “TOS” | “TNG” | 否 | 转换公式的时代(默认值:“TNG) |
提供其中之一 date 或 stardate。如果两者都没有给出,则转换为今天的日期。
有趣的工具
compare
将两个《星际迷航》主题与markdown表中的信息框数据并排比较。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
subject1 | string | yes | 第一个主题(例如“美国海军企业号(NCC-1701-D)”) |
subject2 | string | yes | 第二个主题(例如“USS Voyager”) |
trivia_quiz
根据随机记忆阿尔法事实生成一个《星际迷航》琐事问题。
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
difficulty | “简单” | “中等” | “困难” | 否 | 难度级别(默认值:“中等”) |
who_said_it
引用归因挑战——猜猜《星际迷航》中哪个角色这么说。
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
difficulty | “简单” | “中等” | “困难” | 否 | 难度级别(默认值:“中等”) |
alien_phrases
查找《星际迷航》中外星语言的短语和词汇。提取结构化的词汇部分(常用短语、词汇、词典等)(如果可用),回到整篇文章文本。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
language | string | yes | 外星语言(例如“克林贡语”、“瓦肯人”、“费伦吉语”、”罗慕兰语”) |
使用已知的文章映射支持克林贡、瓦肯、费伦吉、罗慕兰、巴约兰、卡达西和自治领。其他语言是动态搜索的。
prime_directive_check
用幽默的星际舰队评估来评估一项行动是否违反了最高指令。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
action | string | 是 | 要评估的动作(例如“将曲速技术赋予曲速前文明”) |
从Prime Directive文章中返回违规概率、威胁级别、历史先例和上下文。
red_shirt_analysis
以经典的Trek红衫军风格评估生存几率。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
description | string | yes | 描述任务或情况(例如“用奇怪的能量读数探索未知星球”) |
分析描述中的关键字,以计算生存概率、风险因素、可能的死亡原因和推荐的最后一句话。
battle_simulator
根据两艘《星际迷航》飞船的规格进行战术分析。从Memory Alpha获取真实的舰船数据,比较与战斗相关的规格,并生成战斗叙述。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
ship1 | string | 是 | 第一艘船(例如“美国企业号”(NCC-1701-D)) |
ship2 | string | 是 | 第二艘船(例如“博格立方体”) |
返回规格比较表、战斗概率百分比、预测胜利者和戏剧性的战斗叙述。
away_team_builder
根据机组人员的专业知识,为任务推荐最佳的客场团队组成。分析任务关键字以确定所需的角色,从船员数据库中选择,并评估任务风险。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
mission | string | 是 | 描述任务(例如“与火山星球上的敌对物种谈判和平条约”) |
team_size | number(2-6) | no | 团队成员数(默认值:4) |
返回推荐的机组人员、任务分析、所需设备和风险评估。
episode_recommender
根据你喜欢的《星际迷航》剧集获得剧集推荐。分析源剧集的主题和类别,以找到相关剧集。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
episode | string | 是 | 你喜欢的剧集标题(例如“内在之光”、“在苍白的月光下”) |
count | number(1-10) | no | 推荐数(默认值:5) |
holodeck_program
生成《星际迷航》全息甲板程序名称、安全评估和故障概率。分析场景以确定分类、复杂性和风险。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
scenario | string | yes | 描述想要的全息甲板场景(例如“20世纪40年代旧金山的黑色侦探之谜”) |
safety_protocols | boolean | 否 | 是否启用安全协议(默认值:true) |
返回程序名称、分类、故障概率、环境参数、安全评估和已知风险。
start_trivia_game
为多人游戏会话生成一组《星际迷航》琐事问题。返回一个game_id和问题集,供Clara跟踪每个玩家的分数。
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
num_questions | number(3-10) | no | 要生成的问题数(默认值:5) | ||
difficulty | “简单” | “中等” | “困难” | 否 | 难度级别(默认值:“中等”) |
check_trivia_answer
将玩家的琐事答案与正确答案进行核对。完全无状态——Clara从游戏包中传递正确答案。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
player_answer | string | 是 | 玩家的答案(字母或全文) |
correct_answer | string | yes | 正确答案字符串(来自start_trivia_game输出) |
player_name | string | no | 用于个性化响应的玩家名称 |
diplomatic_scenario
在两个派系之间生成一个《星际迷航》外交谈判场景,包括立场、要求和杠杆点。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
faction_a | string | yes | 第一派系(例如“联邦”、“克林贡帝国”) |
faction_b | string | 是 | 第二派系(例如“罗慕兰星际帝国”) |
dispute | string | no | 争议的可选主题 |
anomaly_of_the_week
生成一个《星际迷航》太空异常,对飞船产生影响,并可能产生分辨率——经典的TNG氛围。
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
severity | “轻微” | “中等” | “严重” | 否 | 异常有多危险(默认值:“中等”) |
mirror_universe
描述角色、飞船或事件的镜像宇宙版本。检查内存Alpha以查找专用镜像文章。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
subject | string | yes | 要查找的字符、船或事件(例如“Spock”、“Benjamin Sisko”) |
first_contact_assessment
给定一个物种名称,查找并评估扭曲能力、政府类型和推荐的首次接触方法。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
species | string | 是 | 要评估的物种(例如“Bajoran”、“Tamarian”) |
temporal_incursion
查找一个已知的Trek时间旅行事件,并描述时间悖论及其解决方案。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
event | string | no | 剧集/事件名称(例如“永远边缘的城市”)。如果省略,则为随机。 |
提示(22)
| 提示 | 参数 | 说明 |
|---|---|---|
explain_like_spock | topic | 用瓦肯逻辑和情感超然来解释一个话题 |
star_trek_analogy | concept | 使用《星际迷航》的类比解释编码/技术概念 |
captains_log | summary, stardate? | 将摘要格式化为船长日志条目(如果省略,则自动生成标准日期) |
technobabble | explanation | 将技术解释转化为《星际迷航》中的技术术语 |
engage | plan | 以皮卡德的果断权威总结一个计划。以“参与”结束 |
make_it_so | plan | 与皮卡德的指挥官确认计划。以“让它如此”结束 |
fascinating | topic | 进行斯波克式的深入分析 |
dammit_jim | task, role | 麦考伊式的范围蠕变反对意见:“我是一个角色,而不是……” |
resistance_is_futile | process | 博格式工艺效率优化 |
kobayashi_maru | scenario | 分析一个没有赢家的情况,找到创造性的柯克式解决方案 |
live_long_and_prosper | session_summary | Vulcan致敬环节以逻辑评估结束 |
qs_judgment | code | Q是对你的代码的全能、戏剧性的屈尊烤 |
scotty | task, actual_estimate? | 斯科蒂式的工程时间估算(将所有东西乘以4,看起来像一个奇迹般的工人) |
guinan | situation | 贵南风格的明智调酒师建议——隐晦但正是你所需要的 |
worf | situation | 磨损式安全评估和战术建议 |
counselor_troi | subject | Troi辅导员移情分析——感知你的代码或情境中的感受 |
seven_of_nine | subject | 博格效率批判——精确、无感情、残酷的最优 |
kira_nerys | situation | 巴约兰抵抗观点——道德直接、政治敏锐、原则坚定 |
janeway | problem | 珍妮薇式的决心——咖啡、科学和纯粹的意志力 |
quark_deal | proposal | Ferengi合同谈判——利润、损失和隐藏条款 |
data_inquiry | topic | 数据风格的系统分析——彻底、认真、充满概率估计 |
holographic_doctor | subject | EMH风格评估——精彩、讽刺、永远被低估 |
资源(7)
| 资源 | URI | 描述 |
|---|---|---|
| 系列参考 | trek://series | 所有Trek系列(TOS至SNW),包括年份、季节、背景、船和船长 |
| 术语表 | trek://glossary | 《星际迷航》中的关键术语:曲速驱动器、移相器、运输机、三角准星等。 |
| Technobable | trek://technobabble | 粒子、场、现象、工程行为和生成真实技术的系统 |
| 星舰等级 | trek://starship-classes | 按派系(联邦、克林贡、罗慕兰、卡达西、博格、自治领)划分的船只类别,包括时代、角色和著名船只 |
| 派系 | trek://factions | 《星际迷航》的主要派系——政府类型、母国、重要条约、外交立场 |
| 主要指令案例 | trek://prime-directive-cases | 主要指令测试的典型事件,包括困境和结果 |
| 技术指标 | trek://technology-index | Trek的关键技术——它们的工作原理、显著的失败和一系列起源 |
这些是具有原始描述(不是MemoryAlpha内容)的静态引用资源,可用于上下文,而无需进行API调用。
示例
"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"发展
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)测试
该项目包括17个测试文件中的146个单元测试,使用 请柬:
| 测试文件 | 覆盖率 |
|---|---|
tests/text.test.ts | 文本实用程序:截断、HTML剥离、维基文本清理、模板剥离、键格式化、表单元格转义 |
tests/cache.test.ts | TTL缓存:获取/设置、过期、LRU驱逐 |
tests/infobox.test.ts | 侧边栏/信息框提取:键入模板、嵌套模板、多单词类型 |
tests/sections.test.ts | 章节提取、引言提取、标题列表 |
tests/shuffle.test.ts | Fisher-Yates洗牌:正确性、元素保存、分布 |
tests/client.test.ts | 速率限制器:请求序列化、间隔强制 |
tests/episodes.test.ts | 季节表解析:剧集提取、标题清理、重复数据删除、填充和非剧集链接过滤 |
tests/rules-parsing.test.ts | 获取规则正则表达式模式:所有格式变体、重复数据删除、排序 |
tests/stardate.test.ts | Stardate转换器:日期到标准日期、标准日期到日期、TOS/TNG时代公式 |
tests/battle-simulator.test.ts | 战斗模拟器:战斗评分、叙事生成、舰船数据解析 |
tests/away-team.test.ts | 客场团队建设者:角色分析、团队选择、任务风险评估 |
tests/holodeck.test.ts | Holodeck程序:名称生成、分类、故障概率、安全评估 |
tests/wikitext-parser.test.ts | Wikitext解析器:消歧检测、假阳性保护和规范化链接提取 |
tests/red-shirt-capped.test.ts | 红衫军生存:上限风险分析、边界测试 |
tests/prime-directive-capped.test.ts | 主要指令:违规分数上限、边界测试 |
tests/trivia-answer.test.ts | 琐事答案检查:精确匹配、字母匹配、模糊匹配 |
tests/quote-filter.test.ts | 报价提取:匹配对验证、工件拒绝 |
MCP检查员
交互式测试工具:
npx @modelcontextprotocol/inspector node dist/index.js归因与许可
这个项目(麻省理工学院)
服务器代码本身根据 MIT许可证.
内存Alpha内容(CC-BY-SA)
所有《星际迷航》内容都是在运行时从以下位置动态获取的 MemoryAlpha的公共MediaWiki APIMemory Alpha内容的许可证为 CC-BY-SA 3.0.
归因是如何工作的:
- 每个包含Memory Alpha内容的工具响应都会通过以下方式自动附加归因页脚
withAttribution()在src/utils/attribution.ts - 页脚如下: *“来源:记忆阿尔法(CC-BY-SA)|非官方粉丝项目-不隶属于哥伦比亚广播公司/派拉蒙”*
- 不包含Memory Alpha内容的错误响应不包括页脚
- 七种静态资源(
trek://series,trek://glossary,trek://technobabble,trek://starship-classes,trek://factions,trek://prime-directive-cases,以及trek://technology-index)包含原始参考说明,而不是内存Alpha内容 - 源代码或包中没有嵌入受版权保护的材料——所有wiki内容都是从API实时获取的,并在显示时进行归因
这种方法通过为所提供的每一条内容提供归因、链接到源并标识许可证来满足CC-BY-SA要求。该项目充当API客户端,而不是内容宿主。
