返回市场
MCP服务器

MCP服务器

作者:jser22 星标更新:2025-05-07

项目介绍

@jser/mcp

JSer.info 的 MCP 服务器

使用方法

在 VSCode 中使用

在 VSCode 中,可以通过以下任一方式使用 JSer.info MCP:

使用远程服务器(推荐)

可以通过以下任一方式添加远程服务器:

方法1: 通过命令行添加
code --add-mcp '{"name":"jser-info-mcp","url":"https://mcp.jser.info/mcp"}'
方法2: 在 settings.json 中添加

在 VSCode 的 settings.json 中添加以下设置:

"mcp": {
  "servers": {
    "jser-info-mcp": {
      "url": "https://mcp.jser.info/mcp"
    }
  }
}

这样就可以自动使用 JSer.info MCP。

使用本地服务器

  1. 在终端中启动 @jser/mcp

    npx @jser/mcp
    
  2. 打开 VSCode 的命令面板(Cmd+Shift+PCtrl+Shift+P),执行“MCP: 添加服务器...”

  3. 输入服务器 URL http://localhost:14561/mcp 并连接

可用功能

连接后,可以使用以下工具:

  • jser_search_items: 根据标题、描述、URL 和标签搜索项目(支持多个关键词的 OR 搜索)
  • jser_search_posts: 根据标题、描述、URL 和标签搜索帖子
  • jser_product_name: 从 URL 获取产品名称
  • jser_week: 根据编号获取 JSer 周
  • jser_weeks: 获取所有 JSer 周
  • jser_weeks_between: 获取两个日期之间的 JSer 周
  • jser_week_with_item_url: 获取包含特定项目的 JSer 周
  • jser_item_with_item_url: 根据 URL 获取 JSer 项目

可用工具

JSer.info MCP 提供以下工具。

jser_search_items

根据标题、描述、URL 和标签搜索项目。支持多个关键词的 OR 搜索。

参数:

  • query: 搜索查询(1-100 字符)。支持多个关键词的 OR 搜索
  • limit: 返回结果的最大数量(1-100,默认值: 10)
  • offset: 结果的偏移量(0 或更大,默认值: 0)
  • order: 排序顺序
    • desc: 最新优先(默认)
    • asc: 最旧优先

返回值:

  • 项目数组
    • title: 项目的标题
    • url: 项目的 URL
    • content: 项目的描述
    • tags: 标签数组
    • date: 注册时间
    • relatedLinks: 相关链接数组

jser_search_posts

根据标题、描述、URL 和标签搜索帖子。

参数:

  • query: 搜索查询(1-100 字符)
  • limit: 返回结果的最大数量(1-100,默认值: 10)
  • offset: 结果的偏移量(0 或更大,默认值: 0)
  • sort: 排序依据
    • relevance: 相关性优先(默认)
    • date: 时间优先
  • order: 排序顺序
    • desc: 最新优先/相关性高优先(默认)
    • asc: 最旧优先/相关性低优先

返回值:

  • 帖子数组
    • title: 帖子的标题
    • url: 帖子的 URL
    • content: 帖子的内容
    • tags: 标签数组
    • date: 发布时间

jser_product_name

从 URL 获取产品名称。

参数:

  • url: 产品的 URL(必需)

返回值:

  • 产品信息对象
    • name: 产品名称
    • url: 产品的 URL
    • releaseNoteProbability: 发布说明的概率
    • releaseNoteVersion: 发布说明的版本信息(如果适用)
    • releaseNoteURL: 发布说明的 URL(如果适用)

jser_week

根据编号获取 JSer 周。

参数:

  • number: JSer 周的编号(必需)

返回值:

  • JSer 周对象
    • number: JSer 周的编号
    • startDate: 开始日期
    • endDate: 结束日期
    • items: 当周的项目列表
    • posts: 当周的帖子列表

jser_weeks

获取所有 JSer 周。

返回值:

  • JSer 周对象数组
    • number: JSer 周的编号
    • startDate: 开始日期
    • endDate: 结束日期
    • items: 当周的项目列表
    • posts: 当周的帖子列表

jser_weeks_between

获取指定期间的 JSer 周。

参数:

  • beginDate: 期间的开始日期(必需)
  • endDate: 期间的结束日期(必需)

返回值:

  • JSer 周对象数组
    • number: JSer 周的编号
    • startDate: 开始日期
    • endDate: 结束日期
    • items: 当周的项目列表
    • posts: 当周的帖子列表
    • itemsCount: 项目数量
    • postsCount: 帖子数量

jser_week_with_item_url

获取包含特定项目的 JSer 周。

参数:

  • item_url: 项目的 URL(必需)

返回值:

  • JSer 周对象
    • number: JSer 周的编号
    • startDate: 开始日期
    • endDate: 结束日期
    • items: 当周的项目列表
    • posts: 当周的帖子列表

jser_item_with_item_url

根据 URL 获取项目。

参数:

  • url: 项目的 URL(必需)

返回值:

  • 项目对象
    • title: 标题
    • url: URL
    • description: 描述
    • tags: 标签数组
    • date: 日期
    • relatedLinks: 相关链接数组

数据源

数据获取使用 @jser/data-fetcher

  • 数据获取的感觉是从上次执行后过了一分钟再重新获取
  • 即一分钟内使用缓存的数据

搜索使用 DataSet

项目: 要介绍的网站
    1 个项目 = 1 个网站
    所有数据的原始来源
    包含每个网站的标题、URL、注册日期、标签等
    API: https://jser.info/source-data/items.json
帖子: JSer.info 上发布的文章
    1 帖子 = 1 篇文章
    包含每篇文章的标题、URL、标签、日期等
    使用 @jser/stat 可以根据项目和帖子搜索指定网站的文章
    API: https://jser.info/posts.json
帖子项目: JSer.info 上发布的文章中的项目(网站)
    1 帖子项目 = 1 个网站
    基本上与项目相同,但帖子项目包含文章中的类别(如头条等)
    类别的种类参见 @jser/post-parser
    如果在发布时对项目进行了编辑,则项目和帖子项目不一定完全一致
    限制: 从 2014-08-03 开始才区分类别,因此之前的数据不包括此类别
    所有的文章都包含在帖子中,但帖子项目的数据并不包含在内
    API: https://jser.info/public/data/post-details.json

产品名称的搜索使用 JSer.info Product Name API

$ curl "https://jser-product-name.deno.dev/?url=https://deno.com/blog/v1.19"
{"name":"Deno","url":"https://deno.com","releaseNoteProbability":0.7619047619047619,"releaseNoteVersion":"v1.19"}
$ curl "https://jser-product-name.deno.dev/?url=https://example.com"
null # 状态码是 400

数据提取逻辑使用 @jser/stat

### findItemsBetween(beginDate, endDate): JSerItem[]

返回两个日期之间的 JSerItem 数组

### getJSerWeeks(): JSerWeek[]

返回所有 JSerWeek 数组

### findJSerWeeksBetween(beginDate, endDate):  JSerWeek[]

返回两个日期之间的 JSerWeek 数组

### findJSerWeek(number): JSerWeek

编号从 1 开始。

返回指定编号的 JSerWeek。

### findWeekWithItem(itemObject): JSerWeek

返回包含 itemObject 的 JSerWeek。

### findItemWithURL(URL): JSerItem

返回匹配 URL 的 JSerItem。

更新日志

查看 发行页面

运行测试

安装开发依赖并运行 pnpm test

pnpm test

贡献

欢迎提交拉取请求和点赞。

对于 Bug 和功能请求,请创建一个 Issue

  1. 分支!
  2. 创建你的功能分支:git checkout -b my-new-feature
  3. 提交更改:git commit -am '添加一些功能'
  4. 推送到分支:git push origin my-new-feature
  5. 提交拉取请求 :D

作者

许可证

MIT © azu