Skip to content

Commit 18c6e85

Browse files
rekram1-nodeBenGu3
authored andcommitted
fix(mcp): prevent resource key collisions (anomalyco#33596)
1 parent 765a461 commit 18c6e85

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)