feat(mcp): add resource read tools (#33483)

This commit is contained in:
Shoubhit Dash 2026-06-23 13:49:42 +05:30 committed by GitHub
commit 3f3f120825
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 376 additions and 22 deletions

View file

@ -361,7 +361,7 @@ it.instance(
expect(Object.keys(yield* mcp.tools())).toEqual(["paged-server_tool-one", "paged-server_tool-two"])
expect(Object.keys(yield* mcp.prompts())).toEqual(["paged-server:prompt-one", "paged-server:prompt-two"])
expect(Object.keys(yield* mcp.resources())).toEqual(["paged-server:resource-one", "paged-server:resource-two"])
expect(Object.keys(yield* mcp.resources())).toEqual(["paged-server:test://one", "paged-server:test://two"])
expect(serverState.listToolsCalls).toBe(2)
expect(serverState.listPromptsCalls).toBe(2)
expect(serverState.listResourcesCalls).toBe(2)
@ -796,7 +796,10 @@ it.instance(
Effect.gen(function* () {
lastCreatedClientName = "resource-server"
const serverState = getOrCreateClientState("resource-server")
serverState.resources = [{ name: "my-resource", uri: "file:///test.txt", description: "A test resource" }]
serverState.resources = [
{ name: "my-resource", uri: "file:///test.txt", description: "A test resource" },
{ name: "my-resource", uri: "ui://component-state", description: "A second resource with same name" },
]
yield* mcp.add("resource-server", {
type: "local",
@ -804,10 +807,10 @@ it.instance(
})
const resources = yield* mcp.resources()
expect(Object.keys(resources).length).toBe(1)
const key = Object.keys(resources)[0]
expect(key).toContain("resource-server")
expect(key).toContain("my-resource")
expect(Object.keys(resources)).toEqual([
"resource-server:file:///test.txt",
"resource-server:ui://component-state",
])
}),
),
{
@ -863,7 +866,7 @@ it.instance(
expect(statusName(result.status, "resource-only-server")).toBe("connected")
expect(serverState.listToolsCalls).toBe(0)
expect(Object.keys(yield* mcp.tools())).toHaveLength(0)
expect(Object.keys(yield* mcp.resources())).toEqual(["resource-only-server:docs"])
expect(Object.keys(yield* mcp.resources())).toEqual(["resource-only-server:docs://readme"])
expect(serverState.listResourcesCalls).toBe(1)
expect(serverState.listPromptsCalls).toBe(0)
}),

View file

@ -269,7 +269,7 @@ mcpTest.instance(
const result = yield* mcp.authenticate("test-oauth-resources")
expect(result.status).toBe("connected")
expect(listToolsCalls).toBe(0)
expect(Object.keys(yield* mcp.resources())).toEqual(["test-oauth-resources:docs"])
expect(Object.keys(yield* mcp.resources())).toEqual(["test-oauth-resources:docs://readme"])
}),
),
{ config: config("test-oauth-resources") },