ADR-007: MCP Prompts and Resources Integration for AI Assistance
id: 007-mcp-prompts-and-resources-integration title: 'ADR-007: MCP Prompts and Resources Integration' sidebar_label: 'ADR-7: MCP Prompts and Resources Integration' sidebar_position: 7
Status
Proposed
Context
DocuMCP needs AI assistance capabilities, and the Model Context Protocol provides native support for exactly this use case through Prompts and Resources. Rather than extending the protocol, we should leverage MCP's built-in capabilities:
- MCP Prompts: Pre-written templates that help users accomplish specific tasks
- MCP Resources: File-like data that can be read by clients (like API responses, file contents, or generated documentation)
Current MCP Core Concepts that we can utilize:
- Tools: Interactive functions (already implemented - analyze_repository, recommend_ssg, etc.)
- Prompts: Template-based assistance for common workflows
- Resources: Readable data and content that clients can access
This approach maintains full MCP compliance while providing rich AI assistance through the protocol's intended mechanisms.
Decision
We will implement AI assistance using MCP's native Prompts and Resources capabilities, providing pre-written prompt templates for documentation workflows and exposing generated content through the MCP resource system.
Core Implementation Strategy:
1. MCP Prompts for Documentation Workflows
// Implement MCP ListPromptsRequestSchema and GetPromptRequestSchema
const DOCUMENTATION_PROMPTS = [
{
name: "analyze-and-recommend",
description: "Complete repository analysis and SSG recommendation workflow",
arguments: [
{ name: "repository_path", description: "Path to repository", required: true },
{ name: "priority", description: "Priority: simplicity, features, performance" }
]
},
{
name: "setup-documentation",
description: "Create comprehensive documentation structure with best practices",
arguments: [
{ name: "project_name", description: "Project name", required: true },
{ name: "ssg_type", description: "Static site generator type" }
]
},
{
name: "troubleshoot-deployment",
description: "Diagnose and fix GitHub Pages deployment issues",
arguments: [
{ name: "repository_url", description: "GitHub repository URL", required: true },
{ name: "error_message", description: "Deployment error message" }
]
}
];
2. MCP Resources for Generated Content
// Implement ListResourcesRequestSchema and ReadResourceRequestSchema
interface DocuMCPResource {
uri: string; // e.g., "documcp://analysis/repo-123"
name: string; // Human-readable name
description: string; // What this resource contains
mimeType: string; // Content type
}
// Resource types we'll expose:
const RESOURCE_TYPES = [
"documcp://analysis/{analysisId}", // Repository analysis results
"documcp://config/{ssgType}/{projectId}", // Generated configuration files
"documcp://structure/{projectId}", // Documentation structure templates
"documcp://deployment/{workflowId}", // GitHub Actions workflows
"documcp://templates/{templateType}", // Reusable templates
];
3. Integration with Existing Tools
- Tools remain unchanged: analyze_repository, recommend_ssg, generate_config, etc.
- Prompts provide workflows: Chain multiple tool calls with guided prompts
- Resources expose results: Make tool outputs accessible as MCP resources
Example Workflow Integration:
// MCP Prompt: "analyze-and-recommend"
// Generated prompt text that guides the user through:
// 1. Call analyze_repository tool
// 2. Review analysis results via documcp://analysis/{id} resource
// 3. Call recommend_ssg tool with analysis results
// 4. Access recommendations via documcp://recommendations/{id} resource
// 5. Call generate_config with selected SSG
Alternatives Considered
Alternative 1: Custom Protocol Extensions (Previous Approach)
- Pros: Maximum flexibility, custom AI features
- Cons: Protocol complexity, compatibility issues, non-standard
- Decision: Rejected in favor of MCP-native approach
Alternative 2: Tools-Only Approach
- Pros: Simple, already implemented
- Cons: No guided workflows, no template assistance, harder user experience
- Decision: Insufficient for comprehensive AI assistance
Alternative 3: External AI Service Integration
- Pros: Leverage existing AI platforms
- Cons: Breaks MCP cohesion, additional dependencies, latency
- Decision: Conflicts with MCP server simplicity
Consequences
Positive Consequences
- MCP Compliance: Uses protocol as designed, no custom extensions needed
- Client Compatibility: Works with all MCP clients (Claude Desktop, GitHub Copilot, etc.)
- Guided Workflows: Prompts provide step-by-step assistance for complex tasks
- Rich Content Access: Resources make generated content easily accessible
- Template Reusability: Prompts can be customized and reused across projects
- Simplified Architecture: No need for custom protocol handling or AI-specific interfaces
Negative Consequences
- Prompt Complexity: Complex workflows require sophisticated prompt engineering
- Resource Management: Need efficient resource caching and lifecycle management
- Limited AI Features: Constrained to MCP's prompt/resource model
- Template Maintenance: Prompts need regular updates as tools evolve
Implementation Plan
Phase 1: Core MCP Integration (Week 1-2)
- Implement
ListPromptsRequestSchema
andGetPromptRequestSchema
handlers - Implement
ListResourcesRequestSchema
andReadResourceRequestSchema
handlers - Create resource URI schema and routing system
- Add MCP capabilities registration for prompts and resources
Phase 2: Documentation Prompts (Week 3-4)
- Create "analyze-and-recommend" workflow prompt
- Create "setup-documentation" structure prompt
- Create "troubleshoot-deployment" diagnostic prompt
- Add prompt argument validation and help text
Phase 3: Resource Management (Week 5-6)
- Implement resource caching for analysis results
- Add generated configuration file resources
- Create template library resources
- Add resource cleanup and lifecycle management
Phase 4: Advanced Features (Week 7-8)
- Dynamic prompt generation based on project characteristics
- Contextual resource recommendations
- Prompt composition for complex workflows
- Integration testing with major MCP clients
Integration with Existing Architecture
ADR-001 (MCP Server Architecture)
- Extends the TypeScript MCP SDK usage to include prompts and resources
- Maintains stateless operation model
- Leverages existing modular design
ADR-006 (MCP Tools API Design)
- Tools remain the primary interface for actions
- Prompts provide guided workflows using existing tools
- Resources expose tool outputs in structured format
ADR-007 (Pluggable Prompt Tool Architecture)
- Modified Approach: Instead of custom prompt engines, use MCP prompts
- Template system becomes MCP prompt templates
- Configuration-driven approach still applies for prompt customization
MCP Server Capabilities Declaration
server.setRequestHandler(InitializeRequestSchema, async () => ({
protocolVersion: "2024-11-05",
capabilities: {
tools: {}, // Existing tool capabilities
prompts: {}, // NEW: Prompt template capabilities
resources: {}, // NEW: Resource access capabilities
},
serverInfo: {
name: "documcp",
version: "0.2.0",
},
}));
Future Considerations
- Integration with MCP sampling for AI-powered responses
- Advanced prompt chaining and conditional workflows
- Resource subscriptions for real-time updates
- Community prompt template sharing and marketplace