Leaderboard
Popular Content
Showing content with the highest reputation on 01/31/2026 in all areas
-
I wanted a way to chat with my Processwire site and built a Module (PW MCP) and an MCP server to connect into it. It's a private repo at the moment but it can be public if anyone finds it useful. It's basically a way to use the Cursor Chat Ui to query my site, fields, templates and content. Here's part of the readme which explains it better. What Is It? ProcessWire MCP is a bridge between ProcessWire and Cursor IDE (the AI-powered code editor). It lets you query your ProcessWire site's structure and content directly from Cursor's chat interface using natural language. Instead of writing selectors or browsing the admin, you can just ask: "What templates does this site have?" "Show me the fields on the blog-post template" "Search for pages containing 'summer'" "Find all images with 'lake' in the filename" Why I Built It Cursor can see your template files and code in the local directory, but it can't see what's actually in your ProcessWire database — which templates and fields are registered, what pages exist, or what content they contain. With ProcessWire MCP, the AI can: Query the actual database schema (not just parse template files) Look up page content by ID, path, or selector Understand field configurations (types, settings, which templates use them) Search across all text content and find files/images Get RepeaterMatrix content with type labels See file metadata (dimensions, descriptions, URLs) It's the difference between seeing $page->body in code vs. knowing what that page's body actually contains. Architecture Cursor Chat → MCP Server (Node.js) → PHP CLI → ProcessWire API The module consists of: PwMcp — A ProcessWire module with a CLI interface mcp-server — A Node.js server that speaks the Model Context Protocol The CLI can also be used standalone for quick queries from terminal. Available Commands Command Description health Check connection and get site info list-templates List all templates with field counts get-template [name] Get template details and fields list-fields List all fields with types get-field [name] Get field details and usage get-page [id\|path] Get page by ID or path with all field values query-pages [selector] Query pages using PW selectors search [query] Search content across all text fields search-files [query] Search files by name/extension export-schema Export complete site schema Example: Health Check php site/modules/PwMcp/bin/pw-mcp.php health --pretty { "status": "ok", "pwVersion": "3.0.241", "siteName": "www.example.com", "moduleLoaded": true, "counts": { "templates": 45, "fields": 72, "pages": 960 } } Example: Content Search Ask Cursor: "Search for pages containing 'summer'" { "query": "summer", "count": 5, "results": [ { "id": 1764, "title": "Lake District walks in summer", "path": "/guides/lake-district-summer/", "template": "page-guide", "matchedField": "Body", "snippet": "The Lake District offers some of the best walking trails in summer. From gentle lakeside strolls to challenging fell walks..." } ] } Example: File Search Ask Cursor: "Find images with 'lake' in the filename" { "query": "lake", "count": 5, "results": [ { "filename": "lake-windermere-sunset.jpg", "url": "/site/assets/files/1070/lake-windermere-sunset.jpg", "size": 31207, "sizeStr": "30.5 kB", "description": "Sunset over Lake Windermere", "field": "Images", "page": { "id": 1070, "title": "Lake District walks in summer", "path": "/guides/lake-district-summer/" }, "width": 500, "height": 626 } ] } Example: Get Page with All Fields Ask Cursor: "Get the page at /about/" { "id": 1050, "name": "about", "path": "/about/", "url": "/about/", "template": "basic-page", "status": 1, "statusName": "published", "parent": { "id": 1, "path": "/", "title": "Home" }, "numChildren": 5, "created": "2023-05-15T10:30:00+00:00", "modified": "2024-11-20T14:22:00+00:00", "fields": { "title": "About Us", "body": "<p>We are a team of dedicated professionals...</p>", "Images": { "_count": 2, "_files": ["team-photo.jpg", "office.jpg"] } } } Example: RepeaterMatrix Support The module fully supports RepeaterMatrix fields, returning the actual content with type labels: { "matrix": { "_count": 3, "_items": [ { "_typeId": 1, "_typeLabel": "Body", "Body": "<h2>Welcome to our guide</h2><p>This guide covers...</p>", "Images": null }, { "_typeId": 2, "_typeLabel": "FAQs", "faq_question": "What is the best time to visit?", "faq_answer": "The summer months offer the best weather for walking..." }, { "_typeId": 3, "_typeLabel": "Call to Action", "cta_title": "Plan Your Visit", "cta_link": "/contact/" } ] } } So thats the first part done and working. My next plan is to be able to 1. PULL / convert a databse page into a local text file which lists all page properties, fields, template etc 2. edit the file as a local text file 3 PUSH the text file back into PW so that the original content picks up the changes Just having fun and building something useful. Very likely there are similar solutions or better ways to handle this but this suits my workflow ATM. Cheers P1 point
-
Included are more than 70 issue fixes and 175 commits. Here we’ll zoom in on the numerous new features and improvements to the core for one of our best new versions yet! https://processwire.com/blog/posts/pw-3.0.255/1 point
-
Thank you for sharing your invaluable work and contributions @bernhard! You had a lot of options with how to move forward and I believe that open sourcing your modules ensures that your work carries on into the future and continues to benefit both ProcessWire developers and users alike. I do want to share some thoughts and contribute to what @bernhard said about "feature complete". Most of the modules you have built are indeed robust and offer a large number of features that are implemented well and will continue to bring value long into the future. Modules like RockPageBuilder offer a solid set of features and are built in a very extensible and customizable way that puts a lot of power in the hands of developers. If any are reading this and are just finding out about it or have not yet had a reason to use it yet, I highly recommend taking a look! Other modules like RockMigrations have become staples in my workflow and will continue to be. Whether new features are added or not, the utility and quality of these contributions stand on their own. I also want to share some thoughts with the greater community. ProcessWire is a powerful tool that is developer-focused and easy to use for beginners while being powerful enough for advanced applications and more senior developers. It's one of the reasons we all love working with this platform. It also means that this community is comprised of people of many levels of skill and creative abilities. These are the factors that make open source software work. Whether you're working with the core or a module from any developer that is open source, your contributions matter and they are a way to "pay it forward" and give back to the community that makes your work possible. The vast majority of modules are free to download and use, and that "free" to you comes at a cost to module and core developers in both programming and support time. These are hours spent beyond our professional life. Nights and weekends, and breaks from our jobs to respond when something is urgent. Keep the developers in mind and remember that burnout is a real thing in the open source community. Greater involvement and contribution helps that greatly and also helps the developers you rely on for quality code you use stay engaged and make offering their work to the community enjoyable. Many hands make for light work. If you're using a module and run across an item that can be improved, a bug that hasn't been reported yet, or have an idea for a new feature then please consider forking, contributing, and pushing upstream via PRs on Github. If you are able to see something, take a moment to try and find a solution- I guarantee it will always be greatly appreciated and your efforts will not go unnoticed. You'll find some of mine coming to @bernhard modules in coming weeks. If you haven't contributed to open source before or find the process intimidating, please consider a module contribution for your first time out. The thoughtfulness and helpful attitudes here in the forums continue on module Github repositories. Those repository owners and module maintainers are the same people who are members of one of the greatest developer communities around. Never forked a repository or opened a PR before? Anyone with experience here is ready to help. You'll level up your skills, increase your confidence, and the satisfaction you'll feel cannot be overstated. These can be as simple as small changes to make a code base compatible with a new version of PHP, or a little tweak to some JS! I wanted to take a moment to mention this here because the release of these modules, much like those that were open-sourced by @kongondo and others, have a future through contribution. I don't mean to hijack your thread @bernhard but I think what you have shared offers a great opportunity to communicate these ideas in appreciation and encouragement to others. Thank you again @bernhard for the wealth of knowledge you openly share here and the guidance that you have offered to others. It is inspiring and, on a personal note, has immeasurably advanced my knowledge and confidence as a ProcessWire developer. @Jim Bailie The concept of a paid platform for modules has been discussed by many both in public and private. I don't know that there's a single answer to that question. Hopefully that may come about one day, it would mean a lot to the sustainability of ProcessWire. When it comes to taking a shop from concept to reality from a community standpoint it always comes down to "if not me, then who?". Should Ryan take time from the core to build it? Maybe it would be better for a team to collaborate and offer help to create an official channel. I think what I mentioned above underscores the importance of not relying on one person to solve the problem. I'm sure Craft had a team of people working together to make their shop come to life and also requires work to keep it going. If one person did all of it for Craft I would be truly shocked. Hey- RockCommerce is open source... maybe it's a starting point 😎1 point