🍎

Claude Desktop用のDuckDuckGo検索サーバーをnpmパッケージとして公開してみた

2024/12/08に公開

はじめに

前回の記事では、Windows環境でTypeScriptを使ってModel Context Protocol(MCP)のDuckDuckGo検索サーバーを実装しました。今回は、このサーバーをnpmパッケージとして公開する過程を紹介します。

https://hamaruki.com/duckduckgo-search-for-windows-claude-desktop/

なぜ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"
    }
  }
}

パッケージのメンテナンス

バージョン更新手順

  1. package.jsonのバージョン番号を更新
  2. 変更をコミット
  3. npm publishを実行

将来の展望

  • 検索オプションの拡張
  • 多言語対応の強化
  • 検索結果のフィルタリング機能
  • キャッシュ機能の実装

まとめ

MCPサーバーをnpmパッケージとして公開することで、インストールと設定が大幅に簡単になりました。また、バージョン管理や更新の配布も容易になり、よりメンテナンス性の高いプロジェクトとなりました。

参考リンク

Discussion