🍎
Claude Desktop用のDuckDuckGo検索サーバーをnpmパッケージとして公開してみた
はじめに
前回の記事では、Windows環境でTypeScriptを使ってModel Context Protocol(MCP)のDuckDuckGo検索サーバーを実装しました。今回は、このサーバーをnpmパッケージとして公開する過程を紹介します。
なぜnpmパッケージとして公開するのか
MCPサーバーをnpmパッケージとして公開することで、以下のメリットがあります:
- 他のユーザーが簡単にインストールして使用可能
- バージョン管理が容易
- 依存関係の管理が自動化
- コミュニティへの貢献
パッケージの準備
package.jsonの設定
npmパッケージとして公開するために、package.jsonを以下のように設定しました:
{
"name": "@sunwood-ai-labs/duckduckgo-web-search",
"version": "0.1.0",
"description": "DuckDuckGo Web Search MCP Server - A simple web search implementation using DuckDuckGo API",
"type": "module",
"bin": {
"duckduckgo-web-search": "./build/index.js"
},
"files": [
"build"
],
"scripts": {
"build": "tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"",
"prepare": "npm run build",
"watch": "tsc --watch",
"inspector": "npx @modelcontextprotocol/inspector build/index.js"
},
"keywords": [
"mcp",
"duckduckgo",
"search",
"claude",
"model-context-protocol",
"sunwood-ai-labs"
],
"author": "Maki",
"license": "MIT",
"publishConfig": {
"access": "public"
},
"dependencies": {
"@modelcontextprotocol/sdk": "0.6.0",
"node-fetch": "^3.3.0"
},
"devDependencies": {
"@types/node": "^20.11.24",
"typescript": "^5.3.3"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Sunwood-ai-labs/duckduckgo-web-search.git"
},
"bugs": {
"url": "https://github.com/Sunwood-ai-labs/duckduckgo-web-search/issues"
},
"homepage": "https://github.com/Sunwood-ai-labs/duckduckgo-web-search#readme"
}
主なポイント:
- スコープ付きパッケージ名(@sunwood-ai-labs/)
- publicアクセス設定
- ビルド成果物の配布設定
ファイル構成
パッケージの構成は以下のようになっています:
.
├── build/ # コンパイルされたJavaScript
├── src/
│ └── index.ts # メインのソースコード
├── package.json
├── tsconfig.json
├── README.md
└── LICENSE
パッケージの公開手順
1. npmへのログイン
npm login --scope=@sunwood-ai-labs
2. ビルドの実行
npm run build
3. パッケージの公開
npm publish --access public
インストール方法
他のユーザーは以下のコマンドでパッケージをインストールできます:
npm install @sunwood-ai-labs/duckduckgo-web-search
Claude Desktopでの設定
パッケージをインストールしたら、Claude Desktopの設定ファイルを編集します:
Windows
%APPDATA%/Claude/claude_desktop_config.json
MacOS
~/Library/Application Support/Claude/claude_desktop_config.json
設定内容:
{
"mcpServers": {
"duckduckgo-web-search": {
"command": "/path/to/node_modules/.bin/duckduckgo-web-search"
}
}
}
パッケージのメンテナンス
バージョン更新手順
- package.jsonのバージョン番号を更新
- 変更をコミット
-
npm publish
を実行
将来の展望
- 検索オプションの拡張
- 多言語対応の強化
- 検索結果のフィルタリング機能
- キャッシュ機能の実装
まとめ
MCPサーバーをnpmパッケージとして公開することで、インストールと設定が大幅に簡単になりました。また、バージョン管理や更新の配布も容易になり、よりメンテナンス性の高いプロジェクトとなりました。
Discussion