Skip to content

Commit f18cc40

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 f18cc40

File tree

6 files changed

+125
-64
lines changed

6 files changed

+125
-64
lines changed

CONTRIBUTING.md

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ Development pull requests (PRs) should be opened against the default branch.
5959
> If your pull request work contains any of the following warning signs
6060
> - has no related issue
6161
> - ignores existing code style
62-
> - out of sync commits (not rebased against the default branch)
62+
> - out-of-sync commits (not rebased against the default branch)
6363
> - poorly structured commits and messages
6464
> - any one commit relies on other commits to work (beyond "review requested updates")
6565
> - dramatic file restructures that attempt complex behavior
@@ -142,9 +142,28 @@ 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+
> Our engine requirements are intended to be the minimum to run the MCP server. They are not intended to be a maximum, as newer versions may introduce breaking changes or require additional configuration.
150+
151+
### Schedule and process
152+
- **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.
153+
- **Security**: Out-of-band updates may be performed if critical security considerations arise.
154+
- **Version Targets**:
155+
- Focus on the latest **even-numbered (LTS/Stable)** versions (e.g., bumping to 22, 24, or 26).
156+
- GitHub Workflows should be updated to include the latest available even version.
157+
158+
### Acceptance criteria for bumps
159+
- Update `package.json` engine requirements.
160+
- Update related GitHub Action workflows (CI/CD).
161+
- Update "Environmental Requirements" in documentation.
162+
- Ensure all tests pass on the new target version.
163+
145164
## AI agent
146165

147-
### User Section
166+
### User section
148167

149168
Current agent interaction can be triggered with the chat command
150169

@@ -162,7 +181,7 @@ to allow customization for your work environment through a tool-agnostic git-ign
162181
Please reference [PatternFly's AI-assisted development guidelines](https://github.com/patternfly/.github/blob/main/CONTRIBUTING.md) for guidance on how to
163182
acknowledge AI agent contributions.
164183

165-
### Agent Only
184+
### Agent only
166185
Agents: This repository contains a hierarchical guideline system. Agents should review agent-only comment blocks.
167186

168187
<!--

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ It is intended to be extensible to meet the needs of different teams and project
1010
- [Node.js 20+](https://nodejs.org/)
1111
- NPM (or equivalent package manager)
1212

13-
## Quick Start
13+
## Quick start
1414

1515
The PatternFly MCP Server supports multiple configurations; see the [usage documentation](./docs/usage.md#mcp-client-configuration) for details.
1616

docs/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
# PatternFly MCP Server Documentation
1+
# PatternFly MCP Server documentation
22

33
Welcome to the PatternFly MCP Server documentation. This guide is organized by user intent.
44

55
### 🚀 Usage
66
- **[MCP Tools and Resources](./usage.md)**: Use built-in tools and resources like `searchPatternFlyDocs` and `usePatternFlyDocs`.
77
- **[Client Configuration](./usage.md)**: Configure the server for your environment.
88

9-
### 🛠️ Developer Reference
9+
### 🛠️ Developer reference
1010
- **[CLI Reference](./development.md#cli-usage)**: Reference of server options.
1111
- **[API Reference](./development.md#programmatic-usage)**: Using the server as a base library in your own Node.js MCP.
1212
- **[Examples](./examples/README.md)**: Standalone snippets for HTTP transport, embedding, and custom tools.
1313

14-
### 🏗️ Architecture & Design
14+
### 🏗️ Architecture & design
1515
- **[System Architecture](./architecture.md)**: Design concept and architecture.
1616
- **[Roadmap](./architecture.md#roadmap)**: Future plans for the project.

docs/architecture.md

Lines changed: 52 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,27 @@ 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 current PatternFly MCP server provides a hybrid documentation system that will merge baseline guidelines with dynamic content. It is centered around a **Resource Metadata** discovery layer that powers the following core concepts:
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 resource indexes and URI templates.
1514

16-
A built-in tool for searching PatternFly documentation and resources integrated into the server.
15+
#### Discovery layer (resource metadata)
1716

18-
#### Use PatternFly documentation
17+
Instead of a standalone "discovery" tool, the server implements a robust **Resource Metadata system**. This system:
18+
- Generates automated indexes for all available documentation (`patternfly://docs/index`), components (`patternfly://components/index`), and schemas (`patternfly://schemas/index`).
19+
- Supports completion logic for MCP clients, allowing LLMs and users to browse available resources effortlessly.
20+
- Provides parameterized URI templates (RFC 6570) like `patternfly://docs/{name}` for direct, predictable access.
21+
- Provides generated `meta` resources that document available MCP resource template parameters for MCP clients that do not have completion (`patternfly://docs/meta`, `patternfly://components/meta`, `patternfly://schemas/meta`).
1922

20-
A built-in tool for reading and using PatternFly documentation and resources integrated into the server.
23+
> 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).
2124
22-
#### Find and discover PatternFly documentation
25+
#### Hybrid documentation model (in-progress)
2326

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)
27+
We'll be introducing our hybrid documentation model in upcoming releases. This concept balances stability and currentness by integrating core guidelines and standards directly into the server while syncing from the latest available PatternFly implementation.
28+
- **Baseline Data**: Core guidelines and standards integrated directly into the server for standalone purposes, quick starts, and immediate access.
29+
- **Dynamic Content**: Content synced from the latest available PatternFly implementation while you work, ensuring the LLM always has access to the latest documentation and patterns.
3230

3331
### Tools, resources, and prompts as customizable plugins
3432

@@ -48,60 +46,74 @@ Key goals aided by moving towards plugins:
4846
flowchart TD
4947
subgraph A1["MCP server"]
5048
subgraph E1["Session context"]
51-
subgraph F1["Logging, stats context"]
49+
subgraph F1["Logging, Resource discovery context"]
5250
subgraph F1A["Built-In tools"]
53-
F1AA(["Search PF docs"])
54-
F1AB(["Use PF docs"])
51+
F1AA(["Search PatternFly docs"])
52+
F1AB(["Use PatternFly docs"])
5553
end
56-
F1B --> F1A
57-
F1B(["Built-In resources"])
54+
F1B <--> F1A
55+
F1B(["Built-In resources & discovery layer"])
5856
end
5957
end
6058
D1(["Server proxy"])
59+
D1 <--> F1
60+
subgraph G1["Child process host"]
61+
G1A(["Tools host & isolation sandbox"])
62+
end
63+
D1 <--> G1
6164
end
62-
B1(["Local external tools, prompts, resources"])
65+
B1(["Local and remote external tools, prompts, resources"])
6366
B1 <--> D1
6467
```
6568

6669
## Roadmap
6770

6871
### Planned features and integrations
6972

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

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)
75+
#### In-progress
76+
- **Hybrid documentation model**: A JSON API for documentation, components, and patterns that ensures the server is always in sync with the latest releases.
77+
- **PatternFly API Integration**: Embedded integration into the server for standalone purposes, quick starts, and immediate access.
78+
- **Child Process Lifecycle Management**: Background process while you work for API synchronization.
7879

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.
80+
#### In-planning and under review
81+
- **Resource-Tool Integration**: Directly integrate MCP resources into tool responses to reduce token counts and allow tools to accept URI links as inputs.
82+
- **Environment & Analysis Tooling**: A third built-in tool focused on environment snapshots, code analysis, and whitelisted resource access for local project analysis.
83+
- **Agentless MCP Client**: An MCP client for use without an LLM, allowing PatternFly tooling to integrate into CLI tools and CI/CD pipelines.
84+
- **YAML Configuration**: Remote tool, resource, and prompt plugins configured via YAML.
85+
- **Resource/Helper Sharing**: Mechanisms to share resources and helper functions across external tool plugins.
8386

8487
#### Future state
8588

8689
```mermaid
8790
flowchart TD
8891
subgraph A1["MCP server"]
8992
subgraph E1["Session context"]
90-
subgraph F1["Logging, stats context"]
93+
subgraph F1["Logging, Resource discovery context"]
9194
F1C(["Built-In prompts"])
9295
F1C <--> F1A
9396
subgraph F1A["Built-In tools"]
94-
F1AA(["Search PF docs"])
95-
F1AB(["Use PF docs"])
96-
F1AC(["Find PF docs"])
97+
F1AA(["Search PatternFly docs"])
98+
F1AB(["Use PatternFly docs"])
99+
F1AC(["Analyze environment"])
97100
end
98101
F1B <--> F1A
99-
F1B(["Built-In resources"])
102+
F1B(["Built-In resources & discovery layer"])
100103
end
101104
end
102-
F1B --> D1
103105
D1(["Server proxy"])
106+
D1 <--> F1
107+
subgraph G1["Child process host"]
108+
G1A(["Tools host & isolation sandbox"])
109+
G1B(["API synchronization process"])
110+
end
111+
D1 <--> G1
112+
end
113+
subgraph H1["Agentless client layer"]
114+
H1A(["CLI & Automation integration"])
104115
end
116+
A1 <--> H1
105117
B1(["Local and remote external tools, prompts, resources"])
106118
B1 <--> D1
107119
```

docs/development.md

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ 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

11-
## CLI Usage
13+
## CLI usage
1214

1315
### Available options
1416

@@ -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';
@@ -220,7 +227,7 @@ const logSubscription = subscribe(logChannel, logHandler);
220227

221228
Reference typings are exported from the package. The full listing can be found in [src/index.ts](../src/index.ts).
222229

223-
### Embedding the Server
230+
### Embedding the server
224231

225232
You can embed the MCP server inside your application using the `start()` function and provide **Tool Modules** directly.
226233

@@ -271,13 +278,13 @@ See [examples/](examples/) for more programmatic usage examples.
271278

272279
You can extend the server's capabilities by loading **Tool Plugins** at startup. These plugins run out‑of‑process in an isolated **Tools Host** to ensure security and stability.
273280

274-
### Environmental Requirements
281+
### Environmental requirements
275282

276283
- **Node.js >= 22**: Loading external tool plugins (`--tool`) requires Node.js version 22 or higher due to the use of advanced process isolation and ESM module loading features.
277284
- **ESM**: Plugins MUST be authored as ECMAScript Modules.
278285
- **Dependency Resolution**: Plugins importing from `@patternfly/patternfly-mcp` require the package to be resolvable in the execution environment. This may require a local `npm install` in the plugin's directory or project root if the package is not available globally.
279286

280-
### Security & Isolation
287+
### Security & isolation
281288

282289
The server provides two isolation modes for external plugins via the `--plugin-isolation` flag:
283290

@@ -293,7 +300,7 @@ The server provides two isolation modes for external plugins via the `--plugin-i
293300
- **`Tool Factory`**: A function wrapper `(options) => Tool` (internal).
294301
- **`Tool Module`**: The programmatic result of `createMcpTool`, representing a collection of tools.
295302

296-
### Authoring Tools
303+
### Authoring tools
297304

298305
We recommend using the `createMcpTool` helper to define tools. It ensures your tools are properly normalized for the server.
299306

@@ -329,7 +336,7 @@ export default createMcpTool([
329336
]);
330337
```
331338

332-
#### Input Schema Format
339+
#### Input schema format
333340

334341
The `inputSchema` property accepts either **plain JSON Schema objects** or **Zod schemas**. Both formats are automatically converted to the format required by the MCP SDK.
335342

@@ -357,24 +364,31 @@ const inputSchema = z.object({
357364

358365
See [examples/toolPluginHelloWorld.js](examples/toolPluginHelloWorld.js) for a basic example.
359366

360-
## Initial Troubleshooting
367+
## Initial troubleshooting
361368

362-
### Tool Plugins
369+
### Tool plugins
363370

364371
- **Plugins don't appear**: Verify the Node version (requires Node.js >= 20; >= 22 for tool plugins) and check logs (enable `--log-stderr`).
365372
- **Startup warnings/errors**: Startup `load:ack` warnings/errors from tool plugins are logged when stderr/protocol logging is enabled.
366373
- **Schema errors**: If `tools/call` rejects with schema errors, ensure `inputSchema` is valid. See [Authoring Tools](#authoring-tools) for details.
367374
- **Network access issues**: If the tool is having network access issues, you may need to configure `--plugin-isolation none`. This is generally discouraged for security reasons but may be necessary in some cases.
368375

369-
### HTTP Transport
376+
### HTTP transport
370377

371378
- **Connection issues**: Ensure the port is not already in use and the host is correct.
372379
- **CORS errors**: Configure `--allowed-origins` if accessing from a web client.
373380
- **DNS rebinding protection**: If behind a proxy, ensure correct `Host` header and configure `--allowed-hosts`.
374381

375-
### General Issues
382+
### General issues
376383

377384
- **Server won't start**: Check Node.js version (requires Node.js >= 20; >= 22 for tool plugins).
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. MCP clients can use these resources directly. [Review the roadmap for future resource updates](./architecture.md#roadmap).
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)