@cyanheads/wikipedia-mcp-server

中文文档
0.3.0发布于 2026/10/30Apache-2.0TypeScriptES Module近 30 天下载 2611

搜索维基百科的文章,阅读摘要和全文,目标部分,列出一篇文章所引用的参考文献,查找相邻的页面,并通过MCP列出语言版. (原始内容存档于2012-10-12). STIO or Streamable HTTP.

中文使用文档
文档目录20 节
  1. 概览
  2. 工具
  3. 能力参考
  4. wikipedia_search_articles 工具
  5. wikipedia_get_summary 工具
  6. wikipedia_get_article 工具
  7. wikipedia_get_sections 工具
  8. wikipedia_search_nearby 工具
  9. wikipedia_get_languages 工具
  10. wikipedia_get_references 工具
  11. 特征
  12. 开始
  13. 配置
  14. 运行服务器
  15. 地方发展
  16. 夹克
  17. 项目结构
  18. 发展指南
  19. 捐款
  20. 许可证

@cyanheads/wikipedia-mcp-server (英语)

搜索维基百科的文章,阅读摘要和全文,目标部分,列出一篇文章所引用的参考文献,查找相邻的页面,并通过MCP列出语言版. (原始内容存档于2012-10-12). STIO or Streamable HTTP.

7 个工具

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework


概览

任何语言版本的维基百科. 搜索文章、 阅读摘要或只需您需要的章节、 列出文章引用的脚注、 找到坐标附近的地理标记页面、 列出文章的语言版本。 船舶 wikipedia-guide 代理技能( e)skill://wikipedia-guide/SKILL.md),MCP客户端读取的跨工具的门:切换版,分解页,区号对 section_index在报告缺失的东西之前,需要检查什么.

工具

工具说明
wikipedia_search_articles整个维基百科的全文搜索,返回的排名结果有短描述,Wikidata QIDs,纯文本片段,和页面ID,加上维基百科的拼写建议.
wikipedia_get_summary任何文章的简短摘要——平正文本,Wikidata QID,描述,缩略图 URL,页面类型,canonic URL,修订版,以及坐标.
wikipedia_get_article完整的文章或目标部分作为干净的纯正文本,并保留了部分的标记,条子URL,以及从中读取的修订.
wikipedia_get_sections目录 section_index 目标部分的数值为:.
wikipedia_search_nearby在WGS 84坐标的半径范围内有地理标记的维基百科文章,按距离排序,有短描述和Wikidata QID.
wikipedia_get_languages所有可供文章使用的语言版本,有标题和URL,或者只是你要求的版本.
wikipedia_get_references按文件顺序,文章的脚注引用了每个脚注的文本、外部链接(包括存档副本)和参考文件,加上简短引用的全部引文.

能力参考

wikipedia_search_articles 工具

  • 自由文本 query (空的失败) empty_query),正整数 limit (违约10,被夹到50),以及 offset 呼唤,回转浓缩 nextOffset只有被夹住的呼叫载着 requestedLimit, (中文(简体) ), appliedLimit和夹子通知。 维基百科在一万年之后没有结果: offset 在其前后失败 offset_too_large,在窗口上结束的一页带入浓缩 truncated
  • 圆环搜索操作符包括: incategory:"1648 treaties", (中文(简体) ), morelike:Peace of Westphalia, (中文(简体) ), intitle:Python, (中文(简体) ), hastemplate:Infobox,以及 insource:Python (支持取决于安装). sort 默认为 relevance; 替代品为 last_edit_desc, (中文(简体) ), create_timestamp_desc, (中文(简体) ), incoming_links_desc,以及 title_natural_asc浓缩回声 sort; 留着它和 query 呼叫时不变
  • 每个结果都包含一个纯文本片段,页ID,字数,以及——当文章有这些片段时——它的短篇 description 和 Wikidata QID (英语:wikibase_item; 浓缩 suggestion 携带维基百科的拼写校正(einstien → einstein(中文(简体) )
  • 无效或过于复杂 insource:/…/ 财务报告和审定财务报表 intitle:/…/ regexs 失败一次 invalid_query,则 upstreamCode,并指导改正或简化regex或删除操作员。 繁忙的正则搜索仍然可以重试

wikipedia_get_summary 工具

  • 需要一个 title; 返回 REST 摘要取出——从铅开始的碎片(wikipedia_get_article 与 section_index: 0 读取了整条线索)——外加简短的描述,缩略语 URL,Wikidata QID(wikibase_item),对于被划上地标的文章, latitude 编号 : longitude 直接传递到 wikipedia_search_nearby
  • page_type 歧视 standard 编号 : disambiguation 编号 : no-extract 联 合 国 disambiguation,用 wikipedia_search_articles(三); url, (中文(简体) ), revision_id,以及 last_modified 将修订版命名为 ?oldid=<revision_id> 是一个永久的链接
  • 一个没有摘要摘要摘要的已存在的页面用元数据成功, 一个空的 extract,并引导打开 Cononic URL 或尝试 section_index: 0。命名空间页可能包含文件而不是文章。 缺少空描述; 缺少标题仍然失败 not_found

wikipedia_get_article 工具

  • 无 section_index: 文章全文 == Section == 标记,或一节大纲(truncated: true当超过时 WIKIPEDIA_ARTICLE_OVERFLOW_BYTES (默认为80,000字节). 与一个 section_index 从 wikipedia_get_sections (单位:千美元)0 是领带:该节加上其嵌入的分节
  • 大纲条目包括已核实 section_index 值,包括铅的0。 模糊或无索引标题保留了节列倒数。 技术选择委员会核查得到一次短暂尝试;无法进行的核查被披露
  • 重定向曝光 redirected_from 而且,对于一个部分的目标, redirect_section. 全文仍完整,包括定向阅读指南 section_index,包括 0 优先
  • 每个读取返回 url 财务报告和审定财务报表 revision_id (单位:千美元)?oldid=<revision_id> 是已读文本的永久链接; 完整读取, 包括大纲, 也返回 last_modified与 WIKIPEDIA_BASE_URL 设置, 一节读取省略 url
  • 本节将花生花纹树作为栅栏、收缩的树枝,将每行的标签同叶子相配,并保存无名叉子。 一个无法解开的树叶 [table omitted: unparseable clade]树没有 table_index
  • 部分还将数据表作为管道限制行和信息箱作为 label: value 线条,全条取出条; 一张超过4万个已渲染字节的表格留下a [table omitted: N rows (table T)] 标记。 过 table_index: T ,然后跟着 next_cursor 作为 cursor 同样的投入。 继续阅读第一页的修订;标题和标题出现一次。 每页的表格文本都符合两个表面的40,000 UTF-8字节,但一个不可分割的超大小行或首页标题/标题单独返回 oversized_row: true

wikipedia_get_sections 工具

  • 需要一个 title;返回部分标题,标题级别,等级编号(例如. "2.1"页:1 section_index 传递给 wikipedia_get_article ——第一个条目是领先(index: 0,标题 Introduction(中文(简体) )
  • 标题使用文章渲染器的脚本,公式,白空和单通实体正常化,所以 CO₂ 段落列表、文章读取和校验的大纲条目保持相同
  • 失败者 no_sections 写在短文上 wikipedia_get_article 换成
  • 重定向别名曝光 redirected_from 和可选 redirect_section· ; redirect_section_index 仅当唯一锚点匹配真实数字 TOC 索引时才会出现

wikipedia_search_nearby 工具

  • latitude -90... 90 - 90 - 90 - 90 - 90 - 90 - 90 - 90 - 90 - 90 - 90 - 90 - 90 - 90 longitude -180.180(工作组84), radius_meters 10-10 000 (默认为 1000), 和正整数 limit (默认值 10, 被夹到500), 没有标记过去 limit; 浓缩 truncated 标记比 limit 允许——500分,维基百科天花板,取而代之的是更窄的光圈. 只有被夹住的呼叫载着 requestedLimit, (中文(简体) ), appliedLimit夹子通知
  • 返回文章排序 distance_meters,带有坐标,简称 description,以及 Wikidata QID () (中文(简体) )wikibase_item) (中文(简体) ). 每个都由文章本身的GeoData坐标标记,而不是其Wikidata项的坐标所放出,因此在标签所放之处出现了被误标的文章

wikipedia_get_languages 工具

  • 需要一个 title; 返回每个版本的 language_code, (中文(简体) ), edition_code,文章标题,和 URL,加 source_title,解决的标题。 过 edition_code -没有 language_code 作为 language (b) 两者可能有所不同(gsw 对 als(中文(简体) )
  • editions 将列表缩入要求的代码: 没有文章的代码 missing,以及 total_languages 保留未过滤的数。 失败者 no_other_languages 当文章没有翻译时; 匹配任何内容的过滤器都是空列表, 而不是失败

wikipedia_get_references 工具

  • 需要一个 title; 返回 references[] 每个参考列表的文档顺序 id, (中文(简体) ), label (正文标记), group (a) 说明清单,例如: lower-alpha,主列表缺席), text, (中文(简体) ), urls (包括存档副本)和 dois (从) doi.org 链接,%-已解码). total_references 计算所有页面的脚注. wikipedia_get_article 放下脚注标记和参考列表
  • 短篇引文如"Galinsky 2012", 第75-76页 work_ids,以及 works 在同一页上保留了它们名称的全部引用,每页一次。 参考书目和进一步阅读的条目没有列出脚注点——读取: wikipedia_get_article
  • 每个页面在两面的40 000个UTF-8字节内保存整个脚注;以下 next_cursor 作为 cursor 同样的 title 财务报告和审定财务报表 language。继续阅读第一页的 revision_id,而最后一个脚注的光标失败 invalid_cursor。无法读取的已绑定版本失败 revision_unavailable无脚注的文章返回空列表,其中包含 notice,而非错误

特征

建造在 @cyanheads/mcp-ts-core: stdio和可流式的 HTTP 传输器,可插接式(none 编号 : jwt 编号 : oauth),可互换存储(in-memory, (中文(简体) ), filesystem, (中文(简体) ), Supabase, (中文(简体) ), Cloudflare KV/R2/D1),结构化记录,可选择的OpenTeleometry tracking.

维基百科中的相关条目: 克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克

  • 双API集成——MediaWiki REST API (中文(简体) )/api/rest_v1/总结,行动API(/w/api.php搜索、全文、章节、地理搜索和语言链接
  • 对每个需要的请求进行重试和回放,包括瞬时拒绝(搜索太忙,速率有限,只读) Action API返回到一个HTTP 200正体内,并有一个上游 Retry-After 每个请求都在30秒后重复 对搜索结果的最佳描述搜索得到一次短暂的尝试; User-Agent 每个 Wikimedia API 政策标题
  • 每个读取的路径都会通过一个渲染器使 HTML 变成相同的平文本形状—— == Heading == 标记, 每行一个列表项, 上标保存, 代码被栅栏 : Action API HTML 摘录的完整文章, 解析器自己 HTML 对该部分的一节, REST 的摘要 extract_html。一节中附加了数据表、信息箱和布局表内列表,摘要中没有任何内容。 脚注标记、参考列表和隐藏的引用样式 1 维护信件(CS1 maint: …在每一条道路上都投放; wikipedia_get_references 返回脚注
  • 待命 language 每个工具上的参数( 默认) en) ——所有维基百科语言版均可在单会话中访问;所读的每个标题都遵循重定向
  • 针对 MediaWiki 创建的活版注册, 语言验证 action=sitematrix 结束点(划出24小时)——在造成超时之前捕获结构有效但不存在的版本

方便代理输出 :

  • page_type 歧视摘要 standard 编号 : disambiguation 编号 : no-extract ——不需要字符串解析
  • wikibase_item (Wikidata QID)关于摘要和搜索及附近结果,可以直接与wikidata-mcp-server进行交叉引用
  • 文章文本、片段和标题在进入下标的路上被反斜-规避 content[] 渲染,所以写出加分或减分语法的文章会读作自己,而不是被客户端解释; structuredContent 带有同一文本的未脱逃。 栅栏码块和桌排分隔符通过未脱逃,而桌排单元格仍然逃脱
  • section_index 在内容表条目上直接链接到目标阅读参数 wikipedia_get_article,包括索引 0
  • 标题 MediaWiki 无法为页面命名.. < > [ ] { },则 | 多标题分隔符, % 出逃, 魔法平板, 相对路径—— 在任何请求之前都被拒绝, 使用 invalid_title; 线索 #fragment 被接受并正常解决
  • 恢复对每一个错误类型的提示——呼叫者获得可操作的下一步(例如“使用” wikipedia_search_articles 找到正确的标题")

开始

连接到主机实例, 没有安装 :

claude mcp add --transport http wikipedia-mcp-server https://wikipedia.caseyjhand.com/mcp

或者在当地运行它:

claude mcp add wikipedia-mcp-server -- npx -y @cyanheads/wikipedia-mcp-server

对于其他客户端,请将此添加到 MCP 配置文件中 :

{
  "mcpServers": {
    "wikipedia-mcp-server": {
      "command": "npx",
      "args": ["-y", "@cyanheads/wikipedia-mcp-server"]
    }
  }
}

不需要API密钥——维基百科的API公开. 对于 Docker 或源构建,请参见 运行服务器。 。 。 .

配置

变量说明默认
WIKIPEDIA_USER_AGENT用户代理头随Wikimedia API请求发送. 为您的部署定制 .wikipedia-mcp-server/0.3.0 (https://github.com/cyanheads/wikipedia-mcp-server)
WIKIPEDIA_BASE_URL可选的单人监视器 取消设置( 默认): 按语言主机编写 , language 每个呼叫选择版本。 设定为完整的基础 URL( 如私有的 MediaWiki 镜像): 路由 每一个在那个固定主机的呼叫—— language 不再改变它.(未设定)
WIKIPEDIA_ARTICLE_OVERFLOW_BYTES预算字节,以上全文为(wikipedia_get_article 无 section_index)返回一节大纲,而不是全文。 为这个领域所训练——普通文章保持完整;只有真正的特大文章(二战~86 KB,美国~94 KB)大纲. 以节为对象的读物从未受到影响.80000
MCP_TRANSPORT_TYPE运输: stdio 或者说 http。 。 。 .stdio
MCP_HTTP_PORTHTTP 服务器端口 .3010
MCP_SESSION_MODEHTTP 会话模式 : stateless, (中文(简体) ), stateful,或 auto (决心 stateful) (中文(简体) ). Docker 图像船 stateless。 。 。 .auto
MCP_AUTH_MODEAuth 模式 : none, (中文(简体) ), jwt,或 oauth。 。 。 .none
MCP_LOG_LEVEL日志级别(RFC 5424).info
LOGS_DIR日志文件目录(只有Node.js).<project-root>/logs
LOG_TOOL_FAILURE_PAYLOADS记录每个工具调用失败的参数和结果,按密钥名称编辑并封顶 LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTES (默认) 16384) (中文(简体) ). 自由形式值内部的秘密不编辑 .false
OTEL_ENABLED启用 OpenTeleometry 仪器( spans, 度量衡, 完成日志) .false

见 .env.example 用于完整可选覆盖列表.

运行服务器

地方发展

要求数 Bun v1.4.0 (英语) 或更高(或Node.js v24+).

  • 克隆并安装 :

    git clone https://github.com/cyanheads/wikipedia-mcp-server.git
    cd wikipedia-mcp-server && bun install
    cp .env.example .env   # optional: customize WIKIPEDIA_USER_AGENT or logging
    
  • 构建和运行 :

    # One-time build
    bun run rebuild
    
    # Run the built server
    bun run start:stdio
    # or
    bun run start:http   # listens at http://localhost:3010/mcp (MCP_HTTP_PORT)
    
  • 运行检查和测试 :

    bun run devcheck   # Lint, format, typecheck, security
    bun run test       # Vitest test suite
    bun run lint:mcp   # Validate MCP definitions against spec
    

夹克

docker build -t wikipedia-mcp-server .
docker run --rm -p 3010:3010 wikipedia-mcp-server

Dockerfile 默认为 HTTP 传输、 无国籍会话模式和日志到 /var/log/wikipedia-mcp-server。要从 MCP 客户端运行已发布的图像,请使用 "command": "docker" 与 "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/wikipedia-mcp-server:latest"]。默认情况下安装了 OpenTeleometry 端端依赖性 --build-arg OTEL_ENABLED=false 以略去它们.

项目结构

目录目的
src/index.tscreateApp() 出入口——注册工具并输入维基百科服务.
src/config服务器特定环境变量与Zod解析并验证.
src/mcp-server/tools工具定义*.tool.ts)——每个工具一个文件.
src/services/wikipediaWikipedia Service — REST API + Action API客户端具有再试/后退和语言验证功能.
skills/发表 wikipedia-guide 代理技能,在MCP上服务,并在包裹中发运.
tests/单位和综合测试镜像 src/。 。 。 .

发展指南

见 CLAUDE.md 发展准则和建筑规则。 简本:

  • 搬运工投掷,框架渔获量——否 try/catch 在工具逻辑中
  • 使用 ctx.log 请求范围伐木, ctx.state 租户范围储存
  • 在 src/mcp-server/tools/definitions/index.ts
  • 环绕外部 API 调用: 验证 生 → 规范到域类型 → 返回输出计划; 永远不要编织缺失的字段

捐款

问题值得欢迎。 提交前进行检查和测试:

bun run devcheck
bun run test

许可证

阿帕奇-2.0 — 见 自由主义 详细情况.

版本与发布记录

@cyanheads/wikipedia-mcp-server 共发布 25 个版本,首次发布于 2026/05/25;过去 12 个月发布了 25 个版本。

版本发布日期距今
0.3.0latest2026/10/3012 天前
0.2.82026/10/2417 天前
0.2.72026/10/2418 天前
0.2.62026/10/091 个月前
0.2.52026/09/231 个月前
0.2.42026/09/231 个月前

关于 @cyanheads/wikipedia-mcp-server 的常见问题

@cyanheads/wikipedia-mcp-server 是什么?

搜索维基百科的文章,阅读摘要和全文,目标部分,列出一篇文章所引用的参考文献,查找相邻的页面,并通过MCP列出语言版. (原始内容存档于2012-10-12). STIO or Streamable HTTP.

如何安装 @cyanheads/wikipedia-mcp-server?

在项目目录运行 npm install @cyanheads/wikipedia-mcp-server,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 wikipedia-mcp-server,可以用 npx wikipedia-mcp-server 直接运行。

@cyanheads/wikipedia-mcp-server 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cyanheads/wikipedia-mcp-server 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@cyanheads/wikipedia-mcp-server 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cyanheads/wikipedia-mcp-server 可以商用吗?

@cyanheads/wikipedia-mcp-server 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@cyanheads/wikipedia-mcp-server 的下载量有多少?

根据 npm 官方下载统计,@cyanheads/wikipedia-mcp-server 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,611 次,日均约 87 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cyanheads/wikipedia-mcp-server 还在维护吗?

最新版本 0.3.0 发布于 2026/10/30(12 天前);至今共发布 25 个版本,其中过去 12 个月发布了 25 个;首次发布于 2026/05/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。