| name | lsp-implement |
| description | Find all concrete implementations of an interface or abstract type. Use when you need to know what types satisfy an interface, or what subtypes exist before changing a base type. |
| argument-hint | [interface-or-type-name] |
| user-invocable | true |
| allowed-tools | mcp__lsp__start_lsp mcp__lsp__get_server_capabilities mcp__lsp__go_to_symbol mcp__lsp__go_to_implementation mcp__lsp__type_hierarchy mcp__lsp__open_document |
| license | MIT |
| compatibility | Requires the agent-lsp MCP server (github.com/blackwell-systems/agent-lsp) |
| metadata | {"required-capabilities":"implementationProvider","optional-capabilities":"typeHierarchyProvider workspaceSymbolProvider"} |
Requires the agent-lsp MCP server.
lsp-implement
Find every concrete type that implements an interface, or every subtype of an
abstract type. Read-only — does not modify any files.
Use this skill before changing an interface signature, adding a method to
an interface, or removing a base-type method. It tells you every type that
must be updated.
Invocation: User provides type_name (e.g. "Handler", "io.Reader").
Optionally provide workspace_root.
Prerequisites
Check server capabilities — go_to_implementation and type_hierarchy are
optional features not implemented by all language servers:
mcp__lsp__get_server_capabilities()
Note which of go_to_implementation and type_hierarchy appear in
supported_tools. The steps below depend on this result.
If neither is supported, report "Server does not support implementation lookup" and stop.
Step 1 — Locate the interface or type
mcp__lsp__go_to_symbol({
"symbol_path": "<TypeName>",
"workspace_root": "/abs/path" // optional
})
→ returns: file, line, column (1-indexed)
Open the file so the language server tracks it:
mcp__lsp__open_document({
"file_path": "<file from go_to_symbol>"
})
Record file, line, column for subsequent steps.
Step 2 — Find all implementations
Only if go_to_implementation appears in supported_tools.
mcp__lsp__go_to_implementation({
"file_path": "<file>",
"line": <line>,
"column": <column>
})
Returns a list of locations — each is a concrete type that satisfies the
interface. Group by file. Record type names and locations.
If go_to_implementation is not supported: skip; note in report.
Step 3 — Type hierarchy (subtypes and supertypes)
Only if type_hierarchy appears in supported_tools.
mcp__lsp__type_hierarchy({
"file_path": "<file>",
"line": <line>,
"column": <column>,
"direction": "subtypes" // use "both" to also see what this type extends
})