allfeatures について
allfeaturesは、MCPクライアントやサーバーの開発者向けにプロトコル機能を試せるデモです。複数のコンテンツ形式やリソース、長時間処理に加え、クライアント側の能力を要する機能も扱い、未対応時は明確にエラーを返します。
主な機能
- 01エコーと加算のツール
- 02長時間処理のデモ
- 03テキスト、画像、構造化結果
- 04リソースリンクと埋め込みリソース
- 05サンプリング、ルーツ、ユーザー入力
活用シーン
- 01MCP機能のクライアント対応確認
- 02能力不足時のエラー確認
- 03画像やリソース応答の試用
MCP 対応
stdioのMCPサーバーとしてデモ用ツールを公開します。サンプリング、ルーツ、ユーザー入力では接続クライアントの対応能力を利用します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
allfeatures
allfeatures は、MCP プロトコルそのものを紹介するショーケースです。1 つの仕事をうまくこなすのではなく、クライアントとサーバーが合意する必要のある各要素を試します。プレーンテキストの結果、画像、注釈、埋め込みリソース、リソースリンク、構造化コンテンツ、長時間実行される呼び出し、そして接続されたクライアントの協力がなければ機能しない 3 つの機能、つまりサンプリング、ルート、エリシテーションです。クライアントを開発している場合は、allfeatures に接続して各機能が動作する様子を確認してください(クライアントが機能を提供していない場合は、明確なエラーとともに正直に失敗します)。
インストール
npx @reneturcios/allfeatures echo hello
または、コンテナイメージを実行します。
docker run -i ghcr.io/cloudcorprecords/allfeatures
コンテナは、デフォルトで MCP サーバーとして動作します(下記を参照)。CLI として使用するには、CLI 引数を渡してください。
CLI
クライアントなしで使える 2 つのツールだけを、コマンドとして公開しています。
allfeatures echo hello there # hello there
allfeatures add 2 3 # 5
allfeatures add -1.5 0.5 # -1
allfeatures --version # 0.1.0
終了コード:成功時は 0、引数を処理できない場合(たとえば、add に数値以外を指定した場合)は 1、使用方法に誤りがある場合は 2 です。
MCP サーバー
1 つの実行ファイルで、どちらの使い方にも対応します。mcp サブコマンドは、stdio MCP サーバーを起動します。
npx -y @reneturcios/allfeatures mcp
MCP クライアントの設定:
{
"mcpServers": {
"allfeatures": {
"command": "npx",
"args": ["-y", "@reneturcios/allfeatures", "mcp"]
}
}
}
ツール
| ツール | 入力 | 戻り値 |
|---|---|---|
echo | message(文字列、必須) | メッセージを変更せず、テキストとして返します。 |
add | a、b(数値、必須) | 合計をテキストとして返します。 |
longRunningOperation | duration(数値、省略可能、秒単位、デフォルト 10)、steps(数値、省略可能、デフォルト 5) | 指定された時間をステップに分けて待機し、その後、完了を示すメッセージを返します。 |
printEnv | — | サーバープロセスの環境変数を JSON テキストとして返します。 |
sampleLLM | prompt(文字列、必須)、maxTokens(数値、省略可能) | クライアントのモデルからサンプリングした補完結果(下記を参照)。 |
getTinyImage | — | 1x1 の透明な PNG を画像コンテンツとして返し、短いテキストメモも添えます。 |
annotatedMessage | messageType("error"/"success"/"debug"、必須)、includeImage(ブール値、省略可能) | メッセージの種類に応じて対象者と優先度が変わる注釈付きテキストメッセージです。includeImage が true の場合は、小さな画像が添付されます。エラーの優先度はユーザーとアシスタントに対して 1、成功の優先度はユーザーに対して 0.7、デバッグメモの優先度はアシスタントに対して 0.3 です。 |
getResourceReference | resourceId(数値、必須) | URI が demo://resource/<resourceId> の埋め込みテキストリソースです。 |
getResourceLinks | count(数値、必須、1–10) | 指定された数の resource_link アイテムです。1–10 の範囲外の値はエラーになります。 |
structuredContent | location(文字列、必須) | 指定された場所の固定サンプル天気情報(72°F、晴れ、湿度 45%)を、structuredContent として返し、対応する JSON テキストも添えます。 |
listRoots | — | クライアントのルートを JSON テキストとして返します(下記を参照)。 |
startElicitation | — | ユーザーに短い応答を求めた結果を返します(下記を参照)。 |
zip | — | hello.txt というファイルを 1 つ格納した、実際の最小 ZIP アーカイブを含む埋め込み blob リソース(application/zip)です。アーカイブは、アーカイブライブラリを使わず、CRC32、ローカルヘッダー、セントラルディレクトリを含め、バイト単位で組み立てられます。 |
クライアント機能ツール
sampleLLM、listRoots、startElicitation は、サーバーだけでは応答できません。接続されたクライアントに、モデルのサンプリング、ルートの一覧表示、ユーザーへのプロンプト表示を依頼します。allfeatures は、初期化時にクライアントが対応する機能を通知した場合にのみ、これらのリクエストを送信します。通知されていない場合、ツールはその旨を明示するエラー結果を返します。サーバーが、もっともらしい回答を捏造することはありません。
開発
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network
npm run dev # run the CLI from source via tsx
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。