Communityコーディング&開発github.com

mcp-apps-builder

MCPサーバー作業(新規作成、修正、デバッグ)に**必須**のスキル。mcp-useフレームワークのベストプラクティスとパターンを提供します。

mcp-apps-builder とは?

このスキルは、MCPサーバーの開発、修正、デバッグにおいて、**必ず最初に読むべき**ガイドラインとベストプラクティス集です。mcp-useフレームワークを使用するすべての開発者向けに設計されており、プロジェクトの新規スキャフォールディング、認証(WorkOS、Supabase、カスタム)、ツール・リソース・プロンプト・ウィジェットの実装、デプロイまでをカバーします。具体的なアーキテクチャの決定、セキュリティパターン、よくある落とし穴を詳細に説明しており、本番環境で堅牢なMCPサーバーを構築するために不可欠です。各機能を実装する際は、このスキル内のナビゲーションガイドに従い、対応するリファレンスファイル(例: tools.md, widgets/basics.md)を必ず参照してください。このスキル自体は簡易的な例のみを提供し、詳細な実装パターンは各リファレンスファイルに委ねられています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Shubhamsaboo/awesome-llm-apps/tree/main/generative_ui_agents/ai-mcp-app-builder/apps/mcp-use-server/.agent/skills/mcp-apps-builder

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

重要: このスキルの使い方

このファイルはナビゲーションガイドのみを提供します。MCPサーバーの機能を実装する前に、以下の手順を必ず実行してください:

  1. この概要を読んで、どのリファレンスファイルが関連するかを理解する
  2. 実装する機能に対応する特定のリファレンスファイルを常に読む
  3. それらのファイルの詳細なパターンを実装に適用する

このファイル内のクイックリファレンス例だけに頼らないでください - これらは最小限の例に過ぎません。リファレンスファイルには、重要なベストプラクティス、セキュリティに関する考慮事項、高度なパターンが含まれています。


MCPサーバーベストプラクティス

mcp-useを使用して、ツール、リソース、プロンプト、ウィジェットを備えたプロダクション対応のMCPサーバーを構築するための包括的なガイド。

⚠️ 最初に: 新規プロジェクトですか、それとも既存プロジェクトですか?

何をする前に、現在mcp-useプロジェクト内にいるかどうかを確認してください。

検出方法: ワークスペースに"mcp-use"を依存関係としてリストしたpackage.jsonがあるか、または"mcp-use/server"からインポートする.tsファイルがあるかを確認します。

├─ mcp-useプロジェクトが見つかった → スキャフォールディングしないでください。すでにプロジェクト内にいます。
│  └─ 機能を追加するには、以下の「クイックナビゲーション」に進んでください。
│
├─ mcp-useプロジェクトがない(空のディレクトリ、無関係なプロジェクト、またはグリーンフィールド)
│  └─ 最初に `npx create-mcp-use-app` でスキャフォールディングし、その後機能を追加します。
│     以下の「新規プロジェクトのスキャフォールディング」を参照してください。
│
└─ 無関係なプロジェクト(例: Next.jsアプリ)内にいて、ユーザーがMCPサーバーを希望する場合
   └─ ユーザーにどこに作成するか尋ね、そのディレクトリでスキャフォールディングします。
      既存の無関係なプロジェクトのルート内でスキャフォールディングしないでください。

MCPServerボイラープレート、package.json、プロジェクト構造を手動で作成しないでください。 CLIは、TypeScript設定、開発スクリプト、インスペクター統合、ホットリロード、ウィジェットコンパイルをセットアップしますが、これらは手動で再現するのが困難です。


新規プロジェクトのスキャフォールディング

npx create-mcp-use-app my-server
cd my-server
npm run dev

スキャフォールディングの詳細とCLIフラグについては、quickstart.md を参照してください。


クイックナビゲーション

構築するものに基づいてパスを選択してください:

🚀 基礎

対象: 新しい会話でMCP作業を開始するときは、常にこれらを最初に読んでください。後でアーキテクチャや概念を明確にするために参照してください。

  1. concepts.md - MCPプリミティブ(ツール、リソース、プロンプト、ウィジェット)とそれぞれを使用するタイミング
  2. architecture.md - サーバー構造(Honoベース)、ミドルウェアシステム、server.use() vs server.app
  3. quickstart.md - スキャフォールディング、セットアップ、最初のツール例
  4. deployment.md - Manufact Cloudへのデプロイ、セルフホスティング、Docker、デプロイメントの管理

ツール/リソース/ウィジェットのセクションに進む前に、これらをロードしてください。


🔐 認証を追加しますか?

対象: OAuth(WorkOS、Supabase、カスタム)でサーバーを保護する場合

  • overview.md

    • 対象: 初めて認証を追加する場合、ctx.authを理解する場合、またはプロバイダーを選択する場合
    • 内容: oauth設定、ユーザーコンテキストの形状、プロバイダー比較、よくある間違い
  • workos.md

    • 対象: 認証にWorkOS AuthKitを使用する場合
    • 内容: セットアップ、環境変数、DCR vs 事前登録、ロール/権限、WorkOS API呼び出し
  • supabase.md

    • 対象: 認証にSupabaseを使用する場合
    • 内容: セットアップ、環境変数、HS256 vs ES256、RLS対応API呼び出し
  • custom.md

    • 対象: 他のIDプロバイダー(GitHub、Okta、Azure AD、Googleなど)を使用する場合
    • 内容: カスタム検証、ユーザー情報の抽出、プロバイダー例

🔧 サーバーバックエンドの構築(UIなし)?

対象: MCP機能(アクション、データ、テンプレート)の実装。構築するプリミティブに応じて特定のファイルを読んでください。

  • tools.md

    • 対象: AIが呼び出せるバックエンドアクション(send-email、fetch-data、create-user)を作成する場合
    • 内容: ツール定義、スキーマ、アノテーション、コンテキスト、エラーハンドリング
  • resources.md

    • 対象: クライアントが取得できる読み取り専用データ(設定、ユーザープロファイル、ドキュメント)を公開する場合
    • 内容: 静的リソース、動的リソース、パラメーター化されたリソーステンプレート、URI補完
  • prompts.md

    • 対象: AIインタラクション(コードレビュー、要約)のための再利用可能なメッセージテンプレートを作成する場合
    • 内容: プロンプト定義、パラメーター化、引数補完、プロンプトのベストプラクティス
  • response-helpers.md

    • 対象: ツール/リソースからのレスポンス(テキスト、JSON、マークダウン、画像、エラー)をフォーマットする場合
    • 内容: text()、object()、markdown()、image()、error()、mix()

🎨 ビジュアルウィジェットの構築(インタラクティブUI)?

対象: データの閲覧、比較、選択のためのReactベースのビジュアルインターフェースを作成する場合

  • basics.md

    • 対象: 最初のウィジェットを作成する場合、または既存のツールにUIを追加する場合
    • 内容: ウィジェットのセットアップ、useWidget()フック、isPendingチェック、プロパティ処理
  • state.md

    • 対象: ウィジェット内のUI状態(選択、フィルター、タブ)を管理する場合
    • 内容: useState、setState、状態の永続性、ツール状態とウィジェット状態の使い分け
  • interactivity.md

    • 対象: ウィジェット内にボタン、フォームを追加したり、ツールを呼び出したりする場合
    • 内容: useCallTool()、フォーム処理、アクションボタン、楽観的更新
  • ui-guidelines.md

    • 対象: テーマ、レスポンシブレイアウト、アクセシビリティをサポートするウィジェットのスタイリング
    • 内容: useWidgetTheme()、ライト/ダークモード、autoSize、レイアウトパターン、CSSベストプラクティス
  • advanced.md

    • 対象: 非同期データ、エラーバウンダリー、パフォーマンス最適化を備えた複雑なウィジェットを構築する場合
    • 内容: ローディング状態、エラーハンドリング、メモ化、コード分割

📚 完全な例が必要ですか?

対象: 一般的なユースケースの完全な実装を確認したい場合

  • common-patterns.md
    • エンドツーエンドの例: 天気アプリ、TODOリスト、レシピブラウザ
    • 表示内容: サーバーコード + ウィジェットコード + コンテキスト内のベストプラクティス

ディシジョンツリー

何が必要ですか?

├─ スクラッチからの新規プロジェクト
│  └─> quickstart.md(スキャフォールディング + セットアップ)
│
├─ OAuth / ユーザー認証
│  └─> authentication/overview.md → プロバイダー固有のガイド
│
├─ シンプルなバックエンドアクション(UIなし)
│  └─> ツールを使用: server/tools.md
│
├─ クライアント向け読み取り専用データ
│  └─> リソースを使用: server/resources.md
│
├─ 再利用可能なプロンプトテンプレート
│  └─> プロンプトを使用: server/prompts.md
│
├─ ビジュアル/インタラクティブUI
│  └─> ウィジェットを使用: widgets/basics.md
│
└─ 本番環境にデプロイ
   └─> deployment.md(クラウドデプロイ、セルフホスティング、Docker)

コア原則

  1. アクションにはツール - 入力/出力を伴うバックエンド操作
  2. データにはリソース - クライアントが取得できる読み取り専用データ
  3. テンプレートにはプロンプト - 再利用可能なメッセージテンプレート
  4. UIにはウィジェット - 役立つ場合のビジュアルインターフェース
  5. まずモックデータ - 迅速にプロトタイプ作成し、後でAPIに接続

❌ よくある間違い

本番MCPサーバーで見られるこれらのアンチパターンを避けてください:

ツール定義

  • ❌ 生のオブジェクトを返し、レスポンスヘルパーを使用しない
    • ✅ text()、object()、widget()、error() ヘルパーを使用する
  • ❌ すべてのフィールドでZodスキーマの.describe()をスキップする
    • ✅ AIの理解を向上させるために、すべてのスキーマフィールドに説明を追加する
  • ❌ 入力検証やサニタイズがない
    • ✅ Zodで入力を検証し、ユーザー提供データをサニタイズする
  • ❌ error() ヘルパーを返す代わりにエラーをスローする
    • ✅ 優雅なエラーレスポンスには error("message") を使用する

ウィジェット開発

  • ❌ isPending を確認せずに props にアクセスする
    • ✅ 常に if (isPending) return <Loading/> を確認する
  • ❌ ウィジェットがサーバー状態(フィルター、選択)を処理する
    • ✅ ウィジェットは useState で自身のUI状態を管理する
  • ❌ McpUseProvider ラッパーや autoSize がない
    • ✅ ルートコンポーネントをラップ: <McpUseProvider autoSize>
  • ❌ テーマ対応していないインラインスタイル
    • ✅ ライト/ダークモードのサポートには useWidgetTheme() を使用する

セキュリティと本番環境

  • ❌ コード内のハードコードされたAPIキーやシークレット
    • ✅ process.env.API_KEY を使用し、.env.example にドキュメント化する
  • ❌ ツールハンドラーにエラーハンドリングがない
    • ✅ try/catchでラップし、失敗時は error() を返す
  • ❌ キャッシュなしの高コスト操作
    • ✅ TTL付きでAPI呼び出しや計算をキャッシュする
  • ❌ CORS設定がない
    • ✅ 本番デプロイメント用にCORSを設定する

🔒 黄金ルール

意見に基づくアーキテクチャガイドライン:

1. 1ツール = 1機能

広範なアクションを焦点を絞ったツールに分割する:

  • ❌ manage-users(曖昧すぎる)
  • ✅ create-user、delete-user、list-users

2. 完全なデータを upfront で返す

ツール呼び出しは高コストです。遅延ローディングは避ける:

  • ❌ list-products + get-product-details(2回の呼び出し)
  • ✅ list-products が詳細を含む完全なデータを返す

3. ウィジェットは自身の状態を所有する

UI状態は、別のツールではなく、ウィジェット内に存在する:

  • ❌ select-item ツール、set-filter ツール
  • ✅ ウィジェットは useState または setState で管理する

4. exposeAsTool のデフォルトは false

ウィジェットはデフォルトでリソースとしてのみ登録されます。カスタムツール(推奨)を使用するか、exposeAsTool: true を設定してウィジェットをモデルに公開します:

// ✅ 適切な型推論には4つのステップすべてが必要:

// ステップ1: スキーマを個別に定義
const propsSchema = z.object({
  title: z.string(),
  items: z.array(z.string()),
});

// ステップ2: メタデータでスキーマ変数を参照
export const widgetMetadata: WidgetMetadata = {
  description: "...",
  props: propsSchema, // ← インラインの z.object() ではない
  exposeAsTool: false,
};

// ステップ3: スキーマ変数から Props 型を推論
type Props = z.infer<typeof propsSchema>;

// ステップ4: 型付き Props を useWidget で使用
export default function MyWidget() {
  const { props, isPending } = useWidget<Props>(); // ← <Props> を追加
  // ...
}

⚠️ よくある間違い: ステップ1-2のみ行い、ステップ3-4をスキップする(型安全性が失われる)

5. 境界でのみ検証する

  • 内部コードとフレームワークの保証を信頼する
  • ユーザー入力、外部APIレスポンスを検証する
  • 発生し得ないシナリオに対するエラーハンドリングは追加しない

6. ブラウジング/比較にはウィジェットを優先する

迷ったら、ウィジェットを追加します。ビジュアルUIは以下を改善します:

  • 複数アイテムのブラウジング
  • データの横並び比較
  • インタラクティブな選択ワークフロー

クイックリファレンス

最小限のサーバー

import { MCPServer, text } from "mcp-use/server";
import { z } from "zod";

const server = new MCPServer({
  name: "my-server",
  title: "My Server",
  version: "1.0.0",
});

server.tool(
  {
    name: "greet",
    description: "ユーザーに挨拶する",
    schema: z.object({ name: z.string().describe("ユーザー名") }),
  },
  async ({ name }) => text("こんにちは " + name + "!"),
);

server.listen();

レスポンスヘルパー

ヘルパー使用する場合例
text()単純な文字列レスポンスtext("成功!")
object()構造化データobject({ status: "ok" })
markdown()フォーマット済みテキストmarkdown("# タイトル\n内容")
widget()ビジュアルUIwidget({ props: {...}, output: text(...) })
mix()複数のコンテンツmix(text("こんにちは"), image(url))
error()エラーレスポンスerror("データの取得に失敗しました")
resource()リソース参照の埋め込みresource("docs://guide", "text/markdown")

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

academic-researcher

Academic research assistant for literature reviews, paper analysis, and scholarly writing. Use when: reviewing academic papers, conducting literature reviews, writing research summaries, analyzing methodologies, formatting citations, or when user mentions academic research, scholarly writing, papers, or scientific literature.

chatgpt-app-builder

DEPRECATED: This skill has been replaced by `mcp-app-builder`. Check if `mcp-app-builder` is available in the skills folder. If not, install it: `npx skills install mcp-use/mcp-use --skill mcp-app-builder` Use `mcp-app-builder` instead of this skill. Build ChatGPT apps with interactive widgets using mcp-use and OpenAI Apps SDK. Use when creating ChatGPT apps, building MCP servers with widgets, defining React widgets, working with Apps SDK, or when user mentions ChatGPT widgets, mcp-use widgets, or Apps SDK development.

code-reviewer

Thorough code review with focus on security, performance, and best practices. Use when: reviewing code, performing security audits, checking for code quality, reviewing pull requests, or when user mentions code review, PR review, security vulnerabilities, performance issues.

content-creator

Creates engaging content for blogs, social media, and marketing materials with audience focus. Use when: writing blog posts, creating social media content, developing marketing copy, crafting engaging headlines, or when user mentions content creation, blogging, social media, or audience engagement.

content-writer

Writes marketing copy for landing pages, emails, and social media posts. Use when creating promotional content, sales copy, or brand messaging.

data-analyst

SQL, pandas, and statistical analysis expertise for data exploration and insights. Use when: analyzing data, writing SQL queries, using pandas, performing statistical analysis, or when user mentions data analysis, SQL, pandas, statistics, or needs help exploring datasets.

debugger

Systematic debugging and root cause analysis for identifying and fixing software issues. Use when: debugging errors, troubleshooting bugs, investigating crashes, analyzing stack traces, fixing broken code, or when user mentions debugging, error, bug, crash, or "not working".

decision-helper

Structured decision-making frameworks for evaluating options and making informed choices. Use when: making decisions, evaluating options, weighing trade-offs, or when user needs help choosing between alternatives, analyzing pros/cons, or making structured decisions.

deep-research

Comprehensive research assistant that synthesizes information from multiple sources with citations. Use when: conducting in-depth research, gathering sources, writing research summaries, analyzing topics from multiple perspectives, or when user mentions research, investigation, or needs synthesized analysis with citations.

editor

Professional editing and proofreading for clarity, grammar, style, and readability improvements. Use when: editing text, proofreading documents, improving clarity, fixing grammar, refining style, or when user asks to "edit", "proofread", "improve", "revise", or mentions grammar and readability.

email-drafter

Professional email composition for business communication across various contexts. Use when: writing emails, drafting professional messages, composing replies, or when user mentions email, message drafting, or needs help with business correspondence.

fact-checker

Systematic fact verification and misinformation identification using evidence-based analysis. Use when: verifying claims, checking facts, identifying misinformation, evaluating source credibility, or when user asks to "fact check", "verify", "is this true", or mentions claims that need validation.

fullstack-developer

Modern web development expertise covering React, Node.js, databases, and full-stack architecture. Use when: building web applications, developing APIs, creating frontends, setting up databases, deploying web apps, or when user mentions React, Next.js, Express, REST API, GraphQL, MongoDB, PostgreSQL, or full-stack development.

mcp-builder

DEPRECATED: This skill has been replaced by `mcp-app-builder`. Check if `mcp-app-builder` is available in the skills folder. If not, install it: `npx skills install mcp-use/mcp-use --skill mcp-app-builder` Use `mcp-app-builder` instead of this skill. Build Model Context Protocol (MCP) servers with mcp-use framework. Use when creating MCP servers, defining tools/resources/prompts, working with mcp-use, bootstrapping MCP projects, or when user mentions MCP development, tools, resources, or prompts.

meeting-notes

Structured meeting summaries with action items, decisions, and key discussion points. Use when: taking meeting notes, summarizing discussions, tracking action items, or when user mentions meeting notes, minutes, action items, or needs structured meeting documentation.

project-planner

Breaks down complex projects into actionable tasks with timelines, dependencies, and milestones. Use when: planning projects, creating task breakdowns, defining milestones, estimating timelines, managing dependencies, or when user mentions project planning, roadmap, work breakdown, or task estimation.

python-expert

Senior Python developer expertise for writing clean, efficient, and well-documented code. Use when: writing Python code, optimizing Python scripts, reviewing Python code for best practices, debugging Python issues, implementing type hints, or when user mentions Python, PEP 8, or needs help with Python data structures and algorithms.

sprint-planner

Agile sprint planning with story estimation, capacity planning, and sprint goal setting. Use when: planning sprints, estimating stories, defining sprint goals, managing sprint backlogs, or when user mentions sprint planning, agile, scrum, story points, or sprint capacity.

strategy-advisor

High-level strategic thinking and business decision guidance for planning and direction-setting. Use when: making strategic decisions, evaluating business options, setting direction, analyzing trade-offs, or when user mentions strategy, business planning, competitive analysis, or long-term planning.

technical-writer

Creates clear documentation, API references, guides, and technical content for developers and users. Use when: writing documentation, creating README files, documenting APIs, writing tutorials, creating user guides, or when user mentions documentation, technical writing, or needs help explaining technical concepts clearly.

関連スキル