文档缓存与搜索服务

为三星开发者文档提供本地缓存、全文索引和搜索功能的服务器,适用于智能电视和标牌开发场景。

  • by mallendeo
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 mallendeo/samsung-docs-mcp

使用说明

三星docs mcp

三星开发人员文档的MCP服务器(developer.samsung.com)专注于智能电视和标牌。

行为

  • 从预定义的入口点发现文档页面。
  • 将页面内容作为markdown缓存在本地缓存目录中。
  • 为搜索构建本地全文索引。
  • 首次运行时启动后台填充作业。
  • 使用基于TTL的重蚀刻运行每周刷新。

本地跑

bun install
bun run start

服务器终结点: http://localhost:8787/mcp

手动填充缓存:

bun run populate

码头工人

docker compose up -d

MCP配置

{
  "mcpServers": {
    "samsung-docs": {
      "url": "http://localhost:8787/mcp"
    }
  }
}

工具

search

使用MiniSearch(BM25+模糊+前缀)搜索缓存文档。若找不到本地匹配,则根据标题获取一小部分匹配的页面并将其存储在缓存中。

论据:

  • query (string,必填)
  • maxResults (number,默认值 10)
  • files (string[],可选球形过滤器)

discover

从一个文档部分或所有部分中查找页面。可以选择获取和缓存每个发现的页面。

论据:

  • section ("smarttv-develop" | "smarttv-api" | "smarttv-signage-api" | "smarttv-design" | "all",默认值 "all")
  • fetchAll (boolean,默认值 false)
  • concurrency (number,默认值 3,在以下情况下使用 fetchAll=true)

fetch-page

获取单个页面并将其存储在缓存中。

论据:

  • url (string,必填):路径或完整URL

list-pages

列出中存在的页面 db.json.

论据:

  • files (string[],可选球形过滤器)

list-apis

从缓存的API参考页面中提取三星产品API权限元数据。

论据:

  • files (string[],可选,默认 ["*samsung-product-api-references/*-api*"])
  • since (string,可选版本筛选器,示例 ">=4,<6.5")

api-overview

从缓存的产品API页面构建紧凑的API摘要。默认情况下返回WebIDL,或在以下情况下返回每个方法的版本详细信息 since 已设置。

论据:

  • files (string[],可选,默认 ["*samsung-product-api-references/*-api*"])
  • device ("all" | "tv" | "signage",默认值 "all")
  • since (string,可选版本筛选器)

clear-cache

删除缓存的markdown页面 db.json.

cache-status

返回缓存目录、上次填充时间戳和缓存的页面计数。

资源

此服务器实现MCP资源终结点: resources/list, resources/read,以及 resources/templates/list.

静态资源:

  • samsung-docs://cache/status (application/json)
  • samsung-docs://docs/summary (application/json)

资源模板:

  • samsung-docs://page{?href} (text/markdown)

示例页面URI:

  • samsung-docs://page?href=%2Fsmarttv%2Fdevelop%2Fapi-references%2Fsamsung-product-api-references.html

resources/list 包括从以下内容生成的页面资源 db.json 并且由以下内容覆盖 RESOURCE_PAGE_LIST_LIMIT (默认值 120).

缓存布局

默认缓存路径: ~/.cache/mcp/samsung-docs (用覆盖 CACHE_DIR).

  • db.json:已发现的页面和每页 fetchedAt 时间戳
  • pages/*.md:缓存的markdown文档

使用查询参数将标牌变体存储为单独的条目(例如 ?device=signage).