@orgsoft/jsr一个用于探索跨jsr.io包的MCP服务器、CLI工具和TypeScript库。
JSR是一个现代的JavaScript仓库,是NPM的替代品,提供丰富的TypeScript支持、现代特性以及与Deno的无缝集成。
@orgsoft/jsr的特点包括由Orama驱动的语义搜索、包下载分析以及从任何包或范围中检索文件和文档的能力。这提升了你的开发工作流程,特别是在使用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服务器的jsr docs命令必要,仅用于运行deno doc,这是一个安全的只读命令。如果不需要此功能,可以省略该权限。MCP服务器会优雅地处理这种情况,不宣传文档工具。
| 工具 | 描述 | 参数 | 示例用法 |
|---|---|---|---|
search | 使用语义搜索搜索JSR包 | query, limit (可选) | search query="web framework" limit=1.0 |
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 <query> [--limit=10] [--enhanced] | search "web framework" --limit 5 |
similar | 查找与给定包相似的包 | similar <package> [--limit=6] | similar "@std/http" --limit 3 |
details | 获取详细的包信息 | details <scope> <package> | details std path |
downloads | 查看全面的下载统计 | downloads <scope> <package> | downloads std http |
scope | 列出JSR范围内的所有包 | scope <scope-name> | scope std |
file | 从包中获取文件内容 | file <scope> <package> <version> <file-path> | file std http 1.0.0 mod.ts |
exists | 检查包是否存在 | exists <scope> <package> | 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 | 命令行界面 | 实现包搜索、发现和分析的命令行 |
mcp.ts | MCP服务器 | 提供工具供AI助手与JSR交互的模型上下文协议服务器 |
common.ts | 核心API库 | 核心函数、类型和实用工具,用于JSR API集成和Orama搜索操作 |
format.ts | 输出格式化 | 搜索结果、包详情和下载统计的字符串格式化和呈现逻辑 |
README.md | 主要文档 | 全面的使用指南、示例和API参考 |
浏览此包的完整TypeScript文档:jsr:@orgsoft/jsr/doc。