mcp.ts 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. import { Effect, Layer, Stream } from "effect"
  2. import { Config } from "@opencode-ai/core/config"
  3. import { Location } from "@opencode-ai/core/location"
  4. import { MCP } from "@opencode-ai/core/mcp/index"
  5. import { AbsolutePath } from "@opencode-ai/core/schema"
  6. import { location } from "./location"
  7. export const emptyMcpLayer = Layer.succeed(
  8. MCP.Service,
  9. MCP.Service.of({
  10. servers: () => Effect.succeed([]),
  11. add: () => Effect.die("unused mcp.add"),
  12. connect: () => Effect.die("unused mcp.connect"),
  13. disconnect: () => Effect.die("unused mcp.disconnect"),
  14. remove: () => Effect.die("unused mcp.remove"),
  15. tools: () => Effect.succeed([]),
  16. callTool: () => Effect.die("unused mcp.callTool"),
  17. instructions: () => Effect.succeed([]),
  18. prompts: () => Effect.succeed([]),
  19. prompt: () => Effect.succeed(undefined),
  20. resourceCatalog: () => Effect.succeed(MCP.ResourceCatalog.make({ resources: [], templates: [] })),
  21. readResource: () => Effect.succeed(undefined),
  22. }),
  23. )
  24. export const emptyConfigLayer = Config.testLayer()
  25. export const testLocationLayer = Layer.succeed(
  26. Location.Service,
  27. Location.Service.of(location({ directory: AbsolutePath.make(process.cwd()) })),
  28. )