Skip to main content
Glama
opentofu

OpenTofu MCP Server

Official
by opentofu

get-resource-docs

Retrieve detailed documentation for OpenTofu resources by specifying provider namespace, name, and resource identifier to understand configuration options and usage.

Instructions

Get detailed documentation for a specific OpenTofu resource by provider namespace, provider name, and resource name.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
namespaceYesProvider namespace (e.g., 'hashicorp', 'opentofu')
nameYesProvider name WITHOUT 'terraform-provider-' prefix (e.g., 'aws', 'kubernetes')
resourceYesResource name WITHOUT provider prefix (e.g., 's3_bucket', 'instance')
versionNoProvider version (e.g., 'v4.0.0'). If not specified, latest version will be used

Implementation Reference

  • The tool handler function for 'get-resource-docs', which calls RegistryClient.getResourceDocs and returns the documentation as text, with error handling.
    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}`); } });
  • Input schema/validation for the get-resource-docs tool using Zod.
    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"), };
  • RegistryClient method that retrieves resource documentation by delegating to fetchMarkdownDoc.
    async getResourceDocs(namespace: string, name: string, target: string, version?: string): Promise<string> { return await this.fetchMarkdownDoc("resource", namespace, name, target, version); }
  • Core helper function that resolves the provider version if needed and fetches the markdown documentation from the OpenTofu Registry API.
    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"); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/opentofu/opentofu-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server