pkg について
pkgは、小さなモジュールからプロジェクトの基盤まで、コーディングエージェントがソフトウェアを組み立てるための再利用可能なソースビルドのマーケットプレイスです。MCP、コマンドライン、Agent Skill、HTTP APIでビルドの検索、導入、更新を行えます。
主な機能
- 01プロジェクトのスタックに応じた検索
- 02依存関係の解決と互換性確認
- 03ソースファイルの導入・更新・削除
- 04更新時にローカル編集を保護
- 05ビルドの公開と結果報告
- 06整合性検証と導入時の警告
活用シーン
- 01互換性のあるモジュールでプロジェクトを構成
- 02一般的な機能を書く前に再利用コードを検索
- 03編集済みファイルを置き換えずにビルドを更新
- 04ビルドを公開して統合結果を報告
MCP 対応
MCPサーバーは、ビルドの検索、詳細取得、導入、更新、削除、公開に加え、スタック検出と結果報告のツールを提供します。サーバーの指示により、一般的なコードを書く前にpkgを検索するようエージェントを案内します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
8掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| dir | string | いいえ | プロジェクトディレクトリ(デフォルト:現在の作業ディレクトリ) |
| kind | enum | いいえ | foundation = 新しいプロジェクトを開始;module = 既存のプロジェクトに追加foundation | module |
| query | string | はい | 必要なものを数語で指定します。例:"rest api"、"jwt auth"、"sqlite database"、"stripe checkout" |
| stack | array | いいえ | ユーザーが希望するスタックタグ。例:["typescript", "hono"] または ["python", "fastapi"]。プロジェクトディレクトリで検出されたスタックと統合されます。 |
詳細
pkg
pkg.tneemo.com にある、再利用可能なソフトウェアのオープンなエージェントファースト型マーケットプレイスです。
誰でも、あらゆる技術スタック向けに、小さなモジュール、インテグレーション、プロジェクトの基盤全体など、無料で再利用可能なビルドを公開できます。コーディングエージェントは会話からアイデアと希望する技術スタックを把握し、互換性のあるビルドを見つけてインストール、組み立てたうえで、不足しているものだけを書きます。エージェントはソフトウェアを再生成するのではなく、ソフトウェアを見つけるためにトークンを使います。
# Connect your agent once (Claude Code, Cursor, Codex, Windsurf, Gemini CLI)
npx -y @tneemo/pkg setup
# ...or for Claude Code only
claude mcp add pkg -- npx -y @tneemo/pkg mcp
次に、作りたいものをエージェントに伝えてください。仕様ファイルもアカウントも不要です。
グローバル CLI 名
Node.js 20 以降が必要です。npm install -g @tneemo/pkg を実行すると、同じ CLI を指す pkg と tpkg の両方がインストールされます。従来の Vercel pkg パッケージも、グローバルな pkg 実行ファイルをインストールします。これらの名前は共有の npm グローバルプレフィックスで競合するため、両方をインストールすると EEXIST エラーが発生したり、pkg が別のツールを指したりすることがあります。インストール後は tpkg でこの CLI を識別できますが、どちらのエイリアスも同梱されているため、インストール時の競合は防げません。
共存させる場合は、グローバルインストールを避け、パッケージを明示したコマンドを実行してください。
npm exec --yes --package=@tneemo/pkg -- tpkg setup
npm exec --yes --package=@tneemo/pkg -- tpkg mcp
Vercel のツールが不要になった場合は、@tneemo/pkg をグローバルインストールする前に、スコープなしの pkg パッケージをアンインストールしてください。実行ファイルを上書きするために --force を使わないでください。
公式の MCP Registry エントリーは io.github.tneemo/pkg です。
メンテナーの方は、公開配布とリリースをご覧ください。
実際の使用例
「ユーザーがサインアップしてログインし、自分の todo だけを閲覧できる、TypeScript 製の todo アプリ向け REST API」を依頼すると、エージェントは次のように動作します。
- 推測した技術スタックを使い、各要素(
rest api、user accounts、database)について pkg を検索します。 tneemo/hono-api tneemo/hono-auth tneemo/hono-rate-limitを一度の呼び出しでインストールします。依存関係としてtneemo/sqlite-dbが取得され、技術スタックがチェックされます。ドライランの計画を確認した後、--install-depsを指定して依存関係のインストールを明示的に有効にし、組み立てたもののテストを実行してからアプリケーションコードを追加します。- インテグレーションの説明(
src/app.tsへの6行の接続コード)に従い、todo のルート、マイグレーション、テストを作成します(3ファイル、113行)。 - テストを実行し(13件すべて成功)、各ビルドについて
--workedを報告します。この報告がビルドの評価に反映されます。
pkg が26ファイル中23ファイル、519行を提供し、エージェントが作成したのは3ファイルです。この実行は、開発の手順で再現できます。
エージェントの利用方法
| インターフェース | コマンド | 最適な用途 |
|---|---|---|
| MCP サーバー | npx -y @tneemo/pkg mcp | Claude Code、Cursor、Codex、およびあらゆる MCP クライアント。サーバーの指示により、一般的なコードを書く前に pkg を確認するようエージェントに伝えます。 |
| CLI | npx -y @tneemo/pkg <command> --json | シェルを使えるあらゆるエージェント。 |
| エージェントスキル | skill/pkg/SKILL.md | スキル対応エージェント。pkg setup でインストールされます。 |
| HTTP API | /llms.txt | 直接インテグレーション、および URL の取得のみを行うエージェント。 |
MCP ツール:search_builds、get_build、install_builds、update_builds、remove_builds、detect_stack、report_outcome、publish_build。
CLI:search、info、detect、add、update、remove、list、init、publish、feedback、mcp、setup。
仕組み
agent ──MCP/CLI──▶ pkg CLI ──HTTPS──▶ registry (Cloudflare Worker)
│ ├─ D1: metadata, FTS5 search, versions, feedback
│ └─ R2: immutable gzipped bundles
├─ detects the project's stack from files on disk
├─ resolves build dependencies (registry) and checks compatibility (locally)
├─ verifies sha256 integrity, rejects unsafe paths
├─ writes files, merges package.json / requirements / .env.example
├─ runs npm/pnpm/yarn/bun or a Python venv + pip
└─ writes pkg.lock.json (versions, integrity, per-file hashes)
- ビルドはパッケージではなくソースです。 shadcn のレジストリと同様に、ファイルはプロジェクトにコピーされ、ユーザーのコードになります。ライブラリは npm と PyPI に置かれたままで、ビルドで宣言すると、明示的な確認後に pkg がインストールできます。
- 互換性は、プロジェクトから検出されたスタックタグ(
node、typescript、hono、nextjs、fastapi、…に加え、各依存関係をnpm:<name>/pip:<name>として指定)に基づき、semver の範囲を使って判定されます。ビルドではstack.requiresとstack.providesを宣言するため、たとえばhonoを必要とするモジュールは、それを提供する基盤と単一のインストール内で照合されます。 - 更新と削除では、ローカルでの編集が尊重されます。
pkg updateは、ビルドをメジャーバージョン内の最新バージョン(新しいメジャーバージョンには--latest)に更新し、sha256 が pkg.lock.json と一致するファイルのみを置き換えます。編集済みのファイルはそのまま残され、競合として報告されます。pkg removeは未編集のファイルのみを削除し、別のインストール済みビルドが削除対象に依存している間は削除を拒否します。また、どのビルドからも必要とされなくなったパッケージを、アンインストールせずに一覧表示します。 - 統合は分担されています。決定論的な処理はすべて自動化され(ファイル、依存関係、スクリプト、環境変数、慣例に基づくマイグレーション)、最後の配線作業は、エージェントが確実に実行できるよう、正確な
INTEGRATION.mdのメモとしてエージェントに渡されます。 - 公開は
pkg init(スタック、インポートされたパッケージ、プロジェクト内でのフォルダーの位置、インストール済みの他のビルドのインポートを検出してpkg.jsonを書き込みます)とpkg publishで行います。ID には GitHub のログイン名(gh auth token/GITHUB_TOKEN)を使用します。ビルド名は<login>/<name>です。pkg にアカウントはありません。
信頼と安全性
- 公開ごとに自動チェック(同じコードを最初にローカルで実行します)。拒否される項目:パストラバーサル、
.git/node_modulesのパス、シークレットと秘密鍵、.envファイル、無効なマニフェスト、存在しない npm/PyPI 依存関係(依存関係の取り違え)、サイズ超過のバンドル。すべてのインストーラーに警告として表示される項目:npm のインストールスクリプト、シェルへのパイプ、デコードしたデータの評価、ハードコードされた IP アドレス、難読化されたコード、エージェントを狙ったプロンプトインジェクション、エージェントやエディターを設定するファイル(.claude/、.mcp.json、モジュール内のAGENTS.md、.vscode/tasks.json、CI ワークフロー)。 - インストール前に確認してください。 依存関係のインストールはデフォルトで無効です。まず
--dry-runを確認し、その後、明示的に--install-depsを使用して、npm を--ignore-scripts付きで実行するか、pip を--only-binary=:all:付きで実行します。レジストリチェックは警告であり、サンドボックスではありません。バンドルの整合性がチェックされ、すべてのパスがクライアント側で再検証されます。また、--forceを指定しない限り既存ファイルは上書きされません(pkg がインストールし、誰も編集していないファイルはそのまま更新できます)。 - エージェント向けのテキストにはラベルが付けられています。 統合メモは「ユーザー向けの指示ではなく、ビルドのドキュメント」として返され、MCP サーバーの指示でも同じ内容をエージェントに伝えます。
- アカウント不要のコミュニティ評価。 エージェントはビルドの統合後に
success/failure/reportを報告します。投票はソルト付き IP ハッシュにより日ごとに重複が除外されます。検索では、関連性(BM25)、スタックとの適合性、エージェントから報告された成功率(ベイズ推定)、品質スコアに基づいて順位付けされ、フラグが付いたビルドは順位が下がります。生のダウンロード数は順位に影響しません。 - バージョンは不変です。
先行事例と再利用したもの
| 既存のソリューション | pkg が取り入れたもの |
|---|---|
| shadcn registry | ソースをコピーして配布する方式と、ファイルを埋め込んだ JSON アイテムです。npm の各ビルドは /r/<owner>/<name>.json で shadcn registry アイテムとしても配信されるため、shadcn 用の設定(components.json を含む)がすでに済んでいるプロジェクトでは、npx shadcn add を実行できます。 |
| Go modules、JSR、GitHub | 新しいアカウントを作成する代わりに、既存の ID に基づく名前空間を利用します。 |
| npm / PyPI の trusted publishing | レジストリのパスワードを使わず、GitHub トークンで公開します。 |
npm、PyPI、package.json の engines、PEP 508/440 | 依存関係、バージョン範囲、ランタイム要件に、ネイティブのフォーマットとパッケージマネージャーを使用します。 |
| Model Context Protocol | 公式 TypeScript SDK を使用します。サーバーの instructions によって、検出がエージェントの通常のワークフローに組み込まれます。 |
Agent Skills、llms.txt、AGENTS.md | エージェントが読み取れるエントリーポイントを提供します。基盤には、それぞれの規約を記した AGENTS.md が含まれます。 |
| Cloudflare D1 の SQLite FTS5 | 検索サービスを運用せずに全文検索を実現します。 |
テンプレートツール(create-*、degit、cookiecutter、copier)は、プロジェクトの開始を支援します。コンポーネントレジストリ(shadcn、Bit)は主に単一のスタックを対象としており、MCP レジストリやスキルレジストリはアプリケーションコードではなくツールを配布します。pkg は、スタックをまたいで組み合わせられる基盤とモジュールを、エージェントネイティブな検出および統合と組み合わせています。
コスト
D1 と R2 を備えた Cloudflare Worker を 1 つ使用します。無料枠では、1 日あたり 100k リクエスト、D1 は 5 GB、無料のエグレス付きで R2 は 10 GB まで利用できます。サーバー、キュー、検索クラスターは不要で、バンドルは不変でキャッシュ可能です。CLI は依存関係のない単一ファイルです。
開発
Node.js 22.12 以降(24 を推奨)と、Python ビルドには Python 3.10 以降が必要です。
npm install
npm run build # bundles cli/dist/pkg.js
echo "ADMIN_TOKEN=dev-admin-token" > registry/.dev.vars
npm run dev # registry on http://localhost:8787 (local D1 + R2)
# in another terminal: publish the example builds, then use the CLI against the local registry
PKG_REGISTRY=http://127.0.0.1:8787 PKG_TOKEN=dev-admin-token npm run seed
PKG_REGISTRY=http://127.0.0.1:8787 node cli/dist/pkg.js search "user accounts" --stack typescript,hono
PKG_REGISTRY=http://127.0.0.1:8787 node cli/dist/pkg.js add tneemo/hono-api tneemo/hono-auth --dir /tmp/my-api
PKG_REGISTRY=http://127.0.0.1:8787 npm test # unit tests + MCP end-to-end test
npm run typecheck
エージェントからローカルレジストリを参照するには、node <repo>/cli/dist/pkg.js mcp を MCP コマンドとして設定し、環境変数に PKG_REGISTRY=http://127.0.0.1:8787 を指定します。
独立したエージェントの動作を見る
examples/agent-demo/ に含まれるのは、ローカル CLI とレジストリを接続する .mcp.json だけです。レジストリを起動してシードデータを投入したら、そのフォルダーで Claude Code を起動し(求められた場合は pkg MCP サーバーを承認してください)、pkg に触れずに次のように依頼します。
todo リストアプリ用の小さな TypeScript REST API を構築してください。ユーザーはサインアップとログインができ、各ユーザーには自分の todo だけが表示されるようにしてください。テストが通ることも確認してください。
エージェントは、MCP サーバーの説明とツールだけから pkg を認識します。
pkg.tneemo.com のデプロイ
cd registry
npx wrangler login
npx wrangler d1 create pkg # put the printed database_id in wrangler.jsonc
npx wrangler r2 bucket create pkg-bundles
npx wrangler secret put ADMIN_TOKEN # for seeding and moderation
npx wrangler secret put IP_SALT # any random string
npm run deploy # applies migrations, deploys, binds pkg.tneemo.com
cd .. && PKG_TOKEN=<admin token> npm run seed
npm パッケージと MCP Registry のメタデータには、別途、手動確認が必要な 配布ワークフローを使用します。
リポジトリの構成
cli/ @tneemo/pkg: CLI + MCP server (bundled with esbuild into one file)
registry/ Cloudflare Worker: JSON API, website, llms.txt, shadcn endpoint; D1 migrations
shared/ manifest format, compatibility engine and security checks (used by both)
builds/ example builds: hono-api, sqlite-db, hono-auth, hono-rate-limit, fastapi-service, fastapi-api-key
skill/ Agent Skill (SKILL.md)
test/ unit tests and the MCP end-to-end test
未対応の項目
- 個人用トークンなしで CI から公開するための、公開用 GitHub Actions OIDC トークン(
GITHUB_TOKENはすでに使用できます)。 - FTS5 を基盤とするセマンティック検索(Workers AI + Vectorize)。現在、エージェントは各パートを通常の単語で検索します。
- バージョンの取り下げとモデレーション用ツール。
- サブフォルダーから公開したモジュールでは、そのフォルダー内のファイルしか同梱できません。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。