-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.toml
More file actions
129 lines (110 loc) · 3.7 KB
/
Copy pathconfig.toml
File metadata and controls
129 lines (110 loc) · 3.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# MCP Gateway Configuration
#
# This config defines which MCP servers to aggregate and how to connect to them.
[gateway]
# Address to bind the gateway server
bind = "0.0.0.0:8080"
# Public base URL used to render MCP endpoint links
base_url = "http://localhost:8080"
# Optional: simple shared Bearer token auth
# auth_token = "your-secret-token-here"
# auth_token = "${AXON_GATEWAY_TOKEN}" # from .env or process env
# Optional: global rate limit, in requests per minute per token.
# Default: 0 (unlimited) — rate limiting is off until you set a non-zero value.
# Uses a fixed 1-minute window per token. A per-token `rate_limit_per_minute`
# (see [[tokens]] below) overrides this global default.
# Note: simple shared `auth_token` auth is NOT rate-limited; use named tokens.
# rate_limit_per_minute = 0
# --- Backend MCP Servers ---
# Each backend gets a namespace prefix for its tools.
# e.g., homeassistant's "turn_on" becomes "homeassistant_turn_on"
[[backends]]
name = "homeassistant"
url = "https://homelab-mcp.dropbear-butterfly.ts.net/mcp"
transport = "http"
enabled = true
[[backends]]
name = "jellyfin"
url = "http://localhost:3002/mcp"
transport = "http"
enabled = true
[[backends]]
name = "proxmox"
url = "http://localhost:3003/mcp/sse"
transport = "sse"
enabled = true
# Example: stdio-based MCP server (local binary)
# [[backends]]
# name = "filesystem"
# command = "/usr/local/bin/mcp-filesystem"
# args = ["--root", "/data"]
# transport = "stdio"
# enabled = true
# Example: disabled backend (kept for reference)
# [[backends]]
# name = "experimental"
# url = "http://localhost:9999/mcp"
# transport = "http"
# enabled = false
# Example: backend with tool filtering
# [[backends]]
# name = "docker"
# url = "http://localhost:3004/mcp"
# transport = "http"
# allowed_tools = ["list_containers", "get_logs"] # only expose these
# enabled = true
# Example: backend with auth token forwarding
# [[backends]]
# name = "secure-api"
# url = "http://localhost:3005/mcp"
# transport = "http"
# auth_token = "backend-secret-token" # forwarded as Bearer token
# auth_token = "${SECURE_API_TOKEN}" # from .env or process env
# enabled = true
# Example: backend with custom environment variables (stdio)
# [[backends]]
# name = "local-tool"
# command = "/usr/local/bin/mcp-tool"
# transport = "stdio"
# env = { API_KEY = "key123", DEBUG = "true" }
# env = { API_KEY = "${OPENAI_API_KEY}", DEBUG = "true" }
# enabled = true
# --- Named API Tokens with Permissions ---
# Define multiple tokens with different access levels
# Example: agent with full access
# [[tokens]]
# name = "claude-agent"
# token = "tok_claude_abc123"
# token = "${CLAUDE_AGENT_TOKEN}"
# # allowed_tools = [] # empty = all tools
# # allowed_backends = [] # empty = all backends
# # rate_limit_per_minute = 0 # 0 = use global default
# Example: restricted agent
# [[tokens]]
# name = "limited-agent"
# token = "tok_limited_xyz789"
# allowed_tools = ["homeassistant_*", "jellyfin_search"]
# allowed_backends = ["homeassistant", "jellyfin"]
# rate_limit_per_minute = 60
# --- Tool Groups ---
# Expose subsets of tools via different endpoints.
# Access via POST /mcp/group/{name}
# List groups via GET /status/groups
# Example: home automation group
# [[groups]]
# name = "home"
# description = "Home automation tools"
# backends = ["homeassistant"]
# # tools = [] # empty = all tools from allowed backends
# Example: media group with specific tools
# [[groups]]
# name = "media"
# description = "Media management tools"
# tools = ["jellyfin_*"]
# backends = ["jellyfin"]
# Example: all tools (useful for giving different auth to different groups)
# [[groups]]
# name = "all"
# description = "All available tools"
# # backends = [] # empty = all backends
# # tools = [] # empty = all tools