MCPServerApp について
MCPServerAppは、テキスト処理、執筆、分析、ビジネスコンテンツ向けの.NET 9製MCPサーバーです。テキストユーティリティから創作・教育コンテンツ生成まで、50以上のツールを提供します。
主な機能
- 0150以上のテキスト・AIツール
- 02感情・バイアス・可読性の分析
- 03創作とコンテンツ生成
- 04ビジネス・教育向けツール
- 05翻訳とテキスト処理
活用シーン
- 01文章のトーン、感情、可読性の評価
- 02物語、詩、キャラクター設定の作成
- 03スローガン、製品名、メール件名の生成
- 04概念説明、チュートリアル、討論論点の作成
MCP 対応
互換性のあるクライアントに、MCP経由でツールを公開します。多くの文章生成・分析ツールはIChatClientを利用します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCPServerApp
.NET 9 で構築された包括的な Model Context Protocol(MCP)サーバーアプリケーションです。テキスト処理、クリエイティブライティング、分析、ビジネスアプリケーション向けの、AI を活用した 50 以上のツールを備えています。
🚀 特長
- AI を活用した 50 以上のツール:さまざまなタスクに対応する、IChatClient を利用した幅広いツール群
- テキスト分析:感情分析、バイアス検出、読みやすさの評価、文章の改善
- クリエイティブライティング:物語の生成、詩の作成、キャラクター開発、対話のシミュレーション
- ビジネスツール:メール件名の生成、お客様の声、スローガン、商品名
- 教育:概念の説明、チュートリアルの概要、ディベートの論点、記憶を助ける工夫
- 言語処理:翻訳、韻の生成、単語の連想、代替案の提案
- コミュニケーション:会話のきっかけ、アイスブレイク、面接の質問
🛠️ 技術スタック
- .NET 9:最新の .NET フレームワーク
- Model Context Protocol(MCP):AI ツール向けの通信プロトコル
- Microsoft.Extensions.AI:AI の抽象化機能とチャットクライアントのサポート
- Docker:コンテナー化のサポート
- C#:主要なプログラミング言語
📋 前提条件
- .NET 9 SDK
- Docker(任意。コンテナー化したデプロイに使用)
- AI サービスプロバイダー(IChatClient の機能に必要)
🏃♂️ クイックスタート
1. クローンとビルド
git clone <repository-url>
cd MCPServerApp
dotnet build
2. アプリケーションの実行
dotnet run
3. Docker でのデプロイ(任意)
docker build -t mcpserverapp .
docker run -p 8080:8080 mcpserverapp
🔧 設定
このアプリケーションは、標準的な .NET の設定パターンを使用します。以下を設定できます。
- AI サービスのエンドポイント
- ログレベル
- サーバー設定
設定は、以下を通じて指定できます。
appsettings.json- 環境変数
- コマンドライン引数
- ユーザーシークレット(開発用)
📚 利用可能なツール
テキスト分析と処理
- AnalyzeSentiment:テキストの感情的な傾向を分析します
- AnalyzeWritingTone:文章の内容のトーンとスタイルを評価します
- AnalyzeReadability:テキストの読みやすさを評価し、改善案を提案します
- AnalyzeBiasInText:潜在的なバイアスや偏りのある表現を特定します
- AnalyzeEmotionalTone:感情的なニュアンスや雰囲気を分析します
- AnalyzeArgumentStructure:議論の論理構造を調べます
- ImproveWriting:文章をより良くするための提案を行います
- TranslateText:言語間でテキストを翻訳します
クリエイティブライティングとコンテンツ
- GeneratePoem:さまざまなスタイル(俳句、ソネット、自由詩、リメリック)で詩を作成します
- GenerateStory:指定したパラメーターに基づいて短編小説を生成します
- CreateCharacterProfile:創作向けの詳細なキャラクタープロフィールを作成します
- SimulateDialogue:登場人物同士のリアルな会話を作成します
- GenerateJoke:さまざまなスタイル(しゃれ、一言ジョーク、ノックノック・ジョーク、親父ギャグ)でユーモアを作成します
- GenerateMotivationalQuote:人を励ます名言を作成します
- GenerateCreativePrompts:さまざまなメディア向けの創作のヒントを提供します
- CreateMetaphors:概念を表すメタファーや類推を生成します
ビジネスと専門分野
- GenerateSlogan:印象に残るスローガンやタグラインを作成します
- GenerateProductNames:商品やサービスの創造的な名前を考案します
- GenerateEmailSubjects:目を引くメールの件名を作成します
- GenerateTestimonials:現実味のあるお客様の声を作成します
- CreateUserPersonas:デザインやマーケティング向けの詳細なユーザーペルソナを作成します
- GenerateHashtags:関連性の高いソーシャルメディア用ハッシュタグを作成します
教育と解説
- ExplainConcept:対象者のレベルに合わせて概念を説明します
- GenerateQuestions:さまざまな状況に応じた、考えを深める質問を作成します
- CreateTutorialOutline:体系的な学習概要を生成します
- GenerateDebatePoints:ディベートのテーマに対する論点を考案します
- CreateMemoryDevice:記憶術や記憶を助ける方法を作成します
- CreateAnalogyChain:複雑な概念を段階的に説明する類推の連鎖を構築します
言語とコミュニケーション
- GenerateRhyme:入力された単語と韻を踏む単語を検索します
- CreateWordAssociations:意味的な単語のつながりを生成します
- GenerateAlternatives:代替となる単語、フレーズ、またはアプローチを提示します
- CreateConversationStarters:さまざまな状況に合わせた会話のきっかけを生成します
- GenerateIcebreakers:グループ向けのアイスブレイク活動を作成します
- CreateAcronym:覚えやすい頭字語を作成するか、既存の頭字語を展開します
ユーティリティとヘルパーツール
- Echo:基本的なメッセージのエコー機能
- ReverseEcho:テキストを逆順にして返します
- Yell:テキストを大文字に変換します
- WordCount:テキスト内の単語数を数えます
- CharCount:文字数を数えます(スペースを除く)
- VowelCount:テキスト内の母音を数えます
- Repeat:メッセージを複数回繰り返します
- IsPalindrome:テキストが回文かどうかを確認します
- TitleCase:テキストをタイトルケースに変換します
- ExtractDigits:テキストから数字を抽出します
- LongestWord:テキスト内で最も長い単語を検索します
- Replace:テキスト内の部分文字列を置換します
- ToLowerCase:小文字に変換します
- ToUpperCase:大文字に変換します
- Trim:先頭と末尾の空白を削除します
- Contains:部分文字列が含まれているか確認します
- SplitIntoWords:テキストを単語の配列に分割します
- JoinWords:単語の配列を結合して文字列にします
- SummarizeContentFromUrl:ウェブコンテンツをダウンロードして要約します
データと専門分野
- GetMonkey:名前からサルの情報を取得します
- GetMonkeys:利用可能なサルの一覧を表示します
🎯 ツールカテゴリの概要
| カテゴリ | ツール数 | 主なユースケース |
|---|---|---|
| テキスト分析 | 8 | コンテンツの評価、改善案の提示、バイアスの検出 |
| クリエイティブライティング | 12 | 物語の作成、詩、キャラクター開発、ユーモア |
| ビジネスツール | 6 | マーケティング文案、ブランディング、顧客向けコンテンツ |
| 教育 | 6 | 学習教材、解説、記憶補助 |
| 言語処理 | 8 | 翻訳、言葉遊び、意味分析 |
| コミュニケーション | 6 | 社交、ビジネスネットワーキング |
| ユーティリティ関数 | 18 | テキスト操作、基本的な処理 |
| 専門分野 | 2 | 専門的なデータ取得 |
🔍 ツールの使用例
感情分析
var result = await AnalyzeSentiment(server, "I absolutely love this new feature!", cancellationToken);
// Returns: Sentiment Analysis: Positive (95% confidence) - Expresses strong enthusiasm...
クリエイティブライティング
var poem = await GeneratePoem(server, "autumn leaves", "haiku", cancellationToken);
// Returns: HAIKU - autumn leaves: Golden leaves falling...
ビジネスコンテンツ
var slogans = await GenerateSlogan(server, "eco-friendly water bottles", "inspirational", 3, cancellationToken);
// Returns: INSPIRATIONAL Slogans for eco-friendly water bottles: ...
🏗️ アーキテクチャ
プロジェクト構成
MCPServerApp/
├── Tools/
│ ├── EchoTool.cs # Main tool collection (50+ tools)
│ └── MonkeyTools.cs # Domain-specific tools
├── Models/
│ └── Monkey.cs # Data models
├── Services/
│ └── MonkeyService.cs # Business logic services
├── Contexts/
│ └── MonkeyContext.cs # Data context
└── Program.cs # Application entry point
主なコンポーネント
- McpServerTool 属性:メソッドを利用可能な MCP ツールとして指定します
- IChatClient 統合:テキスト処理に AI の機能を活用します
- 依存性注入:サービス管理に .NET DI コンテナーを活用します
- 構成システム:複数の構成ソースに対応します
🧪 開発
新しいツールの追加
- 適切なツールクラスに新しい静的メソッドを作成します
- 名前と説明を指定して
[McpServerTool]属性を追加します [Description]属性を使ってパラメーターの説明を記述します- 適切な場合は IChatClient を使ってツールのロジックを実装します
例:
[McpServerTool(Name = "MyNewTool"), Description("Description of what the tool does")]
public static async Task<string> MyNewTool(
IMcpServer thisServer,
[Description("Input parameter description")] string input,
CancellationToken cancellationToken = default)
{
// Tool implementation
ChatMessage[] messages = [
new(ChatRole.System, "System prompt for the AI"),
new(ChatRole.User, $"User prompt with {input}")
];
ChatOptions options = new()
{
MaxOutputTokens = 200,
Temperature = 0.5f,
};
var response = await thisServer.AsSamplingChatClient().GetResponseAsync(messages, options, cancellationToken);
return $"Result: {response}";
}
テスト
# Run tests
dotnet test
# Build and run
dotnet build
dotnet run
📄 ライセンス
このプロジェクトは、LICENSE.txt に記載された条件に基づいてライセンスされています。
🤝 貢献
- リポジトリをフォークします
- 機能ブランチを作成します
- 変更を加えます
- 該当する場合はテストを追加します
- プルリクエストを送信します
📞 サポート
質問、問題、貢献については、プロジェクトのイシュートラッカーまたはドキュメントを参照してください。
.NET 9 と Model Context Protocol を使用して ❤️ を込めて構築
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。