# Content Plan Builder
An MCP (Model Context Protocol) server that generates comprehensive Asana project plans from arbitrary content — text, PDFs, DOCX files, meeting transcripts, or any combination.
## Features
- **Multi-format Input**: Accepts text, PDF, DOCX, TXT, MD, HTML, CSV, and JSON files
- **AI-Powered Generation**: Uses Claude to create detailed project plans with:
- 5 top-level tasks with 5-10 subtasks each
- Realistic time estimates
- Role-based assignments
- Task dependencies
- SMART goals
- Key data points and metrics
- **Asana Integration**: Optionally create projects directly in Asana
- **Flexible Output**: Detailed structured format or compact array format
## Installation
```bash
# Clone the repository
git clone https://github.com/yourusername/content-plan-builder.git
cd content-plan-builder
# Install dependencies
npm install
# Build
npm run build
```
## Configuration
### Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `ANTHROPIC_API_KEY` | Yes | Anthropic API key for Claude |
### MCP Registration
Add to your `~/.mcp.json`:
```json
{
"mcpServers": {
"content-plan-builder": {
"command": "node",
"args": ["/path/to/content-plan-builder/dist/index.js"],
"env": {
"ANTHROPIC_API_KEY": "your-api-key"
}
}
}
}
```
For Claude Desktop, add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"content-plan-builder": {
"command": "node",
"args": ["/path/to/content-plan-builder/dist/index.js"],
"env": {
"ANTHROPIC_API_KEY": "your-api-key"
}
}
}
}
```
## Usage
### Tool: `plan_from_content`
#### Operations
| Operation | Description |
|-----------|-------------|
| `generate` | Create a project plan from inputs |
| `preview` | Preview plan without saving |
| `create` | Generate plan and create in Asana |
#### Parameters
| Parameter | Type | Description |
|-----------|------|-------------|
| `operation` | string | `generate`, `preview`, or `create` |
| `inputs` | array | Array of input objects |
| `knowledgeBaseContext` | string | Additional context to include |
| `projectName` | string | Name for the generated project |
| `creativity` | string | `conservative`, `balanced`, or `expansive` |
| `outputFormat` | string | `detailed`, `compact`, or `both` |
| `asanaAccessToken` | string | Asana PAT (for create operation) |
| `asanaTeamGid` | string | Team GID for new project |
| `targetProjectGid` | string | Add to existing project |
#### Input Types
| Type | Description |
|------|-------------|
| `text` | Raw text content |
| `file` | File path to PDF, DOCX, TXT, MD, HTML, CSV, or JSON |
| `transcript` | Meeting transcript text |
| `meeting_notes` | Meeting notes text |
### Examples
#### Generate plan from text
```json
{
"operation": "generate",
"inputs": [
{
"type": "text",
"content": "We need to build a new customer portal with user authentication, a dashboard showing order history, and the ability to track shipments..."
}
],
"projectName": "Customer Portal Development"
}
```
#### Generate from file
```json
{
"operation": "generate",
"inputs": [
{
"type": "file",
"content": "/path/to/requirements.pdf"
}
],
"creativity": "expansive"
}
```
#### Combine multiple inputs
```json
{
"operation": "generate",
"inputs": [
{
"type": "transcript",
"content": "Meeting transcript from kickoff call..."
},
{
"type": "file",
"content": "/path/to/scope-document.docx"
}
],
"knowledgeBaseContext": "This project is part of the Q2 digital transformation initiative...",
"projectName": "Digital Transformation - Phase 1"
}
```
#### Create in Asana
```json
{
"operation": "create",
"inputs": [
{
"type": "transcript",
"content": "Sprint planning meeting transcript..."
}
],
"projectName": "Sprint 14 Tasks",
"asanaAccessToken": "your-asana-pat",
"asanaTeamGid": "1234567890"
}
```
## Output Formats
### Detailed Format
Full structured plan with all metadata:
```json
{
"projectGoal": "Build a customer-facing portal that enables...",
"topLevelTasks": [
{
"name": "User Authentication System",
"description": "Implement secure authentication...",
"assignedTo": "Senior Developer",
"estimate": "2 weeks",
"blockedBy": "N/A",
"subtasks": [...]
}
],
"keyDataPoints": ["500 concurrent users expected", ...],
"keywordsAndPhrases": ["customer portal", "authentication", ...],
"questionsAndExercises": ["What is the expected user growth rate?", ...],
"smartGoals": ["Reduce customer support tickets by 30% within 3 months", ...],
"additionalMaterials": ["UX design guidelines", ...]
}
```
### Compact Format
Array of all subtasks for easy import:
```json
[
{
"index": 1,
"Parent-task": "User Authentication System",
"Sub-Task": "Design authentication flow",
"Task Description": "Create detailed flow diagrams...",
"Assignee": "UX Designer",
"Estimated Time": "3 days",
"Dependencies": "N/A"
}
]
```
## Creativity Levels
| Level | Description |
|-------|-------------|
| `conservative` | Stick closely to what is explicitly mentioned in the content |
| `balanced` | Include tasks that are mentioned or strongly implied (default) |
| `expansive` | Infer additional tasks for testing, documentation, deployment, etc. |
## Development
```bash
# Run in development mode
npm run dev
# Build
npm run build
# Start production server
npm start
```
## License
MIT