使用说明
# NPM文档MCP服务器
一个MCP服务器,它提供了一个工具来获取NPM包的元数据和文档(包括README内容),使用本地缓存来提高性能。
特性
- 使用以下命令获取包元数据和README内容 npms.io API.
- 使用SQLite在本地缓存结果(
better-sqlite3). - 提供
getNpmPackageDocsMCP工具。 - 遵循标准的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忽略规则。
安装和设置
-
克隆存储库(如果适用)。
-
安装依赖关系:
npm install -
构建服务器:
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.ioAPI
运行服务器
您可以使用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 接口,包括:
nameversiondescriptionhomepage(如果可用)repository(URL,如果可用)author(姓名,如有)license(如果可用)keywords(如果可用)dependenciesdevDependenciesreadmeContent(包含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)。
