NPM文档元数据服务

一个提供NPM包元数据和文档(包括README内容)获取服务的MCP服务器,通过本地缓存提高性能。

  • by bsmi021
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 bsmi021/mcp-npm_docs-server

使用说明

# NPM文档MCP服务器

一个MCP服务器,它提供了一个工具来获取NPM包的元数据和文档(包括README内容),使用本地缓存来提高性能。

特性

  • 使用以下命令获取包元数据和README内容 npms.io API.
  • 使用SQLite在本地缓存结果(better-sqlite3).
  • 提供 getNpmPackageDocs MCP工具。
  • 遵循标准的MCP服务器结构。

项目结构

  • /src:包含所有源代码。
    • /config:配置管理(ConfigurationManager).
    • /services:核心逻辑(NpmDocService, CacheService).
    • /tools:MCP工具定义(npmDocsTool.ts, npmDocsToolParams.ts).
    • /types:TypeScript接口和自定义错误(npmDocsTypes.ts).
    • /utils:共享实用功能(logger.ts, errors.ts).
    • createServer.ts:服务器实例创建和工具注册。
    • server.ts:主要应用程序入口点。
  • /dist:编译的JavaScript输出(由生成) npm run build).包含默认缓存数据库文件(npm-docs-cache.db).
  • package.json:项目元数据和依赖关系。
  • tsconfig.json:TypeScript编译器选项。
  • .eslintrc.json:ESLint配置。
  • .prettierrc.json:预分级配置。
  • .gitignore:Git忽略规则。

安装和设置

  1. 克隆存储库(如果适用)。

  2. 安装依赖关系:

    npm install
    
  3. 构建服务器:

    npm run build
    

    这将TypeScript代码编译为 dist/ 目录。

配置

可以使用环境变量配置服务器:

  • NPM_CACHE_TTL:缓存生存时间(秒)。(默认值: 86400 -24小时)
  • NPM_CACHE_DB_PATH:SQLite数据库文件的路径。(默认值: ./dist/npm-docs-cache.db -相对于构建后的项目根)。如果设置,则会覆盖默认值。可以是绝对路径,也可以是相对于启动服务器的当前工作目录的路径。
  • LOG_LEVEL:设置为 debug 用于详细日志记录。(默认值: info) 注: NPM_REGISTRY_URL 配置变量存在,但由于服务器使用 npms.io API

运行服务器

您可以使用Node直接运行编译后的服务器:

node dist/server.js

对于开发,请使用 dev 自动重新加载脚本:

npm run dev

MCP集成

要将此服务器与MCP客户端(如Cline)一起使用,请将其配置添加到MCP设置文件中(例如。, cline_mcp_settings.json):

{
  "mcpServers": {
    // ... other servers
    "npm-docs-server": {
      "command": "node",
      "args": [
        "/path/to/mcp-npm_docs-server/dist/server.js" // <-- IMPORTANT: Use the absolute path to the compiled server.js
      ],
      "env": {
        // Optional: Set environment variables here if needed
        // "NPM_CACHE_TTL": "3600",
        // "NPM_CACHE_DB_PATH": "/path/to/your/cache.db",
        // "LOG_LEVEL": "debug"
      },
      "disabled": false, // Ensure it's enabled
      "autoApprove": [
          "getNpmPackageDocs" // Optional: Auto-approve the tool
       ]
    }
    // ... other servers
  }
}

替换 /path/to/mcp-npm_docs-server 使用系统上此项目目录的实际绝对路径。

提供MCP工具

getNpmPackageDocs

检索指定NPM包的文档和元数据。

参数:

  • packageName (字符串, 必需的):NPM包的确切名称(例如,“react”、“axios”、“@azure/storage blob”)。案件敏感。
  • forceFresh (布尔值,可选,默认值: false):如果 true,绕过本地缓存并从npms.io API获取新数据。

退货:

符合以下条件的JSON对象 NpmDocumentation 接口,包括:

  • name
  • version
  • description
  • homepage (如果可用)
  • repository (URL,如果可用)
  • author (姓名,如有)
  • license (如果可用)
  • keywords (如果可用)
  • dependencies
  • devDependencies
  • readmeContent (包含README标记的字符串,如果可以通过npms.io获得)

示例用法(MCP工具调用):

<use_mcp_tool>
  <server_name>npm-docs-server</server_name>
  <tool_name>getNpmPackageDocs</tool_name>
  <arguments>
  {
    "packageName": "lodash",
    "forceFresh": false
  }
  </arguments>
</use_mcp_tool>

装订和格式化

  • 棉绒: npm run lint
  • 格式: npm run format

代码将在通过Husky提交时自动进行lint和格式化,并进行lint stage(如果安装了Husky)。