|
5 | 5 | [](https://github.com/semantic-release/semantic-release) |
6 | 6 | [](#) |
7 | 7 |
|
8 | | -A [Model Context Protocol (MCP) server](https://modelcontextprotocol.io/docs/getting-started/intro) that provides structured access to the Terraform IBM Modules (TIM) ecosystem. TIM is a curated collection of IBM Cloud Terraform modules designed to follow best practices. |
| 8 | +A [Model Context Protocol (MCP) server](https://modelcontextprotocol.io/docs/getting-started/intro) that provides structured access to the [Terraform IBM Modules (TIM)](https://github.com/terraform-ibm-modules) ecosystem. TIM is a curated collection of IBM Cloud Terraform modules designed to follow best practices. See the [Overview](#overview) for further details on rational. |
9 | 9 |
|
10 | 10 | This server acts as a bridge, enabling AI models and other tools to intelligently discover and utilize the extensive documentation, examples, and implementation patterns bundled with the [TIM modules](https://github.com/terraform-ibm-modules). It is designed to support AI-assisted coding workflows for creating IBM Cloud infrastructure. |
11 | 11 |
|
12 | | -**About TIM:** [Terraform IBM Modules (TIM)](https://github.com/terraform-ibm-modules) is a collection of curated IBM Cloud Terraform modules available on the [Terraform Registry](https://registry.terraform.io/namespaces/terraform-ibm-modules). Full documentation is available at https://github.com/terraform-ibm-modules/documentation. |
13 | | - |
14 | 12 | ## Quick Start |
15 | 13 |
|
16 | 14 | Get started with TIM-MCP in Claude Desktop in under 2 minutes: |
@@ -100,6 +98,9 @@ uv run pytest |
100 | 98 |
|
101 | 99 | # Run the server locally (STDIO mode - default) |
102 | 100 | uv run tim-mcp |
| 101 | + |
| 102 | +# Launch the MCP inspector |
| 103 | +npx @modelcontextprotocol/inspector uv run tim-mcp |
103 | 104 | ``` |
104 | 105 |
|
105 | 106 | **Requirements:** |
@@ -331,101 +332,6 @@ After configuration, restart Claude Desktop completely. You should see a hammer |
331 | 332 |
|
332 | 333 | Test the connection by asking Claude: "What IBM Cloud Terraform modules are available for VPC?" |
333 | 334 |
|
334 | | -## Available MCP Tools |
335 | | - |
336 | | -Once configured, TIM-MCP provides these tools to Claude for comprehensive Terraform module discovery and implementation: |
337 | | - |
338 | | -### 1. `search_modules` |
339 | | -**Search Terraform Registry for IBM Cloud modules with intelligent result optimization.** |
340 | | - |
341 | | -**Purpose:** Find relevant modules based on search terms, with results optimized by download count for better quality. |
342 | | - |
343 | | -**Inputs:** |
344 | | -- `query` (string, required): Specific search term (e.g., "vpc", "kubernetes", "security") |
345 | | -- `limit` (integer, optional): Maximum results to return (default: 10, range: 1-100) |
346 | | - |
347 | | -**Output:** JSON formatted search results including: |
348 | | -- Module identifiers and basic metadata |
349 | | -- Download counts and verification status |
350 | | -- Descriptions and source repository URLs |
351 | | -- Publication dates and version information |
352 | | - |
353 | | -**Usage Examples:** |
354 | | -- Quick reference: `limit=3` for "I need a VPC module" |
355 | | -- Exploring options: `limit=5-15` (default=5) for comparing alternatives |
356 | | -- Comprehensive research: `limit=20+` for thorough analysis |
357 | | - |
358 | | -### 2. `get_module_details` |
359 | | -**Retrieve structured module metadata from Terraform Registry - lightweight module interface overview.** |
360 | | - |
361 | | -**Purpose:** Get comprehensive module interface information including inputs, outputs, and dependencies without fetching source code. |
362 | | - |
363 | | -**Inputs:** |
364 | | -- `module_id` (string, required): Full module identifier (e.g., "terraform-ibm-modules/vpc/ibm") |
365 | | -- `version` (string, optional): Specific version or "latest" (default: "latest") |
366 | | - |
367 | | -**Output:** Markdown formatted module details including: |
368 | | -- Module description and documentation |
369 | | -- Required and optional input variables with types, descriptions, and defaults |
370 | | -- Available outputs with types and descriptions |
371 | | -- Provider requirements and version constraints |
372 | | -- Module dependencies and available versions |
373 | | - |
374 | | -**When to Use:** First step after finding a module to understand its interface - often sufficient to answer user questions without fetching implementation files. |
375 | | - |
376 | | -### 3. `list_content` |
377 | | -**Discover available paths in a module repository with README summaries.** |
378 | | - |
379 | | -**Purpose:** Explore repository structure to understand available examples, submodules, and solutions before fetching specific content. |
380 | | - |
381 | | -**Inputs:** |
382 | | -- `module_id` (string, required): Full module identifier (e.g., "terraform-ibm-modules/vpc/ibm") |
383 | | -- `version` (string, optional): Git tag/branch to scan (default: "latest") |
384 | | - |
385 | | -**Output:** Markdown formatted content listing organized by category: |
386 | | -- **Root Module:** Main terraform files, inputs/outputs definitions |
387 | | -- **Examples:** Deployable examples showing module usage (ideal starting point) |
388 | | -- **Submodules:** Reusable components within the module |
389 | | -- **Solutions:** Complete architecture patterns for complex scenarios |
390 | | - |
391 | | -**Usage Tips:** Use before `get_content` to select the most relevant path for your needs. |
392 | | - |
393 | | -### 4. `get_content` |
394 | | -**Retrieve source code, examples, and documentation from GitHub repositories with targeted content filtering.** |
395 | | - |
396 | | -**Purpose:** Fetch actual implementation files, examples, and documentation with precise filtering to avoid large responses. |
397 | | - |
398 | | -**Inputs:** |
399 | | -- `module_id` (string, required): Full module identifier (e.g., "terraform-ibm-modules/vpc/ibm") |
400 | | -- `path` (string, optional): Specific path - "" (root), "examples/basic", "modules/vpc", etc. |
401 | | -- `include_files` (list[string], optional): Glob patterns for files to include |
402 | | -- `exclude_files` (list[string], optional): Glob patterns for files to exclude |
403 | | -- `version` (string, optional): Git tag/branch to fetch from (default: "latest") |
404 | | - |
405 | | -**Output:** Markdown formatted content with file contents, organized by: |
406 | | -- File paths and content with appropriate syntax highlighting |
407 | | -- File sizes for reference |
408 | | -- README files are included if they match the patterns (like any other file) |
409 | | - |
410 | | -**Common Glob Patterns:** |
411 | | -- Input variables only: `include_files=["variables.tf"]` |
412 | | -- Basic example: `path="examples/basic", include_files=["*.tf"]` |
413 | | -- Complete module: `include_files=["*.tf"]` |
414 | | -- Documentation: `include_files=["*.md"]` |
415 | | -- README only: `include_files=["README.md"]` |
416 | | -- Everything: `include_files=["*"]` (or omit entirely) |
417 | | - |
418 | | -## Tool Workflow |
419 | | - |
420 | | -The tools are designed to work together in an efficient workflow: |
421 | | - |
422 | | -1. **`search_modules`** → Find relevant modules |
423 | | -2. **`get_module_details`** → Understand module interface (often sufficient) |
424 | | -3. **`list_content`** → Explore repository structure if needed |
425 | | -4. **`get_content`** → Fetch specific implementation details |
426 | | - |
427 | | -This progressive approach minimizes API calls and provides context-aware information at each step. |
428 | | - |
429 | 335 | ## Troubleshooting |
430 | 336 |
|
431 | 337 | **Server not starting:** |
|
0 commit comments