You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(mcp): complete all 4 MCP templates to github-level quality
postgres:
- Fix false claim that server is read-only by design — it executes arbitrary SQL
- Rewrite rules.md with real SQL safety: hard stops for DROP/TRUNCATE/DDL,
confirm-before-DML, no UPDATE/DELETE without WHERE, production environment
detection, connection pooling guidance
- permissions.json: correct _comment to document the tool-level limit of
the MCP permissions system (SQL-level restriction is behavioral via rules.md)
supabase:
- Add _verified_with: @supabase/mcp-server-supabase@0.7.0 to config.json
- Add _read_only_variant note documenting --read-only flag
- rules.md: add "Read-only mode for production" section — documents --read-only
as hard enforcement layer for production tokens with exact args example
redis:
- permissions.json: add config_set, config_rewrite, shutdown to deny list
(config_set can change maxmemory/bind/requirepass at runtime; shutdown
terminates the process)
- rules.md: expand hard stops section with rationale for each denied operation
slack:
- permissions.json: add update_message, archive_channel, set_channel_purpose,
set_channel_topic to deny; add add_reaction to allow
- rules.md: full rewrite — add editing rules (bot-only), privacy guidance for
private channels, channel scope policy ("which channel(s)?"), hard stops
with rationale for each denied operation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: mcp/postgres/permissions.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"_template": "claude-kit/mcp/postgres",
3
-
"_comment": "The official postgres MCP server (@modelcontextprotocol/server-postgres) is read-only by design — it only exposes query (SELECT). This permissions file documents that posture and adds no deny entries beyond what the server already enforces.",
3
+
"_comment": "The @modelcontextprotocol/server-postgres 'query' tool executes arbitrary SQL — it is NOT read-only by design. SQL-level restrictions (no DDL, no unguarded DML) cannot be enforced via the permissions system (which only blocks tool calls by name, not SQL content). Enforcement is via rules.md. The allow list restricts which tools Claude may call; write protection is behavioral, governed by rules.md.",
Copy file name to clipboardExpand all lines: mcp/redis/rules.md
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,8 +28,10 @@ Before any SET, DEL, EXPIRE, XADD, or consumer group operation:
28
28
4. Wait for explicit confirmation
29
29
30
30
## Hard stops (always denied)
31
-
-`flushdb` / `flushall` — data destruction. Never call.
32
-
-`debug` / `config resetstat` — operational risk.
31
+
-`flushdb` / `flushall` — destroys all keys in DB or entire instance. Never call.
32
+
-`config set` / `config rewrite` — runtime server config changes (maxmemory, bind, requirepass). Can permanently alter server behavior or expose the instance. Never call.
33
+
-`shutdown` — terminates the Redis process. Never call.
34
+
-`debug` / `config resetstat` — operational risk, no legitimate use case via MCP.
33
35
34
36
## Redis Streams guidance (SOMA pattern)
35
37
- Use XADD with MAXLEN ~ N to prevent unbounded stream growth in high-frequency producers
"_comment": "Read operations auto-allowed. Sendingmessages requires user prompt — messages sent via bot are visible to the whole channel/recipient.",
3
+
"_comment": "Read operations auto-allowed. Sending, editing, and reacting to messages requires user prompt — actions are visible to other users. Destructive and administrative operations always denied.",
"_install": "Merge the 'supabase' key into mcpServers in ~/.claude/settings.json. Set SUPABASE_ACCESS_TOKEN env var (create at supabase.com/dashboard/account/tokens).",
5
5
"_note": "This template uses the Supabase management API server, which operates on projects and their schema. For direct SQL on a specific project, combine with mcp/postgres/ using the project's DATABASE_URL.",
6
+
"_read_only_variant": "For production read-only access, add '--read-only' to args. This restricts the server to non-destructive operations only.",
0 commit comments