get-resource-docs
Retrieve detailed documentation for OpenTofu resources by specifying provider namespace, name, and resource details, simplifying resource understanding and implementation.
Instructions
Get detailed documentation for a specific OpenTofu resource by provider namespace, provider name, and resource name.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Provider name WITHOUT 'terraform-provider-' prefix (e.g., 'aws', 'kubernetes') | |
| namespace | Yes | Provider namespace (e.g., 'hashicorp', 'opentofu') | |
| resource | Yes | Resource name WITHOUT provider prefix (e.g., 's3_bucket', 'instance') | |
| version | No | Provider version (e.g., 'v4.0.0'). If not specified, latest version will be used |
Implementation Reference
- src/registry/index.ts:118-120 (handler)Main handler method in RegistryClient that retrieves documentation for a specific OpenTofu resource by delegating to the shared fetchMarkdownDoc helper.async getResourceDocs(namespace: string, name: string, target: string, version?: string): Promise<string> { return await this.fetchMarkdownDoc("resource", namespace, name, target, version); }
- src/registry/index.ts:126-139 (helper)Private helper method that determines the provider version if not provided, constructs the API path for the resource documentation markdown file, and fetches it using the API client.private async fetchMarkdownDoc(docType: DocType, namespace: string, name: string, docName: string, version?: string): Promise<string> { let targetVersion = version; if (!targetVersion) { targetVersion = await this.getLatestProviderVersion(namespace, name); if (!targetVersion) { throw new Error(`Could not determine latest version for provider ${namespace}/${name}`); } } const path = `/registry/docs/providers/${namespace}/${name}/${targetVersion}/${docType}s/${docName}.md`; console.error(`Fetching ${path}`); return this.fetchFromApi<string>(path, {}, "text"); } }
- src/servers/registry/index.ts:23-28 (schema)Zod schema defining the input parameters for the 'get-resource-docs' tool: namespace, name (provider), resource, and optional version.const resourceDocsSchema = { namespace: z.string().min(1).describe("Provider namespace (e.g., 'hashicorp', 'opentofu')"), name: z.string().min(1).describe("Provider name WITHOUT 'terraform-provider-' prefix (e.g., 'aws', 'kubernetes')"), resource: z.string().min(1).describe("Resource name WITHOUT provider prefix (e.g., 's3_bucket', 'instance')"), version: z.string().optional().describe("Provider version (e.g., 'v4.0.0'). If not specified, latest version will be used"), };
- src/servers/registry/index.ts:117-125 (registration)MCP server tool registration for 'get-resource-docs', including description, schema reference, and thin wrapper handler that calls RegistryClient.getResourceDocs and handles errors.server.tool("get-resource-docs", "Get detailed documentation for a specific OpenTofu resource by provider namespace, provider name, and resource name.", resourceDocsSchema, async (params) => { try { const resourceDocs = await client.getResourceDocs(params.namespace, params.name, params.resource, params.version); return textResult(resourceDocs); } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : "Resource documentation not found"; return textResult(`Failed to get documentation for resource ${params.name}_${params.resource}: ${errorMessage}`); } });