MCP Content Curation Server
# š MCP Content Curation Server
[](https://nodejs.org/)
[](https://www.typescriptlang.org/)
[](https://openai.com/)
[](LICENSE)
A **Model Context Protocol (MCP)** server for intelligent course content curation powered by **GPT-4**. This server provides AI-driven tools to categorize, tag, and improve educational content.
## ⨠Features
- **šļø Smart Categorization**: AI-powered category suggestions for course content
- **š·ļø Intelligent Tagging**: Context-aware tag recommendations using GPT-4
- **⨠Content Optimization**: Improve titles and descriptions following best practices
- **š MCP Integration**: Seamless integration with Claude Desktop and other MCP clients
## š Quick Start
### Prerequisites
- Node.js 18+
- OpenAI API key
### Installation
1. **Clone the repository**
```bash
git clone https://github.com/yourusername/mcp-content-curation-server.git
cd mcp-content-curation-server
```
2. **Install dependencies**
```bash
npm install
```
3. **Configure environment**
```bash
cp .env.example .env
# Edit .env and add your OpenAI API key
```
4. **Run the server**
```bash
# Development mode
npm run dev
# Production mode
npm run build
npm start
```
## š§ OpenAI Setup
1. Get your API key from [OpenAI Platform](https://platform.openai.com/api-keys)
2. Add it to your `.env` file:
```bash
OPENAI_API_KEY=sk-your-actual-api-key-here
```
## š„ļø Claude Desktop Integration
Update your `claude_desktop_config.json`:
**Development Mode:**
```json
{
"mcpServers": {
"content-curation": {
"command": "npx",
"args": ["tsx", "/path/to/your/project/src/server.ts"],
"cwd": "/path/to/your/project",
"env": {
"NODE_ENV": "development"
}
}
}
}
```
**Production Mode:**
```json
{
"mcpServers": {
"content-curation": {
"command": "node",
"args": ["/path/to/your/project/dist/server.js"],
"cwd": "/path/to/your/project",
"env": {
"NODE_ENV": "production"
}
}
}
}
```
## š ļø Available Tools
### 1. `suggest_category`
Suggests the most appropriate category for course content.
**Input:**
```json
{
"title": "Python for Data Science",
"description": "Learn data analysis with pandas and matplotlib"
}
```
### 2. `suggest_tags`
Recommends relevant tags based on course content.
**Input:**
```json
{
"title": "Digital Marketing Fundamentals",
"description": "Master SEO, Google Ads, and social media marketing"
}
```
### 3. `improve_content`
Optimizes titles and descriptions following educational best practices.
**Input:**
```json
{
"title": "JavaScript Basics",
"description": "Learn programming fundamentals"
}
```
## š Data Structure
The server includes:
- **5 main categories**: Technology, Business, Design, Marketing, Analytics
- **18 contextual tags**: Organized by subject area
- **10 sample courses**: For similarity analysis and training
## š” Usage Examples
### Categorization
```
Suggest a category for: "Advanced React Hooks" - "Custom hooks and performance optimization in React"
```
### Tagging
```
What tags would you recommend for: "Machine Learning with Python"?
```
### Content Improvement
```
Improve this content:
Title: "Excel Basics"
Description: "Learn spreadsheets"
```
## š ļø Development
### Available Scripts
- `npm run dev` - Start development server
- `npm run build` - Compile TypeScript
- `npm start` - Run production server
- `npm run debug` - Run diagnostics
### Project Structure
```
src/
āāā server.ts # Main MCP server
āāā services/
ā āāā ai.service.ts # OpenAI GPT-4 integration
ā āāā curation.service.ts # Curation logic
āāā data/
ā āāā mock-data.ts # Categories, tags, and sample data
āāā types.ts # TypeScript definitions
```TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: improve_content focuses on enhancing title and description, suggest_category recommends a category, and suggest_tags suggests tags. There is no overlap in functionality, making it easy for an agent to select the correct tool without confusion.
All tool names follow a consistent verb_noun pattern (improve_content, suggest_category, suggest_tags) with the same verb style ('improve' and 'suggest'). This predictability aids in understanding and usage without deviation.
With only 3 tools, the server feels thin for a content curation domain, as it lacks operations like creating, updating, or deleting content. While the tools are focused, the scope is limited, potentially requiring workarounds for full curation workflows.
The toolset is severely incomplete for content curation, missing core CRUD operations (e.g., create_content, update_content, delete_content) and other essential functions like listing or searching content. This will likely cause agent failures in handling comprehensive curation tasks.