filemaker-patchwork 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- filemaker_patchwork-0.1.0/LICENSE +21 -0
- filemaker_patchwork-0.1.0/PKG-INFO +245 -0
- filemaker_patchwork-0.1.0/README.md +219 -0
- filemaker_patchwork-0.1.0/pyproject.toml +47 -0
- filemaker_patchwork-0.1.0/setup.cfg +4 -0
- filemaker_patchwork-0.1.0/src/filemaker_patchwork.egg-info/PKG-INFO +245 -0
- filemaker_patchwork-0.1.0/src/filemaker_patchwork.egg-info/SOURCES.txt +42 -0
- filemaker_patchwork-0.1.0/src/filemaker_patchwork.egg-info/dependency_links.txt +1 -0
- filemaker_patchwork-0.1.0/src/filemaker_patchwork.egg-info/entry_points.txt +3 -0
- filemaker_patchwork-0.1.0/src/filemaker_patchwork.egg-info/requires.txt +3 -0
- filemaker_patchwork-0.1.0/src/filemaker_patchwork.egg-info/top_level.txt +1 -0
- filemaker_patchwork-0.1.0/src/patchwork/__init__.py +7 -0
- filemaker_patchwork-0.1.0/src/patchwork/__main__.py +5 -0
- filemaker_patchwork-0.1.0/src/patchwork/build.py +249 -0
- filemaker_patchwork-0.1.0/src/patchwork/cli.py +352 -0
- filemaker_patchwork-0.1.0/src/patchwork/export.py +162 -0
- filemaker_patchwork-0.1.0/src/patchwork/mcp.py +172 -0
- filemaker_patchwork-0.1.0/src/patchwork/objects.py +352 -0
- filemaker_patchwork-0.1.0/src/patchwork/ops.py +249 -0
- filemaker_patchwork-0.1.0/src/patchwork/place.py +201 -0
- filemaker_patchwork-0.1.0/src/patchwork/project.py +96 -0
- filemaker_patchwork-0.1.0/src/patchwork/rebrand.py +153 -0
- filemaker_patchwork-0.1.0/src/patchwork/script.py +475 -0
- filemaker_patchwork-0.1.0/src/patchwork/skills/fm-data/SKILL.md +16 -0
- filemaker_patchwork-0.1.0/src/patchwork/skills/fm-explore/SKILL.md +16 -0
- filemaker_patchwork-0.1.0/src/patchwork/skills/fm-standards/SKILL.md +22 -0
- filemaker_patchwork-0.1.0/src/patchwork/skills/patchwork/SKILL.md +66 -0
- filemaker_patchwork-0.1.0/src/patchwork/templates/AGENTS.md +30 -0
- filemaker_patchwork-0.1.0/src/patchwork/templates/gitignore +9 -0
- filemaker_patchwork-0.1.0/src/patchwork/templates/naming.md +12 -0
- filemaker_patchwork-0.1.0/src/patchwork/tools.py +190 -0
- filemaker_patchwork-0.1.0/src/patchwork/uses.py +123 -0
- filemaker_patchwork-0.1.0/src/patchwork/workspace.py +174 -0
- filemaker_patchwork-0.1.0/tests/test_build.py +86 -0
- filemaker_patchwork-0.1.0/tests/test_cli.py +70 -0
- filemaker_patchwork-0.1.0/tests/test_export.py +61 -0
- filemaker_patchwork-0.1.0/tests/test_integration.py +208 -0
- filemaker_patchwork-0.1.0/tests/test_objects.py +102 -0
- filemaker_patchwork-0.1.0/tests/test_place.py +66 -0
- filemaker_patchwork-0.1.0/tests/test_rebrand.py +94 -0
- filemaker_patchwork-0.1.0/tests/test_script.py +70 -0
- filemaker_patchwork-0.1.0/tests/test_tools.py +77 -0
- filemaker_patchwork-0.1.0/tests/test_uses.py +35 -0
- filemaker_patchwork-0.1.0/tests/test_workspace.py +145 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Abdeltoto and Patchwork contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: filemaker-patchwork
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Let your AI agent edit FileMaker: fields, scripts, value lists, layouts and themes, checked and reversible. MCP server for Claude Code, Cursor, Codex and Antigravity.
|
|
5
|
+
Author: Abdeltoto
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Abdeltoto/patchwork-filemaker-mcp
|
|
8
|
+
Project-URL: Issues, https://github.com/Abdeltoto/patchwork-filemaker-mcp/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/CHANGELOG.md
|
|
10
|
+
Keywords: filemaker,claris,fmupgradetool,fmp12,mcp,mcp-server,ai-agents,claude-code,cursor,codex,antigravity,low-code
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
15
|
+
Classifier: Operating System :: MacOS
|
|
16
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Topic :: Database
|
|
19
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Provides-Extra: image
|
|
24
|
+
Requires-Dist: Pillow>=9; extra == "image"
|
|
25
|
+
Dynamic: license-file
|
|
26
|
+
|
|
27
|
+
<!-- mcp-name: io.github.Abdeltoto/patchwork -->
|
|
28
|
+
<div align="center">
|
|
29
|
+
|
|
30
|
+
<img src="https://raw.githubusercontent.com/Abdeltoto/patchwork-filemaker-mcp/main/docs/images/banner.png" alt="Patchwork: let your AI agent edit FileMaker" width="100%">
|
|
31
|
+
|
|
32
|
+
<br>
|
|
33
|
+
|
|
34
|
+
[](https://github.com/Abdeltoto/patchwork-filemaker-mcp/actions/workflows/ci.yml)
|
|
35
|
+
[](https://github.com/Abdeltoto/patchwork-filemaker-mcp/stargazers)
|
|
36
|
+
[](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/LICENSE)
|
|
37
|
+

|
|
38
|
+

|
|
39
|
+

|
|
40
|
+

|
|
41
|
+
[](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/CONTRIBUTING.md)
|
|
42
|
+
|
|
43
|
+
<a href="#connect-your-agent"><img src="https://img.shields.io/badge/Claude_Code-191919?style=for-the-badge&logo=claude&logoColor=D97757" alt="Claude Code"></a>
|
|
44
|
+
<a href="#connect-your-agent"><img src="https://img.shields.io/badge/Cursor-000000?style=for-the-badge&logo=cursor&logoColor=white" alt="Cursor"></a>
|
|
45
|
+
<a href="#connect-your-agent"><img src="https://img.shields.io/badge/Codex-000000?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHJlY3QgeD0iMS41IiB5PSIzIiB3aWR0aD0iMjEiIGhlaWdodD0iMTgiIHJ4PSI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMiIvPjxwYXRoIGQ9Ik02LjUgOWwzLjUgMy0zLjUgMyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0xMi41IDE1LjVoNSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==" alt="Codex"></a>
|
|
46
|
+
<a href="#connect-your-agent"><img src="https://img.shields.io/badge/Antigravity-1a1a2e?style=for-the-badge&logo=google&logoColor=4285F4" alt="Google Antigravity"></a>
|
|
47
|
+
|
|
48
|
+
**[Quick start](#quick-start)** · **[Examples](#see-it-in-action)** · **[Connect your agent](#connect-your-agent)** · **[What it can change](#what-it-can-change)** · **[Field guide](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/docs/fmupgradetool-field-guide.md)** · **[Français](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/README.fr.md)**
|
|
49
|
+
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<br>
|
|
53
|
+
|
|
54
|
+
> **Friday, 4 PM. A client asks for "just one more field" on the detail layout.**
|
|
55
|
+
> You know the drill: define the field, copy the label, nudge every object below it, stretch the part… then do it all again on the next layout.
|
|
56
|
+
>
|
|
57
|
+
> **Patchwork lets your AI agent do those clicks for you.** Just ask, in your own words, the way you would ask a colleague. Your agent adds the field and places it right where you said, writes scripts, creates value lists and restyles layouts, in a real `.fmp12` file. Every change is checked, every change can be undone, and your original file is never touched.
|
|
58
|
+
|
|
59
|
+
Free and open source. Works with Claude Code, Cursor, Codex and Antigravity.
|
|
60
|
+
|
|
61
|
+
<p align="center"><a href="https://youtu.be/AkFhBpB0YYY"><img src="https://raw.githubusercontent.com/Abdeltoto/patchwork-filemaker-mcp/main/docs/images/video-card.jpg" alt="Watch the 90-second Patchwork intro on YouTube" width="80%"></a><br><sub>▶ <a href="https://youtu.be/AkFhBpB0YYY">Watch the 90-second intro on YouTube</a> · <a href="https://youtu.be/g5UkJLiYAhA">Version française</a></sub></p>
|
|
62
|
+
|
|
63
|
+
## Quick start
|
|
64
|
+
|
|
65
|
+
Three commands, then you just talk to your agent.
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pip install filemaker-patchwork
|
|
69
|
+
patchwork doctor # finds the Claris command-line tools
|
|
70
|
+
patchwork init . # wires this folder for Claude Code, Cursor, Codex and Antigravity
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
No install with [uv](https://docs.astral.sh/uv/): `uvx filemaker-patchwork doctor`, and `uvx filemaker-patchwork mcp` as the MCP server command.
|
|
74
|
+
|
|
75
|
+
Then ask your agent: *"Open Invoice.fmp12 and add a Status field to Clients."* That's it.
|
|
76
|
+
|
|
77
|
+
### Good to know
|
|
78
|
+
|
|
79
|
+
- **It changes structure, not records.** Fields, scripts, layouts, value lists, themes. For your data, use the Data API or OData.
|
|
80
|
+
- **It works on closed files, not hosted ones.** Edit a copy, test it, then deploy it as you usually do.
|
|
81
|
+
- **It needs the Claris command-line tools** (FMUpgradeTool and FMDeveloperTool). They come with the FileMaker Server installer, the free trial works, and no server has to run: [install the Claris tools](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/docs/install-fmupgradetool.md). Patchwork itself has no other dependency.
|
|
82
|
+
|
|
83
|
+
## See it in action
|
|
84
|
+
|
|
85
|
+
Four real sessions on the free [Claris Invoice solution](https://marketplace.claris.com/detail/2000.html). For each one: what was asked, what the agent did, and the file before and after. No mockups.
|
|
86
|
+
|
|
87
|
+
<p align="center"><img src="https://raw.githubusercontent.com/Abdeltoto/patchwork-filemaker-mcp/main/docs/images/example-schema.png" alt="Prompt: add a Loyalty Tier field and a value list. The field and the value list appear in the file." width="100%"></p>
|
|
88
|
+
|
|
89
|
+
<p align="center"><img src="https://raw.githubusercontent.com/Abdeltoto/patchwork-filemaker-mcp/main/docs/images/example-script.png" alt="Prompt: write a Say Hello script. The agent copies a real dialog step and creates a two-step script." width="100%"></p>
|
|
90
|
+
|
|
91
|
+
<p align="center"><img src="https://raw.githubusercontent.com/Abdeltoto/patchwork-filemaker-mcp/main/docs/images/example-cleanup.png" alt="Prompt: remove the Dev layouts. Six layouts are deleted and the agent warns about three scripts that pointed at them." width="100%"></p>
|
|
92
|
+
|
|
93
|
+
<p align="center"><img src="https://raw.githubusercontent.com/Abdeltoto/patchwork-filemaker-mcp/main/docs/images/example-rebrand.png" alt="Prompt: rebrand for Maple and Oak. The blue Claris header becomes a forest green Maple and Oak header." width="100%"></p>
|
|
94
|
+
|
|
95
|
+
## How it works
|
|
96
|
+
|
|
97
|
+
<p align="center"><img src="https://raw.githubusercontent.com/Abdeltoto/patchwork-filemaker-mcp/main/docs/images/how-it-works.jpg" alt="An AI agent stitches patches onto a FileMaker file, with a verified check and an undo arrow" width="80%"></p>
|
|
98
|
+
|
|
99
|
+
Why can't your agent just do this on its own? A FileMaker file is a binary file, and its structure hides behind dialogs an agent cannot click. Claris does ship a command-line way in, [FMUpgradeTool](https://help.claris.com/en/app-upgrade-tool-guide/content/index.html), but it is picky: every object is addressed by a UUID, and a patch that is slightly wrong is **silently skipped**, while the tool still prints `Patch File Applied`.
|
|
100
|
+
|
|
101
|
+
Patchwork is the careful assistant in between:
|
|
102
|
+
|
|
103
|
+
| | |
|
|
104
|
+
|:-:|---|
|
|
105
|
+
| 🧵 **Writes the patch** | Reads the file's XML export and builds a patch with the right UUIDs, ids and catalog structure, so your agent doesn't have to |
|
|
106
|
+
| 🔍 **Checks the result** | Re-exports the file after every change and compares it with the previous version. If FileMaker skipped something, the change is refused, not silently lost |
|
|
107
|
+
| 🧭 **Warns before breaking** | Before a delete, it lists the scripts, layouts and calculations that use the object, and waits for your OK |
|
|
108
|
+
| 🕐 **Keeps every version** | Each change is a numbered version with its diff. Changed your mind? `undo` always works |
|
|
109
|
+
| 🔒 **Protects the original** | Everything happens on a working copy. `save` writes a new file and never overwrites yours |
|
|
110
|
+
|
|
111
|
+
More in [how it works](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/docs/how-it-works.md).
|
|
112
|
+
|
|
113
|
+
## Connect your agent
|
|
114
|
+
|
|
115
|
+
One command sets everything up. Run `patchwork init .` in your project folder, new or existing: it adds the rules, the skills and the MCP configuration for every agent, and keeps the files you already have.
|
|
116
|
+
|
|
117
|
+
| Agent | Configuration written by `init` | Then |
|
|
118
|
+
|---|---|---|
|
|
119
|
+
| <img src="https://cdn.simpleicons.org/claude/D97757" width="16"> **Claude Code** | `.mcp.json` · `CLAUDE.md` · `.claude/skills/` | Run `claude` in the folder and approve `patchwork` |
|
|
120
|
+
| <img src="https://cdn.simpleicons.org/cursor/808080" width="16"> **Cursor** | `.cursor/mcp.json` · `.cursor/skills/` | Enable `patchwork` in Settings › MCP |
|
|
121
|
+
| ⌨️ **Codex** | `.codex/config.toml` · `AGENTS.md` · `.agents/skills/` | Trust the project when Codex asks |
|
|
122
|
+
| <img src="https://cdn.simpleicons.org/google/4285F4" width="16"> **Antigravity** | `.agents/mcp_config.json` · `AGENTS.md` · `.agents/skills/` | Open the folder as a workspace |
|
|
123
|
+
|
|
124
|
+
Every agent gets the same 21 tools through `patchwork mcp`, a stdio MCP server. Your file's password stays yours: set it once in your shell with `PATCHWORK_PASSWORD`, and agents never see it. Manual setup and the full tool list: [AI agents](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/docs/ai-agents.md).
|
|
125
|
+
|
|
126
|
+
## What it can change
|
|
127
|
+
|
|
128
|
+
Fields, plain-text scripts, value lists, colors and fonts, even a full rebrand. Every operation below was tried on real files and confirmed by re-exporting them.
|
|
129
|
+
|
|
130
|
+
| | Add | Edit | Delete |
|
|
131
|
+
|---|:-:|:-:|:-:|
|
|
132
|
+
| **Fields** · text, number, date, time, timestamp, container, calculation, global | ✅ | | ✅ |
|
|
133
|
+
| **Scripts**, read and written as FileMaker text | ✅ | ✅ | ✅ |
|
|
134
|
+
| **Value lists** | ✅ | ✅ | ✅ |
|
|
135
|
+
| **Custom functions** | ✅ | ✅ | ✅ |
|
|
136
|
+
| **Layouts** · place a field with its label, whole layout, colors, fonts, swap a field | ✅ field | ✅ | ✅ |
|
|
137
|
+
| **Themes** · colors, fonts, name | | ✅ | |
|
|
138
|
+
| **Tables**, table occurrences | 👁 read | | |
|
|
139
|
+
|
|
140
|
+
> [!TIP]
|
|
141
|
+
> Scripts read and write the way the Script Workspace shows them, one step per line:
|
|
142
|
+
> `Set Field [ Clients::Status ; "Gold" ]`. Edit the text of `patchwork show script NAME` and send it back with `set-steps`: untouched lines keep their exact step, and every step is re-read after the change, so a dropped parameter is caught.
|
|
143
|
+
|
|
144
|
+
What FMUpgradeTool cannot do (record data, a brand-new theme, a single layout object on its own) is listed in [the field guide](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/docs/fmupgradetool-field-guide.md).
|
|
145
|
+
|
|
146
|
+
## Use it without an agent
|
|
147
|
+
|
|
148
|
+
Prefer the terminal? Everything the agent does is a plain command you can run yourself:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
patchwork open "Invoice.fmp12" --account Admin # working copy, version v000
|
|
152
|
+
patchwork add-field Clients "Loyalty Tier"
|
|
153
|
+
patchwork add-value-list "Loyalty Tiers" Bronze Silver Gold
|
|
154
|
+
patchwork log # every version and what changed
|
|
155
|
+
patchwork undo
|
|
156
|
+
patchwork save "Invoice v2.fmp12"
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
<details>
|
|
160
|
+
<summary><b>All commands</b></summary>
|
|
161
|
+
|
|
162
|
+
<br>
|
|
163
|
+
|
|
164
|
+
| Command | What it does |
|
|
165
|
+
|---|---|
|
|
166
|
+
| `open SRC --account NAME` | Starts a working copy in `.patchwork/` (version v000). The source is never modified |
|
|
167
|
+
| `status`, `log` | Current version, and every version with what changed |
|
|
168
|
+
| `ls [KIND] [TABLE]` | Lists layouts, scripts, value lists, custom functions, themes, tables, fields |
|
|
169
|
+
| `show KIND NAME` | Prints a script as FileMaker text (`--xml` for XML), anything else as XML. `show step NAME` prints a real example of a step |
|
|
170
|
+
| `add-field TABLE NAME` | Adds a field: `--type`, `--calc`, `--global`, `--image logo.png` |
|
|
171
|
+
| `add-value-list NAME VALUES...` | Adds a custom value list |
|
|
172
|
+
| `add-custom-function NAME --calc` | Adds a custom function, with `--param` |
|
|
173
|
+
| `add-script NAME STEPS.txt` | Creates a script from FileMaker script text (or `<Step>` XML) |
|
|
174
|
+
| `set-steps`, `append-steps` | Rewrites a script with edited text from `show`, or adds steps at the end |
|
|
175
|
+
| `place-field LAYOUT TO::FIELD --near FIELD` | Puts a field on a layout below another one, with a copy of its look and label. `--side right`, `--label` |
|
|
176
|
+
| `replace KIND NAME FILE.xml` | Replaces an object with your edited version of `show` |
|
|
177
|
+
| `uses KIND NAME` | Lists what references an object, and where its name appears in calculations |
|
|
178
|
+
| `delete KIND NAME` | Deletes a script, layout, value list, custom function or field. Refused while other objects reference it, unless `--force` |
|
|
179
|
+
| `retheme`, `recolor-layouts` | Rewrites colors and fonts of a theme, or of the layouts' local styles |
|
|
180
|
+
| `push PATCH.xml` | Applies a hand-written FMUpgradeTool patch, with the same checks |
|
|
181
|
+
| `undo` | Drops the last version |
|
|
182
|
+
| `save DEST` | Writes the current version to a new `.fmp12` |
|
|
183
|
+
| `rebrand SRC DEST --brand brand.json` | One shot: colors, fonts, logo and theme name on a whole solution |
|
|
184
|
+
| `mcp` | The MCP server for agents |
|
|
185
|
+
| `init DIR` | Wires a folder for Claude Code, Cursor, Codex and Antigravity |
|
|
186
|
+
| `doctor` | Shows which Claris tools Patchwork found |
|
|
187
|
+
|
|
188
|
+
Every editing command takes `-m "note"` for the log and `--dry-run` to write the patch without applying it. More in [examples and recipes](https://github.com/Abdeltoto/patchwork-filemaker-mcp/tree/main/examples).
|
|
189
|
+
|
|
190
|
+
</details>
|
|
191
|
+
|
|
192
|
+
## The FMUpgradeTool field guide
|
|
193
|
+
|
|
194
|
+
The [field guide](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/docs/fmupgradetool-field-guide.md) collects every trap FMUpgradeTool sets without telling you, found the hard way on real files. Useful even if you never use Patchwork. A taste:
|
|
195
|
+
|
|
196
|
+
- without `--generateGUIDs`, theme and field patches are skipped;
|
|
197
|
+
- a layout's UUID is **not** the first `<UUID>` inside it;
|
|
198
|
+
- replacing one layout object is skipped, replacing the whole layout works;
|
|
199
|
+
- deleting a script step needs a `ScriptReference` inside each `ScriptStepReference`.
|
|
200
|
+
|
|
201
|
+
Found another one? [Add it](https://github.com/Abdeltoto/patchwork-filemaker-mcp/issues/new?template=field-guide.yml).
|
|
202
|
+
|
|
203
|
+
## FAQ
|
|
204
|
+
|
|
205
|
+
<details>
|
|
206
|
+
<summary><b>Does it work on hosted files?</b></summary>
|
|
207
|
+
<br>
|
|
208
|
+
It works on closed <code>.fmp12</code> files on disk. Take a copy of the hosted file, edit it, test it, then deploy it as you usually do, or move the data with the Claris Data Migration Tool.
|
|
209
|
+
</details>
|
|
210
|
+
|
|
211
|
+
<details>
|
|
212
|
+
<summary><b>Can the agent change records?</b></summary>
|
|
213
|
+
<br>
|
|
214
|
+
No, FMUpgradeTool changes structure only. For records, use the Data API or OData. The <code>fm-data</code> skill explains how.
|
|
215
|
+
</details>
|
|
216
|
+
|
|
217
|
+
<details>
|
|
218
|
+
<summary><b>Which FileMaker versions?</b></summary>
|
|
219
|
+
<br>
|
|
220
|
+
Developed and verified with FileMaker 2026 (26.0.3). Earlier versions that ship FMUpgradeTool and <code>FMDeveloperTool --saveAsXML</code> should work but are untested. A report either way is very welcome.
|
|
221
|
+
</details>
|
|
222
|
+
|
|
223
|
+
<details>
|
|
224
|
+
<summary><b>macOS and Linux?</b></summary>
|
|
225
|
+
<br>
|
|
226
|
+
Wherever the Claris tools run. CI runs on Windows, macOS and Linux.
|
|
227
|
+
</details>
|
|
228
|
+
|
|
229
|
+
<details>
|
|
230
|
+
<summary><b>Is my password safe with an agent?</b></summary>
|
|
231
|
+
<br>
|
|
232
|
+
Yes. It is read from the <code>PATCHWORK_PASSWORD</code> environment variable, passed to the Claris tools, and printed as <code>***</code>. It is never written in a configuration file or shown to the agent.
|
|
233
|
+
</details>
|
|
234
|
+
|
|
235
|
+
## Contributing
|
|
236
|
+
|
|
237
|
+
Found a new FMUpgradeTool trap, wrote a recipe, or want a new operation? Everything is welcome: start with [CONTRIBUTING.md](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/CONTRIBUTING.md). And if Patchwork gives you your Friday afternoon back, a ⭐ helps other FileMaker developers find it.
|
|
238
|
+
|
|
239
|
+
<a href="https://star-history.com/#Abdeltoto/patchwork-filemaker-mcp&Date">
|
|
240
|
+
<img src="https://api.star-history.com/svg?repos=Abdeltoto/patchwork-filemaker-mcp&type=Date" alt="Star history" width="600">
|
|
241
|
+
</a>
|
|
242
|
+
|
|
243
|
+
## License
|
|
244
|
+
|
|
245
|
+
[MIT](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/LICENSE). Patchwork is a community project, not affiliated with or endorsed by Claris International Inc. FileMaker and Claris are trademarks of Claris International Inc. Other product names and logos belong to their owners.
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
<!-- mcp-name: io.github.Abdeltoto/patchwork -->
|
|
2
|
+
<div align="center">
|
|
3
|
+
|
|
4
|
+
<img src="https://raw.githubusercontent.com/Abdeltoto/patchwork-filemaker-mcp/main/docs/images/banner.png" alt="Patchwork: let your AI agent edit FileMaker" width="100%">
|
|
5
|
+
|
|
6
|
+
<br>
|
|
7
|
+
|
|
8
|
+
[](https://github.com/Abdeltoto/patchwork-filemaker-mcp/actions/workflows/ci.yml)
|
|
9
|
+
[](https://github.com/Abdeltoto/patchwork-filemaker-mcp/stargazers)
|
|
10
|
+
[](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/LICENSE)
|
|
11
|
+

|
|
12
|
+

|
|
13
|
+

|
|
14
|
+

|
|
15
|
+
[](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/CONTRIBUTING.md)
|
|
16
|
+
|
|
17
|
+
<a href="#connect-your-agent"><img src="https://img.shields.io/badge/Claude_Code-191919?style=for-the-badge&logo=claude&logoColor=D97757" alt="Claude Code"></a>
|
|
18
|
+
<a href="#connect-your-agent"><img src="https://img.shields.io/badge/Cursor-000000?style=for-the-badge&logo=cursor&logoColor=white" alt="Cursor"></a>
|
|
19
|
+
<a href="#connect-your-agent"><img src="https://img.shields.io/badge/Codex-000000?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHJlY3QgeD0iMS41IiB5PSIzIiB3aWR0aD0iMjEiIGhlaWdodD0iMTgiIHJ4PSI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMiIvPjxwYXRoIGQ9Ik02LjUgOWwzLjUgMy0zLjUgMyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0xMi41IDE1LjVoNSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==" alt="Codex"></a>
|
|
20
|
+
<a href="#connect-your-agent"><img src="https://img.shields.io/badge/Antigravity-1a1a2e?style=for-the-badge&logo=google&logoColor=4285F4" alt="Google Antigravity"></a>
|
|
21
|
+
|
|
22
|
+
**[Quick start](#quick-start)** · **[Examples](#see-it-in-action)** · **[Connect your agent](#connect-your-agent)** · **[What it can change](#what-it-can-change)** · **[Field guide](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/docs/fmupgradetool-field-guide.md)** · **[Français](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/README.fr.md)**
|
|
23
|
+
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<br>
|
|
27
|
+
|
|
28
|
+
> **Friday, 4 PM. A client asks for "just one more field" on the detail layout.**
|
|
29
|
+
> You know the drill: define the field, copy the label, nudge every object below it, stretch the part… then do it all again on the next layout.
|
|
30
|
+
>
|
|
31
|
+
> **Patchwork lets your AI agent do those clicks for you.** Just ask, in your own words, the way you would ask a colleague. Your agent adds the field and places it right where you said, writes scripts, creates value lists and restyles layouts, in a real `.fmp12` file. Every change is checked, every change can be undone, and your original file is never touched.
|
|
32
|
+
|
|
33
|
+
Free and open source. Works with Claude Code, Cursor, Codex and Antigravity.
|
|
34
|
+
|
|
35
|
+
<p align="center"><a href="https://youtu.be/AkFhBpB0YYY"><img src="https://raw.githubusercontent.com/Abdeltoto/patchwork-filemaker-mcp/main/docs/images/video-card.jpg" alt="Watch the 90-second Patchwork intro on YouTube" width="80%"></a><br><sub>▶ <a href="https://youtu.be/AkFhBpB0YYY">Watch the 90-second intro on YouTube</a> · <a href="https://youtu.be/g5UkJLiYAhA">Version française</a></sub></p>
|
|
36
|
+
|
|
37
|
+
## Quick start
|
|
38
|
+
|
|
39
|
+
Three commands, then you just talk to your agent.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
pip install filemaker-patchwork
|
|
43
|
+
patchwork doctor # finds the Claris command-line tools
|
|
44
|
+
patchwork init . # wires this folder for Claude Code, Cursor, Codex and Antigravity
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
No install with [uv](https://docs.astral.sh/uv/): `uvx filemaker-patchwork doctor`, and `uvx filemaker-patchwork mcp` as the MCP server command.
|
|
48
|
+
|
|
49
|
+
Then ask your agent: *"Open Invoice.fmp12 and add a Status field to Clients."* That's it.
|
|
50
|
+
|
|
51
|
+
### Good to know
|
|
52
|
+
|
|
53
|
+
- **It changes structure, not records.** Fields, scripts, layouts, value lists, themes. For your data, use the Data API or OData.
|
|
54
|
+
- **It works on closed files, not hosted ones.** Edit a copy, test it, then deploy it as you usually do.
|
|
55
|
+
- **It needs the Claris command-line tools** (FMUpgradeTool and FMDeveloperTool). They come with the FileMaker Server installer, the free trial works, and no server has to run: [install the Claris tools](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/docs/install-fmupgradetool.md). Patchwork itself has no other dependency.
|
|
56
|
+
|
|
57
|
+
## See it in action
|
|
58
|
+
|
|
59
|
+
Four real sessions on the free [Claris Invoice solution](https://marketplace.claris.com/detail/2000.html). For each one: what was asked, what the agent did, and the file before and after. No mockups.
|
|
60
|
+
|
|
61
|
+
<p align="center"><img src="https://raw.githubusercontent.com/Abdeltoto/patchwork-filemaker-mcp/main/docs/images/example-schema.png" alt="Prompt: add a Loyalty Tier field and a value list. The field and the value list appear in the file." width="100%"></p>
|
|
62
|
+
|
|
63
|
+
<p align="center"><img src="https://raw.githubusercontent.com/Abdeltoto/patchwork-filemaker-mcp/main/docs/images/example-script.png" alt="Prompt: write a Say Hello script. The agent copies a real dialog step and creates a two-step script." width="100%"></p>
|
|
64
|
+
|
|
65
|
+
<p align="center"><img src="https://raw.githubusercontent.com/Abdeltoto/patchwork-filemaker-mcp/main/docs/images/example-cleanup.png" alt="Prompt: remove the Dev layouts. Six layouts are deleted and the agent warns about three scripts that pointed at them." width="100%"></p>
|
|
66
|
+
|
|
67
|
+
<p align="center"><img src="https://raw.githubusercontent.com/Abdeltoto/patchwork-filemaker-mcp/main/docs/images/example-rebrand.png" alt="Prompt: rebrand for Maple and Oak. The blue Claris header becomes a forest green Maple and Oak header." width="100%"></p>
|
|
68
|
+
|
|
69
|
+
## How it works
|
|
70
|
+
|
|
71
|
+
<p align="center"><img src="https://raw.githubusercontent.com/Abdeltoto/patchwork-filemaker-mcp/main/docs/images/how-it-works.jpg" alt="An AI agent stitches patches onto a FileMaker file, with a verified check and an undo arrow" width="80%"></p>
|
|
72
|
+
|
|
73
|
+
Why can't your agent just do this on its own? A FileMaker file is a binary file, and its structure hides behind dialogs an agent cannot click. Claris does ship a command-line way in, [FMUpgradeTool](https://help.claris.com/en/app-upgrade-tool-guide/content/index.html), but it is picky: every object is addressed by a UUID, and a patch that is slightly wrong is **silently skipped**, while the tool still prints `Patch File Applied`.
|
|
74
|
+
|
|
75
|
+
Patchwork is the careful assistant in between:
|
|
76
|
+
|
|
77
|
+
| | |
|
|
78
|
+
|:-:|---|
|
|
79
|
+
| 🧵 **Writes the patch** | Reads the file's XML export and builds a patch with the right UUIDs, ids and catalog structure, so your agent doesn't have to |
|
|
80
|
+
| 🔍 **Checks the result** | Re-exports the file after every change and compares it with the previous version. If FileMaker skipped something, the change is refused, not silently lost |
|
|
81
|
+
| 🧭 **Warns before breaking** | Before a delete, it lists the scripts, layouts and calculations that use the object, and waits for your OK |
|
|
82
|
+
| 🕐 **Keeps every version** | Each change is a numbered version with its diff. Changed your mind? `undo` always works |
|
|
83
|
+
| 🔒 **Protects the original** | Everything happens on a working copy. `save` writes a new file and never overwrites yours |
|
|
84
|
+
|
|
85
|
+
More in [how it works](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/docs/how-it-works.md).
|
|
86
|
+
|
|
87
|
+
## Connect your agent
|
|
88
|
+
|
|
89
|
+
One command sets everything up. Run `patchwork init .` in your project folder, new or existing: it adds the rules, the skills and the MCP configuration for every agent, and keeps the files you already have.
|
|
90
|
+
|
|
91
|
+
| Agent | Configuration written by `init` | Then |
|
|
92
|
+
|---|---|---|
|
|
93
|
+
| <img src="https://cdn.simpleicons.org/claude/D97757" width="16"> **Claude Code** | `.mcp.json` · `CLAUDE.md` · `.claude/skills/` | Run `claude` in the folder and approve `patchwork` |
|
|
94
|
+
| <img src="https://cdn.simpleicons.org/cursor/808080" width="16"> **Cursor** | `.cursor/mcp.json` · `.cursor/skills/` | Enable `patchwork` in Settings › MCP |
|
|
95
|
+
| ⌨️ **Codex** | `.codex/config.toml` · `AGENTS.md` · `.agents/skills/` | Trust the project when Codex asks |
|
|
96
|
+
| <img src="https://cdn.simpleicons.org/google/4285F4" width="16"> **Antigravity** | `.agents/mcp_config.json` · `AGENTS.md` · `.agents/skills/` | Open the folder as a workspace |
|
|
97
|
+
|
|
98
|
+
Every agent gets the same 21 tools through `patchwork mcp`, a stdio MCP server. Your file's password stays yours: set it once in your shell with `PATCHWORK_PASSWORD`, and agents never see it. Manual setup and the full tool list: [AI agents](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/docs/ai-agents.md).
|
|
99
|
+
|
|
100
|
+
## What it can change
|
|
101
|
+
|
|
102
|
+
Fields, plain-text scripts, value lists, colors and fonts, even a full rebrand. Every operation below was tried on real files and confirmed by re-exporting them.
|
|
103
|
+
|
|
104
|
+
| | Add | Edit | Delete |
|
|
105
|
+
|---|:-:|:-:|:-:|
|
|
106
|
+
| **Fields** · text, number, date, time, timestamp, container, calculation, global | ✅ | | ✅ |
|
|
107
|
+
| **Scripts**, read and written as FileMaker text | ✅ | ✅ | ✅ |
|
|
108
|
+
| **Value lists** | ✅ | ✅ | ✅ |
|
|
109
|
+
| **Custom functions** | ✅ | ✅ | ✅ |
|
|
110
|
+
| **Layouts** · place a field with its label, whole layout, colors, fonts, swap a field | ✅ field | ✅ | ✅ |
|
|
111
|
+
| **Themes** · colors, fonts, name | | ✅ | |
|
|
112
|
+
| **Tables**, table occurrences | 👁 read | | |
|
|
113
|
+
|
|
114
|
+
> [!TIP]
|
|
115
|
+
> Scripts read and write the way the Script Workspace shows them, one step per line:
|
|
116
|
+
> `Set Field [ Clients::Status ; "Gold" ]`. Edit the text of `patchwork show script NAME` and send it back with `set-steps`: untouched lines keep their exact step, and every step is re-read after the change, so a dropped parameter is caught.
|
|
117
|
+
|
|
118
|
+
What FMUpgradeTool cannot do (record data, a brand-new theme, a single layout object on its own) is listed in [the field guide](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/docs/fmupgradetool-field-guide.md).
|
|
119
|
+
|
|
120
|
+
## Use it without an agent
|
|
121
|
+
|
|
122
|
+
Prefer the terminal? Everything the agent does is a plain command you can run yourself:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
patchwork open "Invoice.fmp12" --account Admin # working copy, version v000
|
|
126
|
+
patchwork add-field Clients "Loyalty Tier"
|
|
127
|
+
patchwork add-value-list "Loyalty Tiers" Bronze Silver Gold
|
|
128
|
+
patchwork log # every version and what changed
|
|
129
|
+
patchwork undo
|
|
130
|
+
patchwork save "Invoice v2.fmp12"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
<details>
|
|
134
|
+
<summary><b>All commands</b></summary>
|
|
135
|
+
|
|
136
|
+
<br>
|
|
137
|
+
|
|
138
|
+
| Command | What it does |
|
|
139
|
+
|---|---|
|
|
140
|
+
| `open SRC --account NAME` | Starts a working copy in `.patchwork/` (version v000). The source is never modified |
|
|
141
|
+
| `status`, `log` | Current version, and every version with what changed |
|
|
142
|
+
| `ls [KIND] [TABLE]` | Lists layouts, scripts, value lists, custom functions, themes, tables, fields |
|
|
143
|
+
| `show KIND NAME` | Prints a script as FileMaker text (`--xml` for XML), anything else as XML. `show step NAME` prints a real example of a step |
|
|
144
|
+
| `add-field TABLE NAME` | Adds a field: `--type`, `--calc`, `--global`, `--image logo.png` |
|
|
145
|
+
| `add-value-list NAME VALUES...` | Adds a custom value list |
|
|
146
|
+
| `add-custom-function NAME --calc` | Adds a custom function, with `--param` |
|
|
147
|
+
| `add-script NAME STEPS.txt` | Creates a script from FileMaker script text (or `<Step>` XML) |
|
|
148
|
+
| `set-steps`, `append-steps` | Rewrites a script with edited text from `show`, or adds steps at the end |
|
|
149
|
+
| `place-field LAYOUT TO::FIELD --near FIELD` | Puts a field on a layout below another one, with a copy of its look and label. `--side right`, `--label` |
|
|
150
|
+
| `replace KIND NAME FILE.xml` | Replaces an object with your edited version of `show` |
|
|
151
|
+
| `uses KIND NAME` | Lists what references an object, and where its name appears in calculations |
|
|
152
|
+
| `delete KIND NAME` | Deletes a script, layout, value list, custom function or field. Refused while other objects reference it, unless `--force` |
|
|
153
|
+
| `retheme`, `recolor-layouts` | Rewrites colors and fonts of a theme, or of the layouts' local styles |
|
|
154
|
+
| `push PATCH.xml` | Applies a hand-written FMUpgradeTool patch, with the same checks |
|
|
155
|
+
| `undo` | Drops the last version |
|
|
156
|
+
| `save DEST` | Writes the current version to a new `.fmp12` |
|
|
157
|
+
| `rebrand SRC DEST --brand brand.json` | One shot: colors, fonts, logo and theme name on a whole solution |
|
|
158
|
+
| `mcp` | The MCP server for agents |
|
|
159
|
+
| `init DIR` | Wires a folder for Claude Code, Cursor, Codex and Antigravity |
|
|
160
|
+
| `doctor` | Shows which Claris tools Patchwork found |
|
|
161
|
+
|
|
162
|
+
Every editing command takes `-m "note"` for the log and `--dry-run` to write the patch without applying it. More in [examples and recipes](https://github.com/Abdeltoto/patchwork-filemaker-mcp/tree/main/examples).
|
|
163
|
+
|
|
164
|
+
</details>
|
|
165
|
+
|
|
166
|
+
## The FMUpgradeTool field guide
|
|
167
|
+
|
|
168
|
+
The [field guide](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/docs/fmupgradetool-field-guide.md) collects every trap FMUpgradeTool sets without telling you, found the hard way on real files. Useful even if you never use Patchwork. A taste:
|
|
169
|
+
|
|
170
|
+
- without `--generateGUIDs`, theme and field patches are skipped;
|
|
171
|
+
- a layout's UUID is **not** the first `<UUID>` inside it;
|
|
172
|
+
- replacing one layout object is skipped, replacing the whole layout works;
|
|
173
|
+
- deleting a script step needs a `ScriptReference` inside each `ScriptStepReference`.
|
|
174
|
+
|
|
175
|
+
Found another one? [Add it](https://github.com/Abdeltoto/patchwork-filemaker-mcp/issues/new?template=field-guide.yml).
|
|
176
|
+
|
|
177
|
+
## FAQ
|
|
178
|
+
|
|
179
|
+
<details>
|
|
180
|
+
<summary><b>Does it work on hosted files?</b></summary>
|
|
181
|
+
<br>
|
|
182
|
+
It works on closed <code>.fmp12</code> files on disk. Take a copy of the hosted file, edit it, test it, then deploy it as you usually do, or move the data with the Claris Data Migration Tool.
|
|
183
|
+
</details>
|
|
184
|
+
|
|
185
|
+
<details>
|
|
186
|
+
<summary><b>Can the agent change records?</b></summary>
|
|
187
|
+
<br>
|
|
188
|
+
No, FMUpgradeTool changes structure only. For records, use the Data API or OData. The <code>fm-data</code> skill explains how.
|
|
189
|
+
</details>
|
|
190
|
+
|
|
191
|
+
<details>
|
|
192
|
+
<summary><b>Which FileMaker versions?</b></summary>
|
|
193
|
+
<br>
|
|
194
|
+
Developed and verified with FileMaker 2026 (26.0.3). Earlier versions that ship FMUpgradeTool and <code>FMDeveloperTool --saveAsXML</code> should work but are untested. A report either way is very welcome.
|
|
195
|
+
</details>
|
|
196
|
+
|
|
197
|
+
<details>
|
|
198
|
+
<summary><b>macOS and Linux?</b></summary>
|
|
199
|
+
<br>
|
|
200
|
+
Wherever the Claris tools run. CI runs on Windows, macOS and Linux.
|
|
201
|
+
</details>
|
|
202
|
+
|
|
203
|
+
<details>
|
|
204
|
+
<summary><b>Is my password safe with an agent?</b></summary>
|
|
205
|
+
<br>
|
|
206
|
+
Yes. It is read from the <code>PATCHWORK_PASSWORD</code> environment variable, passed to the Claris tools, and printed as <code>***</code>. It is never written in a configuration file or shown to the agent.
|
|
207
|
+
</details>
|
|
208
|
+
|
|
209
|
+
## Contributing
|
|
210
|
+
|
|
211
|
+
Found a new FMUpgradeTool trap, wrote a recipe, or want a new operation? Everything is welcome: start with [CONTRIBUTING.md](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/CONTRIBUTING.md). And if Patchwork gives you your Friday afternoon back, a ⭐ helps other FileMaker developers find it.
|
|
212
|
+
|
|
213
|
+
<a href="https://star-history.com/#Abdeltoto/patchwork-filemaker-mcp&Date">
|
|
214
|
+
<img src="https://api.star-history.com/svg?repos=Abdeltoto/patchwork-filemaker-mcp&type=Date" alt="Star history" width="600">
|
|
215
|
+
</a>
|
|
216
|
+
|
|
217
|
+
## License
|
|
218
|
+
|
|
219
|
+
[MIT](https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/LICENSE). Patchwork is a community project, not affiliated with or endorsed by Claris International Inc. FileMaker and Claris are trademarks of Claris International Inc. Other product names and logos belong to their owners.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "filemaker-patchwork"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Let your AI agent edit FileMaker: fields, scripts, value lists, layouts and themes, checked and reversible. MCP server for Claude Code, Cursor, Codex and Antigravity."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
license-files = ["LICENSE"]
|
|
12
|
+
authors = [{ name = "Abdeltoto" }]
|
|
13
|
+
requires-python = ">=3.10"
|
|
14
|
+
dependencies = []
|
|
15
|
+
keywords = ["filemaker", "claris", "fmupgradetool", "fmp12", "mcp", "mcp-server", "ai-agents", "claude-code", "cursor", "codex", "antigravity", "low-code"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 4 - Beta",
|
|
18
|
+
"Environment :: Console",
|
|
19
|
+
"Intended Audience :: Developers",
|
|
20
|
+
"Operating System :: Microsoft :: Windows",
|
|
21
|
+
"Operating System :: MacOS",
|
|
22
|
+
"Operating System :: POSIX :: Linux",
|
|
23
|
+
"Programming Language :: Python :: 3",
|
|
24
|
+
"Topic :: Database",
|
|
25
|
+
"Topic :: Software Development :: Build Tools",
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
[project.optional-dependencies]
|
|
29
|
+
image = ["Pillow>=9"]
|
|
30
|
+
|
|
31
|
+
[project.scripts]
|
|
32
|
+
patchwork = "patchwork.cli:main"
|
|
33
|
+
filemaker-patchwork = "patchwork.cli:main"
|
|
34
|
+
|
|
35
|
+
[project.urls]
|
|
36
|
+
Homepage = "https://github.com/Abdeltoto/patchwork-filemaker-mcp"
|
|
37
|
+
Issues = "https://github.com/Abdeltoto/patchwork-filemaker-mcp/issues"
|
|
38
|
+
Changelog = "https://github.com/Abdeltoto/patchwork-filemaker-mcp/blob/main/CHANGELOG.md"
|
|
39
|
+
|
|
40
|
+
[tool.setuptools.dynamic]
|
|
41
|
+
version = { attr = "patchwork.__version__" }
|
|
42
|
+
|
|
43
|
+
[tool.setuptools.packages.find]
|
|
44
|
+
where = ["src"]
|
|
45
|
+
|
|
46
|
+
[tool.setuptools.package-data]
|
|
47
|
+
patchwork = ["templates/*", "skills/*/SKILL.md"]
|