Skip to content

Commit e851084

Browse files
committed
docs: update usage, architecture, maintenance
* contributing, node maintenance schedule * architecture, recent adds for features and planning * development, minor adds for node maintenance, future work * usage, add recent adds, refactors for tools, resources
1 parent 396b0d5 commit e851084

4 files changed

Lines changed: 104 additions & 47 deletions

File tree

CONTRIBUTING.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,23 @@ npm run test:integration
142142

143143
This mode leverages the `--mode test` and `--mode-test-url` flags to redirect resource lookups to a fixture server instead of live or local resources.
144144

145+
## Maintenance: Node.js engine bumps
146+
147+
The `Node.js` engine requirements are updated on a predictable biannual schedule to ensure the server remains secure, leverages modern runtime features, and provides stability for consumers.
148+
149+
### Schedule and process
150+
- **Timing**: Bumps are generally targeted for **Spring (April/May)** and **Fall (October/November)**, aligned with the [Node.js release schedule](https://nodejs.org/en/about/previous-releases) as versions enter or exit LTS.
151+
- **Security**: Out-of-band updates may be performed if critical security considerations arise.
152+
- **Version Targets**:
153+
- Focus on the latest **even-numbered (LTS/Stable)** versions (e.g., bumping to 22, 24, or 26).
154+
- GitHub Workflows should be updated to include the latest available even version.
155+
156+
### Acceptance criteria for bumps
157+
- Update `package.json` engine requirements.
158+
- Update related GitHub Action workflows (CI/CD).
159+
- Update "Environmental Requirements" in documentation.
160+
- Ensure all tests pass on the new target version.
161+
145162
## AI agent
146163

147164
### User Section

docs/architecture.md

Lines changed: 50 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,26 @@ The PatternFly MCP server is centered around the concept of a library for all th
66

77
### The library, PatternFly integration
88

9-
PatternFly integration is centered around the following current, and future, tools:
10-
- Searching for a resource
11-
- Use and read a resource
12-
- Finding, or discovering, a resource
9+
The PatternFly MCP server provides a hybrid documentation system that merges baseline guidelines with dynamic content. It is centered around a **Resource Metadata** discovery layer that powers the following core tools:
1310

14-
#### Search PatternFly documentation
11+
- **Searching for resources**: Querying the library for relevant documentation and components.
12+
- **Reading resources**: Accessing full documentation and machine-readable schemas.
13+
- **Discovering resources**: Navigating the library via automated indexes and URI templates.
1514

16-
A built-in tool for searching PatternFly documentation and resources integrated into the server.
15+
#### Hybrid Documentation Model
1716

18-
#### Use PatternFly documentation
17+
The library maintains a balance between being stable and current:
18+
- **Baseline Data**: Core guidelines and accessibility standards integrated directly into the server.
19+
- **Dynamic Content**: Component documentation and schemas synced from the PatternFly implementation, ensuring the LLM always has access to the latest props and patterns.
1920

20-
A built-in tool for reading and using PatternFly documentation and resources integrated into the server.
21+
#### Discovery Layer (Resource Metadata)
2122

22-
#### Find and discover PatternFly documentation
23+
Instead of a standalone "discovery" tool, the server implements a robust **Resource Metadata system**. This system:
24+
- Generates automated indexes for all available documentation (`patternfly://docs/index`) and schemas (`patternfly://schemas/index`).
25+
- Supports completion logic for MCP clients, allowing users to browse available resources effortlessly.
26+
- Provides parameterized URI templates (RFC 6570) like `patternfly://docs/{name}` for direct, predictable access.
2327

24-
An evolving "future" tool (still undergoing refinement) for finding PatternFly documentation and resources not directly integrated into the server.
25-
26-
> This tool treats the MCP server as a library. Like a library, sometimes you need an interlibrary loan to gain access to the resource you need.
27-
>
28-
> The interlibrary concept is key because it starts to highlight that this third MCP tool could
29-
> - Help provide updates for all PatternFly MCP server built-in tools, resources, and prompts
30-
> - Maintain up-to-date documentation and resources
31-
> - Provide a tailored experience for users based on their use patterns (e.g., a designer's experience is tailored to design, a developer's experience is tailored to development)
28+
> This discovery layer treats the MCP server as a living library. It enables the server to provide updates for all built-in tools and resources while maintaining a tailored experience based on user patterns (e.g., tailoring responses for designers vs. developers).
3229
3330
### Tools, resources, and prompts as customizable plugins
3431

@@ -48,59 +45,72 @@ Key goals aided by moving towards plugins:
4845
flowchart TD
4946
subgraph A1["MCP server"]
5047
subgraph E1["Session context"]
51-
subgraph F1["Logging, stats context"]
48+
subgraph F1["Logging, Resource discovery context"]
5249
subgraph F1A["Built-In tools"]
53-
F1AA(["Search PF docs"])
54-
F1AB(["Use PF docs"])
50+
F1AA(["Search PatternFly docs"])
51+
F1AB(["Use PatternFly docs"])
5552
end
56-
F1B --> F1A
57-
F1B(["Built-In resources"])
53+
F1B <--> F1A
54+
F1B(["Built-In resources & discovery layer"])
5855
end
5956
end
6057
D1(["Server proxy"])
58+
D1 <--> F1
59+
subgraph G1["Child process host"]
60+
G1A(["Tools host & isolation sandbox"])
61+
end
62+
D1 <--> G1
6163
end
62-
B1(["Local external tools, prompts, resources"])
64+
B1(["Local and remote external tools, prompts, resources"])
6365
B1 <--> D1
6466
```
6567

6668
## Roadmap
6769

6870
### Planned features and integrations
6971

70-
To get towards our future state, there are a series of planned features and integrations.
72+
Our roadmap focuses on expanding the server's reach and providing a more integrated development experience.
7173

72-
Current focus:
73-
- **YAML configuration for remote tools, resources and prompts** - YAML configuration for remote MCP tools, resources, and prompt plugins
74-
- **MCP resource, prompts, and helper function sharing** - A way to share MCP resources, prompts, and helper functions towards external tool plugins.
75-
- **Find PatternFly documentation tool** - A tool that reaches out to known PatternFly documentation sources, caches locally, and integrates the results with existing MCP tools and resources.
76-
- **PatternFly API integration** - A JSON API for PatternFly documentation, components, and patterns.
77-
- **Hosted resource for sharing MCP tools, resources, prompts** - Shared tooling customization through PatternFly AI tooling repository (or equivalent)
74+
#### In-progress
75+
- **PatternFly API Integration**: A JSON API for documentation, components, and patterns that ensures the server is always in sync with the latest releases.
76+
- **Child Process Lifecycle Management**: Background processes for API synchronization and tool isolation.
7877

79-
Under consideration:
80-
- **MCP client** - A tailored MCP client specific for the PatternFly MCP server.
81-
- **Auditing for shared tools, resources, and prompts** - An auditing tool that helps you refine your shared tools, resources, and prompts.
82-
- **Containerized PatternFly MCP server, client, and LLM** - A containerized PatternFly MCP server, client, and embedded LLM. Use your own PatternFly chat client resource.
78+
#### Future goals
79+
- **Resource-Tool Integration**: Directly integrate MCP resources into tool responses to reduce token counts and allow tools to accept URI links as inputs.
80+
- **Agentless MCP Client**: An MCP client for use without an LLM, allowing PatternFly tooling to integrate into CLI tools and CI/CD pipelines.
81+
- **Environment & Analysis Tooling**: A third built-in tool focused on environment snapshots, code analysis, and whitelisted resource access for local project analysis.
82+
- **YAML Configuration**: Remote tool, resource, and prompt plugins configured via YAML.
83+
- **Resource/Helper Sharing**: Mechanisms to share resources and helper functions across external tool plugins.
8384

8485
#### Future state
8586

8687
```mermaid
8788
flowchart TD
8889
subgraph A1["MCP server"]
8990
subgraph E1["Session context"]
90-
subgraph F1["Logging, stats context"]
91+
subgraph F1["Logging, Resource discovery context"]
9192
F1C(["Built-In prompts"])
9293
F1C <--> F1A
9394
subgraph F1A["Built-In tools"]
94-
F1AA(["Search PF docs"])
95-
F1AB(["Use PF docs"])
96-
F1AC(["Find PF docs"])
95+
F1AA(["Search PatternFly docs"])
96+
F1AB(["Use PatternFly docs"])
97+
F1AC(["Analyze environment"])
9798
end
9899
F1B <--> F1A
99-
F1B(["Built-In resources"])
100+
F1B(["Built-In resources & discovery layer"])
100101
end
101102
end
102-
F1B --> D1
103103
D1(["Server proxy"])
104+
D1 <--> F1
105+
subgraph G1["Child process host"]
106+
G1A(["Tools host & isolation sandbox"])
107+
G1B(["API synchronization process"])
108+
end
109+
D1 <--> G1
110+
subgraph H1["Agentless client layer"]
111+
H1A(["CLI & Automation integration"])
112+
end
113+
A1 <--> H1
104114
end
105115
B1(["Local and remote external tools, prompts, resources"])
106116
B1 <--> D1

docs/development.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ Complete guide to using the PatternFly MCP Server for development including CLI
77
- [Programmatic Usage](#programmatic-usage)
88
- [Tool Plugins](#tool-plugins)
99
- [Initial Troubleshooting](#initial-troubleshooting)
10+
- [Project Maintenance](#project-maintenance)
11+
- [In-progress and future work](#in-progress-and-future-work)
1012

1113
## CLI Usage
1214

@@ -128,6 +130,11 @@ const server: PfMcpInstance = await start(options);
128130

129131
The documentation catalog `src/docs.json` pins remote resources to specific commit SHAs (or explicit refs) for stability and reproducibility. This avoids unexpected upstream changes from breaking results. The `searchPatternFlyDocs` tool handles these lookups transparently for the user.
130132

133+
#### Environmental Requirements
134+
135+
- **Node.js 20+**: Required to run the core MCP server.
136+
- **Node.js 22+**: Required for loading external tool plugins (`--tool`) and for developers working on advanced process isolation features.
137+
131138
**Example: Programmatic test mode**
132139
```typescript
133140
import { start, type PfMcpInstance } from '@patternfly/patternfly-mcp';
@@ -378,3 +385,10 @@ See [examples/toolPluginHelloWorld.js](examples/toolPluginHelloWorld.js) for a b
378385
- **Missing tools/resources**: Verify the server started successfully and check logs with `--log-stderr`.
379386
- **Type errors**: Ensure TypeScript types are installed: `npm install --save-dev @types/node`
380387

388+
## Project Maintenance
389+
390+
For information on how we manage project dependencies, including our biannual Node.js engine bump schedule, please refer to the [Maintenance section in CONTRIBUTING.md](../CONTRIBUTING.md#maintenance-nodejs-engine-bumps).
391+
392+
## In-progress and future work
393+
394+
For more information on our development roadmap, including "in-progress" and "future" work, please refer to the [Architecture & Roadmap](./architecture.md#roadmap) documentation.

docs/usage.md

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,31 @@ Fetch full documentation and component JSON schemas for specific PatternFly URLs
6262
6363
## Built-in resources
6464

65-
> MCP resources represent indexed collections of documentation.
65+
> MCP resources represent indexed collections of documentation and machine-readable metadata.
6666
67-
The server exposes this resource-centric architecture via the `patternfly://` URI scheme:
67+
The server exposes a resource-centric architecture via the `patternfly://` URI scheme. These resources can be used directly by MCP clients or referenced by tools to provide context.
6868

69-
- **`patternfly://context`**: General PatternFly MCP server context and high-level rules.
70-
- **`patternfly://docs/index`**: Index of all available documentation pages.
71-
- **`patternfly://docs/{name}`**: Documentation for a specific component (e.g., `patternfly://docs/Button`).
72-
- **`patternfly://schemas/index`**: Index of all available component schemas.
73-
- **`patternfly://schemas/{name}`**: JSON Schema for a specific component (e.g., `patternfly://schemas/Button`).
69+
### Discovery resources
70+
71+
Use these indexes to discover what is available in the library:
72+
73+
- **`patternfly://docs/index{?version,category,section}`**: A comprehensive index of all available PatternFly documentation pages.
74+
- **`patternfly://components/index{?version,category}`**: A list of all available PatternFly component names.
75+
- **`patternfly://components/meta{?version}`**: Metadata discovery for components, helpful for understanding available filter parameters.
76+
- **`patternfly://schemas/index{?version,category}`**: An index of all available component JSON schemas.
77+
78+
### Component and Documentation resources
79+
80+
Access specific component documentation or technical specifications using the following URI templates (RFC 6570):
81+
82+
- **`patternfly://docs/{name}{?version,category,section}`**: Full human-readable documentation for a specific component (e.g., `patternfly://docs/Button`) or guideline.
83+
- **`patternfly://schemas/{name}{?version,category}`**: Machine-readable JSON Schema for a specific component, detailing props, types, and validation rules (e.g., `patternfly://schemas/Button`).
84+
85+
### Context and guidelines
86+
87+
- **`patternfly://context`**: General PatternFly MCP server context, including high-level development rules and accessibility guidelines.
88+
89+
> **Tip for LLMs**: When a user asks about a component you aren't familiar with, first check `patternfly://docs/index` to find the correct name, then read the documentation via `patternfly://docs/{Name}`. Use `patternfly://components/index` for a cleaner list of component-only names.
7490
7591
## MCP client configuration
7692

0 commit comments

Comments
 (0)