@orgsoft/jsr 是一个 MCP 服务器、CLI 实用工具和 TypeScript 库,用于探索 jsr.io 上的软件包。JSR 是一个现代 JavaScript 仓库,可作为 NPM 的替代方案,它提供丰富的 TypeScript 支持、现代特性,并能与 Deno 无缝集成。
@orgsoft/jsr 具备由 Orama 驱动的语义搜索、软件包下载分析功能,还能从 jsr 上的任何软件包或作用域中检索文件和文档。这将提升你的开发工作流程,尤其是在将 Deno 与 AI 编码工具结合使用时。
首先,请确保已安装最新版本的 Deno。
将以下内容添加到你的 claude_desktop_config.json 文件中:
{
"mcpServers": {
"jsr": {
"command": "path/to/your/deno",
"args": [
"run",
"--allow-net=jsr.io,api.jsr.io,cloud.orama.run",
"--allow-run",
"jsr:@orgsoft/jsr@^1",
"mcp"
]
}
}
}
⚠️ 重要提示
请将
path/to/your/deno命令替换为你实际安装 Deno 的完整路径才能正常工作。(可使用which deno来查找该路径)
除了 Deno 之外,你无需安装任何其他东西即可使用该命令行实用工具。
# 在 JSR 上搜索 Web 框架
deno run jsr:@orgsoft/jsr search "web frameworks"
# 查找与本项目类似的项目
deno run jsr:@orgsoft/jsr similar @orgsoft/jsr
# 与上述操作相同,但提前授予权限
deno run --allow-net --allow-run jsr:@orgsoft/jsr similar @orgsoft/jsr
你也可以使用 deno install 进行永久安装:
# 使用默认名称 "jsr" 进行安装
deno install -frAg jsr:@orgsoft/jsr # --name [or-some-other-name]
# 获取 @std/http 的详细信息
jsr details @std/http
# 获取 @std/http 的文档
jsr docs @std/http
# 启动 MCP 服务器
jsr mcp
⚠️ 重要提示
为提高安全性,建议使用 必要的最小权限 并 指定固定的版本号。你应该始终审查在计算机上执行的代码,由于 Deno 具有权限系统、开源程序和沙盒模型,因此它非常适合进行此类审查。
请注意,这些安装说明中包含的
--allow-run权限 仅在 MCP 服务器的 jsrdocs命令中需要,该命令仅用于运行deno doc,这是一个安全的只读命令。如果不需要此功能,可以省略该权限。MCP 服务器将通过不宣传文档工具来优雅地处理这种情况。
| 工具 | 描述 | 参数 | 示例用法 |
|---|---|---|---|
search |
使用语义搜索 JSR 软件包 | query,limit(可选) |
search query="web framework" limit=10 |
find_similar |
查找与特定软件包相似的软件包 | packageName,limit(可选) |
find_similar packageName="@std/http" limit=6 |
discover |
按类别/用例发现软件包 | category,limit(可选) |
discover category="web frameworks" limit=8 |
compare |
并排比较多个软件包 | packages(数组) |
compare packages=["@std/testing", "@deno/testing"] |
scope_packages |
浏览 JSR 作用域中的所有软件包 | scope |
scope_packages scope="std" |
package_details |
获取软件包的详细信息 | scope,packageName |
package_details scope="std" packageName="http" |
package_downloads |
查看滚动窗口的下载统计信息 | scope,packageName |
package_downloads scope="std" packageName="http" |
package_file |
检索软件包文件内容 | scope,packageName,version,filePath |
package_file scope="std" packageName="http" version="1.0.0" filePath="mod.ts" |
docs |
获取软件包文档 | module |
docs module="@std/path" |
search_status |
检查搜索功能和连接 | 无 | search_status |
| 参数 | 类型 | 描述 | 默认值 | 使用场景 |
|---|---|---|---|---|
query |
字符串 | 搜索查询(自然语言或关键词) | 必需 | search |
packageName |
字符串 | 带或不带作用域的软件包名称 | 必需 | find_similar、package_details、package_downloads、package_file |
category |
字符串 | 用例或技术类别 | 必需 | discover |
packages |
数组 | 要比较的软件包名称数组 | 必需 | compare |
scope |
字符串 | JSR 作用域名称(例如,"std"、"orgsoft") | 必需 | scope_packages、package_details、package_downloads、package_file |
version |
字符串 | 软件包版本(例如,"1.0.0"、"latest") | 必需 | package_file |
filePath |
字符串 | 软件包内文件的路径 | 必需 | package_file |
module |
字符串 | 模块标识符(例如,"@std/path") | 必需 | docs |
limit |
数字 | 最大结果数 | 6 - 20(可变) | search、find_similar、discover |
# 搜索 Web 框架
search query="web framework" limit=10
# 查找与 @std/http 类似的软件包
find_similar packageName="@std/http" limit=6
# 发现机器学习库
discover category="machine learning" limit=8
# 比较测试框架
compare packages=["@std/testing", "@deno/testing", "@fresh/testing"]
# 浏览 @std 作用域中的所有软件包
scope_packages scope="std"
# 获取软件包的详细信息
package_details scope="std" packageName="http"
# 查看滚动窗口的下载统计信息
package_downloads scope="std" packageName="http"
# 从软件包版本中检索特定文件
package_file scope="std" packageName="http" version="1.0.0" filePath="mod.ts"
# 获取软件包文档
docs module="@std/path"
# 检查搜索系统状态
search_status
该软件包包含一个全面的命令行界面,用于所有 JSR 搜索和分析功能。
| 命令 | 描述 | 用法 | 示例 |
|---|---|---|---|
search |
使用语义搜索 JSR 软件包 | search |
search "web framework" --limit 5 |
similar |
查找与给定软件包相似的软件包 | similar
|
similar "@std/http" --limit 3 |
details |
获取软件包的详细信息 | details |
details std path |
downloads |
查看全面的下载统计信息 | downloads |
downloads std http |
scope |
列出 JSR 作用域中的所有软件包 | scope |
scope std |
file |
从软件包中检索文件内容 | file |
file std http 1.0.0 mod.ts |
exists |
检查软件包是否存在 | exists |
exists std nonexistent |
help |
显示帮助信息 | help [command] |
help search |
version |
显示 CLI 版本 | version |
version |
| 选项 | 描述 | 命令 | 示例 |
|---|---|---|---|
--limit=N |
限制结果数量 | search、similar |
--limit=5 |
--enhanced |
使用增强相关性搜索模式 | search |
--enhanced |
--help, -h |
显示帮助信息 | 所有 | --help |
# 搜索 Web 框架
deno run jsr:@orgsoft/jsr search "web framework" --limit 5
# 查找与 @std/http 类似的软件包
deno run jsr:@orgsoft/jsr similar @std/http --limit 3
# 获取软件包的详细信息
deno run jsr:@orgsoft/jsr details @std/path
# 查看滚动窗口的下载统计信息
deno run jsr:@orgsoft/jsr downloads std http
# 列出 @std 作用域中的所有软件包
deno run jsr:@orgsoft/jsr scope std
# 从软件包版本中获取特定文件
deno run jsr:@orgsoft/jsr file @std/http 1.0.0 mod.ts
# 检查软件包是否存在
deno run jsr:@orgsoft/jsr exists @std/nonexistent
# 使用增强相关性进行搜索
deno run jsr:@orgsoft/jsr search "http client" --enhanced --limit 10
import { relevanceSearch } from "jsr:@orgsoft/jsr";
// 基础搜索
const results = await relevanceSearch("web framework", { limit: 10 });
console.log(results.hits.map(hit => hit.document.name));
import { getPackageDetails, getPackageDownloadSummary } from "jsr:@orgsoft/jsr";
// 获取软件包的详细信息
const packageInfo = await getPackageDetails("std", "http");
console.log(packageInfo);
// 获取全面的下载统计信息
const downloads = await getPackageDownloadSummary("std", "http");
console.log(`总下载量: ${downloads.totalDownloads}`);
console.log(`每周平均下载量: ${downloads.weeklyAverage}`);
console.log(`最近每周的下载总量: ${downloads.weeklySums.join(', ')}`);
import { findSimilarPackages } from "jsr:@orgsoft/jsr"
const similar = await findSimilarPackages("@std/http", { limit: 5 });
similar.forEach(pkg => {
console.log(`${pkg.document.scope}/${pkg.document.name} - 得分: ${pkg.score}`);
});
| 文件 | 用途 | 描述 |
|---|---|---|
mod.ts |
主入口点 | 主要模块,导出所有公共函数并处理 CLI 和 MCP 服务器模式之间的路由 |
cli.ts |
命令行界面 | CLI 实现,包含用于软件包搜索、发现和分析的命令 |
mcp.ts |
MCP 服务器 | 模型上下文协议服务器,为 AI 助手提供与 JSR 交互的工具 |
common.ts |
核心 API 库 | 用于 JSR API 集成和 Orama 搜索操作的核心函数、类型和实用工具 |
format.ts |
输出格式化 | 用于搜索结果、软件包详细信息和下载统计信息的字符串格式化和呈现逻辑 |
README.md |
主文档 | 全面的使用指南、示例和 API 参考 |
你可以在 jsr:@orgsoft/jsr/doc 浏览该软件包的完整 TypeScript 文档。