ewdlop/MCPServerApp
If you are the rightful owner of MCPServerApp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A comprehensive Model Context Protocol (MCP) server application built with .NET 9, featuring 50+ AI-powered tools for text processing, creative writing, analysis, and business applications.
MCPServerApp
A comprehensive Model Context Protocol (MCP) server application built with .NET 9, featuring 50+ AI-powered tools for text processing, creative writing, analysis, and business applications.
๐ Features
- 50+ AI-Powered Tools: Extensive collection of tools utilizing IChatClient for various tasks
- Text Analysis: Sentiment analysis, bias detection, readability assessment, and writing improvement
- Creative Writing: Story generation, poetry creation, character development, and dialogue simulation
- Business Tools: Email subject generation, testimonials, slogans, and product naming
- Educational: Concept explanations, tutorial outlines, debate points, and memory devices
- Language Processing: Translation, rhyme generation, word associations, and alternative suggestions
- Communication: Conversation starters, icebreakers, and interview questions
๐ ๏ธ Technology Stack
- .NET 9: Latest .NET framework
- Model Context Protocol (MCP): Communication protocol for AI tools
- Microsoft.Extensions.AI: AI abstractions and chat client support
- Docker: Containerization support
- C#: Primary programming language
๐ Prerequisites
- .NET 9 SDK
- Docker (optional, for containerized deployment)
- An AI service provider (for IChatClient functionality)
๐โโ๏ธ Quick Start
1. Clone and Build
git clone <repository-url>
cd MCPServerApp
dotnet build
2. Run the Application
dotnet run
3. Docker Deployment (Optional)
docker build -t mcpserverapp .
docker run -p 8080:8080 mcpserverapp
๐ง Configuration
The application uses standard .NET configuration patterns. You can configure:
- AI service endpoints
- Logging levels
- Server settings
Configuration can be provided through:
appsettings.json
- Environment variables
- Command line arguments
- User secrets (for development)
๐ Available Tools
Text Analysis & Processing
- AnalyzeSentiment: Analyzes emotional sentiment of text
- AnalyzeWritingTone: Evaluates tone and style of written content
- AnalyzeReadability: Assesses text readability and suggests improvements
- AnalyzeBiasInText: Identifies potential bias and loaded language
- AnalyzeEmotionalTone: Analyzes emotional undertones and mood
- AnalyzeArgumentStructure: Examines logical structure of arguments
- ImproveWriting: Provides writing enhancement suggestions
- TranslateText: Translates text between languages
Creative Writing & Content
- GeneratePoem: Creates poetry in various styles (haiku, sonnet, free verse, limerick)
- GenerateStory: Generates short stories with specified parameters
- CreateCharacterProfile: Develops detailed character profiles for creative writing
- SimulateDialogue: Creates realistic conversations between characters
- GenerateJoke: Creates humor in different styles (pun, one-liner, knock-knock, dad-joke)
- GenerateMotivationalQuote: Creates inspirational quotes
- GenerateCreativePrompts: Provides creative inspiration for various mediums
- CreateMetaphors: Generates metaphors and analogies for concepts
Business & Professional
- GenerateSlogan: Creates catchy slogans and taglines
- GenerateProductNames: Develops creative product and service names
- GenerateEmailSubjects: Creates compelling email subject lines
- GenerateTestimonials: Produces realistic customer testimonials
- CreateUserPersonas: Develops detailed user personas for design and marketing
- GenerateHashtags: Creates relevant social media hashtags
Educational & Explanatory
- ExplainConcept: Provides explanations tailored to different audience levels
- GenerateQuestions: Creates thought-provoking questions for various contexts
- CreateTutorialOutline: Generates structured learning outlines
- GenerateDebatePoints: Develops arguments for debate topics
- CreateMemoryDevice: Creates mnemonic devices and memory aids
- CreateAnalogyChain: Builds progressive analogy chains for complex concepts
Language & Communication
- GenerateRhyme: Finds words that rhyme with given input
- CreateWordAssociations: Generates semantic word connections
- GenerateAlternatives: Provides alternative words, phrases, or approaches
- CreateConversationStarters: Generates conversation starters for various contexts
- GenerateIcebreakers: Creates group icebreaker activities
- CreateAcronym: Creates memorable acronyms or expands existing ones
Utility & Helper Tools
- Echo: Basic message echoing functionality
- ReverseEcho: Returns reversed text
- Yell: Converts text to uppercase
- WordCount: Counts words in text
- CharCount: Counts characters (excluding spaces)
- VowelCount: Counts vowels in text
- Repeat: Repeats message multiple times
- IsPalindrome: Checks if text is a palindrome
- TitleCase: Converts text to title case
- ExtractDigits: Extracts numerical digits from text
- LongestWord: Finds the longest word in text
- Replace: Replaces substrings within text
- ToLowerCase: Converts to lowercase
- ToUpperCase: Converts to uppercase
- Trim: Removes leading/trailing whitespace
- Contains: Checks for substring presence
- SplitIntoWords: Splits text into word arrays
- JoinWords: Joins word arrays into strings
- SummarizeContentFromUrl: Downloads and summarizes web content
Data & Domain-Specific
- GetMonkey: Retrieves monkey information by name
- GetMonkeys: Lists available monkeys
๐ฏ Tool Categories Overview
Category | Tool Count | Primary Use Cases |
---|---|---|
Text Analysis | 8 | Content evaluation, improvement suggestions, bias detection |
Creative Writing | 12 | Story creation, poetry, character development, humor |
Business Tools | 6 | Marketing copy, branding, customer content |
Educational | 6 | Learning materials, explanations, memory aids |
Language Processing | 8 | Translation, word play, semantic analysis |
Communication | 6 | Social interaction, professional networking |
Utility Functions | 18 | Text manipulation, basic processing |
Domain-Specific | 2 | Specialized data retrieval |
๐ Tool Usage Examples
Sentiment Analysis
var result = await AnalyzeSentiment(server, "I absolutely love this new feature!", cancellationToken);
// Returns: Sentiment Analysis: Positive (95% confidence) - Expresses strong enthusiasm...
Creative Writing
var poem = await GeneratePoem(server, "autumn leaves", "haiku", cancellationToken);
// Returns: HAIKU - autumn leaves: Golden leaves falling...
Business Content
var slogans = await GenerateSlogan(server, "eco-friendly water bottles", "inspirational", 3, cancellationToken);
// Returns: INSPIRATIONAL Slogans for eco-friendly water bottles: ...
๐๏ธ Architecture
Project Structure
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
Key Components
- McpServerTool Attributes: Mark methods as available MCP tools
- IChatClient Integration: Leverage AI capabilities for text processing
- Dependency Injection: Utilize .NET DI container for service management
- Configuration System: Support multiple configuration sources
๐งช Development
Adding New Tools
- Create a new static method in the appropriate tool class
- Add the
[McpServerTool]
attribute with name and description - Include parameter descriptions using
[Description]
attributes - Implement the tool logic using IChatClient when appropriate
Example:
[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}";
}
Testing
# Run tests
dotnet test
# Build and run
dotnet build
dotnet run
๐ License
This project is licensed under the terms specified in LICENSE.txt.
๐ค Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
๐ Support
For questions, issues, or contributions, please refer to the project's issue tracker or documentation.
Built with โค๏ธ using .NET 9 and the Model Context Protocol