provisioning/schemas/platform/templates/configs/mcp-server-config.toml.ncl

330 lines
7.1 KiB
Plaintext
Raw Normal View History

# MCP Server Configuration - TOML Export
# Generates TOML configuration for Model Context Protocol (MCP) server
# Supports 4 deployment modes: solo, multiuser, cicd, enterprise
#
# Usage:
# nickel export --format toml mcp-server-config.toml.ncl > mcp-server.toml
{
# Server Configuration
server = {
host = "0.0.0.0",
port = 8888,
# Protocol: "stdio" (process-based) or "http" (network-based)
protocol = "stdio",
workers = 4,
keep_alive = 75,
},
# MCP Capabilities Configuration
capabilities = {
# Tools: functions available to Claude and other LLMs
tools = {
enabled = true,
max_concurrent = 10,
timeout = 30000, # milliseconds
categories = [
"orchestrator",
"provisioning",
"workspace",
"configuration",
"system",
],
},
# Resources: files, databases, external systems
resources = {
enabled = true,
max_size = 1073741824, # 1GB in bytes
caching = {
enabled = true,
ttl = 3600, # seconds (1 hour)
max_entries = 1000,
},
},
# Prompts: predefined prompts for Claude
prompts = {
enabled = true,
max_length = 10000,
template_engine = "jinja2",
},
# Sampling: model configuration for LLM calls
sampling = {
enabled = false,
models = ["claude-3-opus", "claude-3-sonnet"],
default_model = "claude-3-opus",
temperature = 0.7,
max_tokens = 4096,
},
},
# Tool Configuration
tools = {
# Orchestrator tools
orchestrator = {
enabled = true,
submit_workflow = {
description = "Submit a workflow to the orchestrator",
timeout = 60000,
},
list_workflows = {
description = "List all workflows",
timeout = 10000,
},
get_workflow = {
description = "Get workflow details",
timeout = 10000,
},
cancel_workflow = {
description = "Cancel a running workflow",
timeout = 30000,
},
},
# Provisioning tools
provisioning = {
enabled = true,
deploy_infrastructure = {
description = "Deploy infrastructure",
timeout = 300000,
},
validate_config = {
description = "Validate provisioning configuration",
timeout = 30000,
},
list_deployments = {
description = "List deployments",
timeout = 10000,
},
},
# Workspace tools
workspace = {
enabled = true,
list_workspaces = {
description = "List workspaces",
timeout = 10000,
},
create_workspace = {
description = "Create a new workspace",
timeout = 60000,
},
delete_workspace = {
description = "Delete a workspace",
timeout = 60000,
},
},
},
# Resource Configuration
resources = {
# File system resources
file_system = {
enabled = true,
root_path = "/var/lib/provisioning",
allow_write = false,
allowed_extensions = ["ncl", "toml", "yaml", "json", "txt"],
max_file_size = 10485760, # 10MB in bytes
},
# Database resources
database = {
enabled = true,
connections = {
orchestrator = {
type = "http",
url = "http://orchestrator:9090/api",
},
control_center = {
type = "http",
url = "http://control-center:8080/api",
},
},
},
# External API resources
external_apis = {
enabled = true,
allowed_domains = [
"orchestrator:9090",
"control-center:8080",
"api.example.com",
],
},
},
# Prompt Configuration
prompts = {
# System prompts available to Claude
system_prompts = {
infrastructure_expert = {
name = "Infrastructure Expert",
description = "Expert in provisioning and infrastructure management",
content = "You are an expert in cloud infrastructure and provisioning systems.",
},
workflow_assistant = {
name = "Workflow Assistant",
description = "Assistant for orchestrating workflows",
content = "You are an assistant for managing and orchestrating workflows.",
},
},
# User prompts
user_prompts = {
enabled = true,
max_custom = 50, # Maximum custom user prompts
},
},
# Integration Configuration
integration = {
# Orchestrator integration
orchestrator = {
enabled = true,
url = "http://orchestrator:9090",
timeout = 30, # seconds
auth = {
method = "jwt",
token = "${ORCHESTRATOR_TOKEN}",
},
},
# Control Center integration
control_center = {
enabled = true,
url = "http://control-center:8080",
timeout = 30,
auth = {
method = "jwt",
token = "${CONTROL_CENTER_TOKEN}",
},
},
# Claude integration
claude = {
enabled = true,
api_key = "${CLAUDE_API_KEY}",
model = "claude-3-opus-20240229",
max_tokens = 4096,
},
},
# Security Configuration
security = {
# Authentication
auth = {
enabled = true,
method = "jwt",
jwt_secret = "${JWT_SECRET}",
},
# Authorization
authorization = {
enabled = true,
role_based = true,
default_role = "viewer",
},
# Rate limiting
rate_limit = {
enabled = true,
requests_per_second = 100,
burst_size = 20,
},
# Input validation
input_validation = {
enabled = true,
max_input_size = 1000000, # 1MB
sanitize_inputs = true,
},
},
# Monitoring and Observability
monitoring = {
enabled = true,
# Metrics
metrics = {
enabled = true,
interval = 30,
export_format = "prometheus",
},
# Health checks
health_check = {
enabled = true,
interval = 30,
timeout = 10,
},
# Audit logging
audit = {
enabled = true,
log_all_requests = true,
log_sensitive_data = false,
retention_days = 90,
},
# Error tracking
error_tracking = {
enabled = true,
sample_rate = 1.0,
},
},
# Logging Configuration
logging = {
level = "info",
format = "json",
outputs = [
{
destination = "stdout",
level = "info",
},
{
destination = "file",
path = "/var/log/provisioning/mcp-server/mcp-server.log",
level = "debug",
rotation = {
max_size = "100MB",
max_backups = 10,
max_age = 30,
},
},
],
},
# Feature Flags
features = {
enable_audit_logging = true,
enable_caching = true,
enable_sampling = false, # Experimental LLM sampling
enable_experimental_tools = false,
},
# Performance Tuning
performance = {
# Thread pool sizes
worker_threads = 4,
blocking_threads = 2,
# Timeouts
default_timeout = 30000, # milliseconds
max_timeout = 300000, # milliseconds
# Buffering
request_buffer_size = 1000,
response_buffer_size = 1000,
# Caching
cache_enabled = true,
cache_size = "256MB",
cache_ttl = 3600,
},
}