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 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
NameRequiredDescriptionDefault
nameYesProvider name WITHOUT 'terraform-provider-' prefix (e.g., 'aws', 'kubernetes')
namespaceYesProvider namespace (e.g., 'hashicorp', 'opentofu')
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

  • 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); }
  • 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"); } }
  • 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"), };
  • 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}`); } });

Other Tools

Related Tools

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