Skip to content

Commit dd9b0d6

Browse files
authored
fix(mcp): prevent resource key collisions (#33596)
1 parent c6be403 commit dd9b0d6

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

‎packages/opencode/src/mcp/catalog.ts‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,11 @@ export function fetch<T extends { name: string }>(
100100
),
101101
Effect.map((items) => {
102102
const sanitizedClient = sanitize(clientName)
103+
// Escape both the separator and escape marker so `server:uri` keys remain unambiguous.
104+
const resourceClient = clientName.replaceAll("%", "%25").replaceAll(":", "%3A")
103105
return Object.fromEntries(
104106
items.map((item) => [
105-
key ? clientName + ":" + key(item) : sanitizedClient + ":" + sanitize(item.name),
107+
key ? resourceClient + ":" + key(item) : sanitizedClient + ":" + sanitize(item.name),
106108
{ ...item, client: clientName },
107109
]),
108110
)

0 commit comments

Comments
 (0)