jama-cli 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.
Files changed (41) hide show
  1. jama_cli-0.1.0/LICENSE +55 -0
  2. jama_cli-0.1.0/NOTICE +116 -0
  3. jama_cli-0.1.0/PKG-INFO +526 -0
  4. jama_cli-0.1.0/README.md +486 -0
  5. jama_cli-0.1.0/jama_cli/__init__.py +11 -0
  6. jama_cli-0.1.0/jama_cli/commands/__init__.py +2 -0
  7. jama_cli-0.1.0/jama_cli/commands/attachments.py +73 -0
  8. jama_cli-0.1.0/jama_cli/commands/baseline.py +289 -0
  9. jama_cli-0.1.0/jama_cli/commands/config_cmd.py +390 -0
  10. jama_cli-0.1.0/jama_cli/commands/diff.py +462 -0
  11. jama_cli-0.1.0/jama_cli/commands/history.py +225 -0
  12. jama_cli-0.1.0/jama_cli/commands/items.py +340 -0
  13. jama_cli-0.1.0/jama_cli/commands/migrate.py +1129 -0
  14. jama_cli-0.1.0/jama_cli/commands/picklists.py +97 -0
  15. jama_cli-0.1.0/jama_cli/commands/projects.py +75 -0
  16. jama_cli-0.1.0/jama_cli/commands/relationships.py +203 -0
  17. jama_cli-0.1.0/jama_cli/commands/search.py +289 -0
  18. jama_cli-0.1.0/jama_cli/commands/serve.py +422 -0
  19. jama_cli-0.1.0/jama_cli/commands/tags.py +76 -0
  20. jama_cli-0.1.0/jama_cli/commands/tests.py +69 -0
  21. jama_cli-0.1.0/jama_cli/commands/trace.py +438 -0
  22. jama_cli-0.1.0/jama_cli/commands/types.py +74 -0
  23. jama_cli-0.1.0/jama_cli/commands/users.py +73 -0
  24. jama_cli-0.1.0/jama_cli/config.py +189 -0
  25. jama_cli-0.1.0/jama_cli/core/__init__.py +6 -0
  26. jama_cli-0.1.0/jama_cli/core/client.py +948 -0
  27. jama_cli-0.1.0/jama_cli/main.py +164 -0
  28. jama_cli-0.1.0/jama_cli/models/__init__.py +129 -0
  29. jama_cli-0.1.0/jama_cli/output/__init__.py +28 -0
  30. jama_cli-0.1.0/jama_cli/output/console.py +49 -0
  31. jama_cli-0.1.0/jama_cli/output/formatters.py +188 -0
  32. jama_cli-0.1.0/jama_cli/py.typed +0 -0
  33. jama_cli-0.1.0/jama_mcp_server/__init__.py +13 -0
  34. jama_cli-0.1.0/jama_mcp_server/api/__init__.py +7 -0
  35. jama_cli-0.1.0/jama_mcp_server/api/client.py +261 -0
  36. jama_cli-0.1.0/jama_mcp_server/config.py +184 -0
  37. jama_cli-0.1.0/jama_mcp_server/core/__init__.py +7 -0
  38. jama_cli-0.1.0/jama_mcp_server/core/server.py +1283 -0
  39. jama_cli-0.1.0/jama_mcp_server/core/stdio_server.py +488 -0
  40. jama_cli-0.1.0/jama_mcp_server/models/__init__.py +197 -0
  41. jama_cli-0.1.0/pyproject.toml +153 -0
jama_cli-0.1.0/LICENSE ADDED
@@ -0,0 +1,55 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Christian Nennemann
4
+
5
+ DISCLAIMER: This is an unofficial community project and is not associated with,
6
+ endorsed by, or affiliated with Jama Software in any way. This project is maintained
7
+ by community contributors and is not an official product of Jama Software.
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all
17
+ copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
+ SOFTWARE.
26
+
27
+ ---
28
+
29
+ This project incorporates the following third-party open source software:
30
+
31
+ 1. aiohttp - MIT License - Copyright (c) 2013-2021 aio-libs collaboration
32
+ https://github.com/aio-libs/aiohttp/blob/master/LICENSE.txt
33
+
34
+ 2. py-jama-rest-client - MIT License - Copyright (c) 2017 Jarrod Wubbel
35
+ https://github.com/jamalshahverdiev/py-jama-rest-client/blob/master/LICENSE
36
+
37
+ 3. pydantic - MIT License - Copyright (c) 2017-present, Samuel Colvin and other contributors
38
+ https://github.com/pydantic/pydantic/blob/main/LICENSE
39
+
40
+ 4. loguru - MIT License - Copyright (c) 2017-present, Delgan
41
+ https://github.com/Delgan/loguru/blob/master/LICENSE
42
+
43
+ 5. typer - MIT License - Copyright (c) 2020 Sebastián Ramírez
44
+ https://github.com/tiangolo/typer/blob/master/LICENSE
45
+
46
+ 6. asyncio - PSF License - Copyright (c) Python Software Foundation
47
+ Part of the Python standard library
48
+
49
+ 7. jsonschema - MIT License - Copyright (c) 2013 Julian Berman
50
+ https://github.com/python-jsonschema/jsonschema/blob/main/COPYING
51
+
52
+ 8. python-dotenv - BSD 3-Clause License - Copyright (c) 2014, Saurabh Kumar
53
+ https://github.com/theskumar/python-dotenv/blob/master/LICENSE
54
+
55
+ All third-party libraries used in this project are compatible with the MIT License.
jama_cli-0.1.0/NOTICE ADDED
@@ -0,0 +1,116 @@
1
+ NOTICES AND INFORMATION
2
+ Do Not Translate or Localize
3
+
4
+ DISCLAIMER: This is an unofficial community project and is not associated with, endorsed by, or affiliated with Jama Software in any way.
5
+
6
+ This software incorporates material from third parties. A list of these third-party components and their licenses follows.
7
+
8
+ ---------------------------------------------
9
+ 1. aiohttp (https://github.com/aio-libs/aiohttp)
10
+ ---------------------------------------------
11
+
12
+ Copyright (c) 2013-2021 aio-libs collaboration
13
+
14
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19
+
20
+ ---------------------------------------------
21
+ 2. py-jama-rest-client (https://github.com/jamalshahverdiev/py-jama-rest-client)
22
+ ---------------------------------------------
23
+
24
+ MIT License
25
+
26
+ Copyright (c) 2017 Jarrod Wubbel
27
+
28
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
29
+
30
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
31
+
32
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33
+
34
+ ---------------------------------------------
35
+ 3. pydantic (https://github.com/pydantic/pydantic)
36
+ ---------------------------------------------
37
+
38
+ MIT License
39
+
40
+ Copyright (c) 2017-present, Samuel Colvin and other contributors
41
+
42
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
43
+
44
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
45
+
46
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
47
+
48
+ ---------------------------------------------
49
+ 4. loguru (https://github.com/Delgan/loguru)
50
+ ---------------------------------------------
51
+
52
+ MIT License
53
+
54
+ Copyright (c) 2017-present, Delgan
55
+
56
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
57
+
58
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
59
+
60
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
61
+
62
+ ---------------------------------------------
63
+ 5. typer (https://github.com/tiangolo/typer)
64
+ ---------------------------------------------
65
+
66
+ MIT License
67
+
68
+ Copyright (c) 2020 Sebastián Ramírez
69
+
70
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
71
+
72
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
73
+
74
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
75
+
76
+ ---------------------------------------------
77
+ 6. asyncio (Python standard library)
78
+ ---------------------------------------------
79
+
80
+ Python Software Foundation License (PSF License)
81
+ This is part of the Python standard library. For more information, see:
82
+ https://docs.python.org/3/license.html
83
+
84
+ ---------------------------------------------
85
+ 7. jsonschema (https://github.com/python-jsonschema/jsonschema)
86
+ ---------------------------------------------
87
+
88
+ MIT License
89
+
90
+ Copyright (c) 2013 Julian Berman
91
+
92
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
93
+
94
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
95
+
96
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
97
+
98
+ ---------------------------------------------
99
+ 8. python-dotenv (https://github.com/theskumar/python-dotenv)
100
+ ---------------------------------------------
101
+
102
+ BSD 3-Clause License
103
+
104
+ Copyright (c) 2014, Saurabh Kumar, Michael Schlottke-Lakemper
105
+
106
+ All rights reserved.
107
+
108
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
109
+
110
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
111
+
112
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
113
+
114
+ 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
115
+
116
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,526 @@
1
+ Metadata-Version: 2.4
2
+ Name: jama-cli
3
+ Version: 0.1.0
4
+ Summary: Command-line interface for Jama requirements management with MCP server support
5
+ License: MIT
6
+ License-File: LICENSE
7
+ License-File: NOTICE
8
+ Keywords: jama,cli,mcp,model-context-protocol,requirements-management,api
9
+ Author: Christian Nennemann
10
+ Author-email: 0lt7axgtr@mozmail.com
11
+ Requires-Python: >=3.10,<4.0
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Framework :: AsyncIO
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
+ Classifier: Typing :: Typed
26
+ Requires-Dist: aiohttp (>=3.9.0,<4.0.0)
27
+ Requires-Dist: aiohttp-swagger3 (>=0.8.0,<0.9.0)
28
+ Requires-Dist: jsonschema (>=4.19.0,<5.0.0)
29
+ Requires-Dist: loguru (>=0.7.0,<0.8.0)
30
+ Requires-Dist: mcp (>=1.0.0,<2.0.0)
31
+ Requires-Dist: py-jama-rest-client (>=1.17.0,<2.0.0)
32
+ Requires-Dist: pydantic (>=2.0.0,<3.0.0)
33
+ Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
34
+ Requires-Dist: pyyaml (>=6.0.0,<7.0.0)
35
+ Requires-Dist: rich (>=13.0.0,<14.0.0)
36
+ Requires-Dist: typer[all] (>=0.12.0)
37
+ Project-URL: Repository, https://github.com/XORwell/jama-cli
38
+ Description-Content-Type: text/markdown
39
+
40
+ # Jama CLI
41
+
42
+ [![CI](https://github.com/XORwell/jama-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/XORwell/jama-cli/actions/workflows/ci.yml)
43
+ [![PyPI version](https://img.shields.io/pypi/v/jama-cli.svg)](https://pypi.org/project/jama-cli/)
44
+ [![Python Versions](https://img.shields.io/pypi/pyversions/jama-cli.svg)](https://pypi.org/project/jama-cli/)
45
+ [![Docker Image](https://img.shields.io/badge/ghcr.io-jama--cli-blue)](https://github.com/XORwell/jama-cli/pkgs/container/jama-cli)
46
+
47
+ A powerful command-line interface for Jama requirements management, with MCP (Model Context Protocol) server support for AI assistants.
48
+
49
+ > **DISCLAIMER**: This is an unofficial community project and is not associated with, endorsed by, or affiliated with Jama Software in any way.
50
+
51
+ ## Quick Start
52
+
53
+ ```bash
54
+ # Install
55
+ pip install jama-cli
56
+
57
+ # Configure
58
+ jama config init
59
+
60
+ # Use
61
+ jama projects list
62
+ jama items list 123
63
+ jama items get 456 --output json
64
+ ```
65
+
66
+ ## Features
67
+
68
+ ### CLI Commands
69
+ - **Projects**: List, view, and search projects
70
+ - **Items**: Full CRUD operations (create, read, update, delete)
71
+ - **Relationships**: Manage upstream/downstream traceability
72
+ - **Traceability**: Coverage analysis, trace matrix, trace trees
73
+ - **Baselines**: Compare baselines, view versioned items
74
+ - **History**: View item version history, compare versions
75
+ - **Search**: Full-text and regex search across projects
76
+ - **Diff**: Compare projects, count differences
77
+ - **Migrate**: Export, import, clone, copy data
78
+ - **Types**: View item types and their fields
79
+ - **Config**: Multi-profile configuration management
80
+
81
+ > **See [EXAMPLES.md](https://github.com/XORwell/jama-cli/blob/main/EXAMPLES.md) for comprehensive usage examples**
82
+
83
+ ### MCP Server
84
+ - **stdio mode**: Native integration with Claude Desktop, Cline, VS Code
85
+ - **HTTP mode**: REST API with OpenAPI documentation
86
+ - **70 Jama operations**: Complete API coverage
87
+
88
+ ### Output Formats
89
+ ```bash
90
+ jama items list 123 # Table (default)
91
+ jama items list 123 --output json # JSON
92
+ jama items list 123 --output csv # CSV
93
+ jama items list 123 --output yaml # YAML
94
+ ```
95
+
96
+ ## Installation
97
+
98
+ ### pip (recommended)
99
+ ```bash
100
+ pip install jama-cli
101
+ ```
102
+
103
+ ### pipx (isolated)
104
+ ```bash
105
+ pipx install jama-cli
106
+ ```
107
+
108
+ ### From source
109
+ ```bash
110
+ git clone https://github.com/XORwell/jama-cli.git
111
+ cd jama-cli
112
+ pip install -e .
113
+ ```
114
+
115
+ ## Configuration
116
+
117
+ ### Interactive Setup
118
+ ```bash
119
+ jama config init
120
+ ```
121
+
122
+ ### Configuration File
123
+ Location: `~/.jama/config.yml`
124
+
125
+ ```yaml
126
+ default_profile: production
127
+
128
+ profiles:
129
+ production:
130
+ url: https://company.jamacloud.com
131
+ auth_type: api_key
132
+ api_key: ${JAMA_API_KEY} # Environment variable
133
+
134
+ staging:
135
+ url: https://staging.jamacloud.com
136
+ auth_type: oauth
137
+ client_id: ${JAMA_CLIENT_ID}
138
+ client_secret: ${JAMA_CLIENT_SECRET}
139
+
140
+ defaults:
141
+ output: table
142
+ limit: 50
143
+ ```
144
+
145
+ ### Environment Variables
146
+ ```bash
147
+ export JAMA_URL=https://company.jamacloud.com
148
+ export JAMA_API_KEY=your-api-key
149
+ export JAMA_PROFILE=production # Optional: override default profile
150
+ ```
151
+
152
+ ## CLI Commands
153
+
154
+ ### Projects
155
+ ```bash
156
+ jama projects list # List all projects
157
+ jama projects get 123 # Get project details
158
+ jama projects list --output json # JSON output
159
+ ```
160
+
161
+ ### Items
162
+ ```bash
163
+ jama items list 123 # List items in project 123
164
+ jama items get 456 # Get item details
165
+ jama items children 456 # Get child items
166
+
167
+ # Create item
168
+ jama items create 123 --type 45 --name "New Requirement"
169
+
170
+ # Update item
171
+ jama items update 456 --name "Updated Name"
172
+ jama items update 456 --field status=Approved
173
+
174
+ # Delete item
175
+ jama items delete 456
176
+ jama items delete 456 --force # Skip confirmation
177
+ ```
178
+
179
+ ### Relationships
180
+ ```bash
181
+ jama relationships list 456 # All relationships for item
182
+ jama relationships upstream 456 # Upstream items (traced from)
183
+ jama relationships downstream 456 # Downstream items (traced to)
184
+
185
+ # Create relationship
186
+ jama relationships create --from 456 --to 789
187
+
188
+ # Delete relationship
189
+ jama relationships delete 123
190
+ ```
191
+
192
+ ### Item Types
193
+ ```bash
194
+ jama types list # List all item types
195
+ jama types get 45 # Get type details
196
+ ```
197
+
198
+ ### Configuration
199
+ ```bash
200
+ jama config init # Interactive setup
201
+ jama config list # List profiles
202
+ jama config show # Show current profile
203
+ jama config add prod --url https://... --api-key xxx
204
+ jama config remove staging
205
+ jama config set-default production
206
+ jama config cache # Show cache stats
207
+ jama config cache --clear # Clear cache
208
+ ```
209
+
210
+ ### Search
211
+ ```bash
212
+ jama search items "login" # Search all projects
213
+ jama search items "login" --project 123 # Search in specific project
214
+ jama search items "REQ-" --field documentKey # Search by document key
215
+ jama search items "^REQ-\\d+" --regex # Regex search
216
+ jama search items "test" --type 45 # Search specific item type
217
+ jama search fields 123 # List searchable fields
218
+ ```
219
+
220
+ ### Diff (Compare Projects)
221
+ ```bash
222
+ jama diff projects 123 456 # Compare two projects
223
+ jama diff projects 123 456 --from dev --to prod # Compare across instances
224
+ jama diff projects 123 456 --type 45 # Compare specific item type
225
+ jama diff projects 123 456 --key name # Match by name instead of key
226
+ jama diff count 123 456 # Quick count comparison
227
+ ```
228
+
229
+ ### Traceability Analysis
230
+ ```bash
231
+ jama trace matrix 1172 # Traceability matrix
232
+ jama trace matrix 1172 -s 45 -t 67 # Requirements → Test Cases
233
+ jama trace matrix 1172 --untraced # Show coverage gaps
234
+ jama trace coverage 1172 # Coverage % by item type
235
+ jama trace tree 12345 # Trace tree for item
236
+ jama trace tree 12345 --direction upstream # Upstream only
237
+ ```
238
+
239
+ ### Baselines
240
+ ```bash
241
+ jama baseline list 1172 # List baselines
242
+ jama baseline items 100 # Items in baseline
243
+ jama baseline diff 100 101 # Compare baselines
244
+ # Shows: +Added, ~Modified, -Removed
245
+ ```
246
+
247
+ ### Version History
248
+ ```bash
249
+ jama history list 12345 # Version history
250
+ jama history get 12345 3 # Get version 3
251
+ jama history diff 12345 1 3 # Compare versions
252
+ ```
253
+
254
+ ### Data Migration
255
+ ```bash
256
+ # Export items to JSON (fast by default)
257
+ jama migrate export 123 # Export all items
258
+ jama migrate export 123 --max 100 # Export first 100 items (fast)
259
+ jama migrate export 123 --parent 456 --max 50 # Export subtree, limit 50
260
+ jama migrate export 123 --type 45 # Export only type 45
261
+ jama migrate export 123 --relationships # Include relationships (slower)
262
+
263
+ # Import from JSON
264
+ jama migrate import backup.json --project 456 # Import to project 456
265
+ jama migrate import backup.json -p 456 --dry-run # Preview import
266
+
267
+ # Clone within same instance
268
+ jama migrate clone 123 456 # Clone project 123 to 456
269
+ jama migrate clone 123 456 --source-parent 789 # Clone children of item
270
+
271
+ # Copy between instances (requires two profiles)
272
+ jama migrate copy 123 456 --from staging --to production
273
+
274
+ # Inspect export file
275
+ jama migrate info backup.json
276
+ ```
277
+
278
+ ## MCP Server
279
+
280
+ ### For Claude Desktop / Cline
281
+
282
+ Add to your MCP configuration:
283
+
284
+ ```json
285
+ {
286
+ "mcpServers": {
287
+ "jama": {
288
+ "command": "jama",
289
+ "args": ["serve", "--stdio"]
290
+ }
291
+ }
292
+ }
293
+ ```
294
+
295
+ ### HTTP Server
296
+
297
+ ```bash
298
+ # Start HTTP server
299
+ jama serve # Default: localhost:8000
300
+ jama serve --port 9000 # Custom port
301
+ jama serve --api-key secret # With authentication
302
+
303
+ # Access
304
+ curl http://localhost:8000/health
305
+ open http://localhost:8000/api/docs # Swagger UI
306
+ ```
307
+
308
+ ### Available Operations
309
+
310
+ The MCP server exposes 70 Jama API operations:
311
+
312
+ | Category | Operations |
313
+ |----------|------------|
314
+ | Projects | get_projects, get_project |
315
+ | Items | get_items, get_item, create_item, update_item, delete_item |
316
+ | Relationships | get_relationships, create_relationship, delete_relationship |
317
+ | Types | get_item_types, get_item_type |
318
+ | Pick Lists | get_pick_lists, get_pick_list, get_pick_list_options |
319
+ | Tags | get_tags, get_tagged_items |
320
+ | Tests | get_test_plans, get_test_cycles, get_test_runs |
321
+ | Attachments | get_attachments, upload_attachment |
322
+ | ... | See full list in API documentation |
323
+
324
+ ## Global Options
325
+
326
+ ```bash
327
+ jama [OPTIONS] COMMAND [ARGS]
328
+
329
+ Options:
330
+ -p, --profile TEXT Profile name from config
331
+ -o, --output FORMAT Output: table, json, csv, yaml
332
+ -v, --verbose Increase verbosity (-v, -vv, -vvv)
333
+ -q, --quiet Suppress non-error output
334
+ --version Show version
335
+ --help Show help
336
+ ```
337
+
338
+ ## Examples
339
+
340
+ ### List requirements and export to CSV
341
+ ```bash
342
+ jama items list 123 --type 45 --output csv > requirements.csv
343
+ ```
344
+
345
+ ### Get item as JSON for scripting
346
+ ```bash
347
+ ITEM=$(jama items get 456 --output json)
348
+ echo $ITEM | jq '.fields.name'
349
+ ```
350
+
351
+ ### Create item from script
352
+ ```bash
353
+ jama items create 123 \
354
+ --type 45 \
355
+ --name "REQ-001: User Authentication" \
356
+ --description "Users shall authenticate with SSO" \
357
+ --field priority=High \
358
+ --field status=Draft
359
+ ```
360
+
361
+ ### Trace upstream requirements
362
+ ```bash
363
+ jama relationships upstream 456 --output table
364
+ ```
365
+
366
+ ### Use different profile
367
+ ```bash
368
+ jama -p staging items list 123
369
+ ```
370
+
371
+ ## Docker
372
+
373
+ A pre-built Docker image is available for running the Jama MCP server without installing Python.
374
+
375
+ ```bash
376
+ docker pull ghcr.io/xorwell/jama-cli
377
+ ```
378
+
379
+ ### Quick Start
380
+
381
+ ```bash
382
+ # Using environment variables
383
+ docker run -p 8000:8000 \
384
+ -e JAMA_URL=https://company.jamacloud.com \
385
+ -e JAMA_API_KEY=your-api-key \
386
+ ghcr.io/xorwell/jama-cli
387
+ ```
388
+
389
+ The server starts on port 8000 with health checks, rate limiting, and Swagger UI at `/api/docs`.
390
+
391
+ ### Using a Config File
392
+
393
+ Mount your existing `~/.jama/config.yml` into the container:
394
+
395
+ ```bash
396
+ docker run -p 8000:8000 \
397
+ -v ~/.jama/config.yml:/home/appuser/.jama/config.yml:ro \
398
+ ghcr.io/xorwell/jama-cli
399
+ ```
400
+
401
+ To use a specific profile from your config:
402
+
403
+ ```bash
404
+ docker run -p 8000:8000 \
405
+ -v ~/.jama/config.yml:/home/appuser/.jama/config.yml:ro \
406
+ ghcr.io/xorwell/jama-cli \
407
+ jama serve --host 0.0.0.0 --port 8000 --profile production
408
+ ```
409
+
410
+ ### Authentication Methods
411
+
412
+ ```bash
413
+ # API Key
414
+ docker run -p 8000:8000 \
415
+ -e JAMA_URL=https://company.jamacloud.com \
416
+ -e JAMA_API_KEY=your-api-key \
417
+ ghcr.io/xorwell/jama-cli
418
+
419
+ # OAuth2 Client Credentials
420
+ docker run -p 8000:8000 \
421
+ -e JAMA_URL=https://company.jamacloud.com \
422
+ -e JAMA_CLIENT_ID=your-client-id \
423
+ -e JAMA_CLIENT_SECRET=your-client-secret \
424
+ ghcr.io/xorwell/jama-cli
425
+
426
+ # Username/Password
427
+ docker run -p 8000:8000 \
428
+ -e JAMA_URL=https://company.jamacloud.com \
429
+ -e JAMA_USERNAME=your-username \
430
+ -e JAMA_PASSWORD=your-password \
431
+ ghcr.io/xorwell/jama-cli
432
+ ```
433
+
434
+ ### Server Authentication
435
+
436
+ Protect the MCP server with an API key so only authorized clients can use it:
437
+
438
+ ```bash
439
+ docker run -p 8000:8000 \
440
+ -e JAMA_URL=https://company.jamacloud.com \
441
+ -e JAMA_API_KEY=your-jama-key \
442
+ -e MCP_API_KEY=my-server-secret \
443
+ ghcr.io/xorwell/jama-cli
444
+
445
+ # Clients must include: Authorization: Bearer my-server-secret
446
+ ```
447
+
448
+ ### Docker Compose
449
+
450
+ ```yaml
451
+ services:
452
+ jama-mcp:
453
+ image: ghcr.io/xorwell/jama-cli
454
+ ports:
455
+ - "8000:8000"
456
+ environment:
457
+ - JAMA_URL=https://company.jamacloud.com
458
+ - JAMA_API_KEY=${JAMA_API_KEY}
459
+ # Or mount config:
460
+ # volumes:
461
+ # - ~/.jama/config.yml:/home/appuser/.jama/config.yml:ro
462
+ restart: unless-stopped
463
+ ```
464
+
465
+ ### Using the CLI via Docker
466
+
467
+ You can also use the Docker image to run CLI commands:
468
+
469
+ ```bash
470
+ docker run --rm \
471
+ -e JAMA_URL=https://company.jamacloud.com \
472
+ -e JAMA_API_KEY=your-api-key \
473
+ ghcr.io/xorwell/jama-cli \
474
+ jama projects list
475
+
476
+ docker run --rm \
477
+ -e JAMA_URL=https://company.jamacloud.com \
478
+ -e JAMA_API_KEY=your-api-key \
479
+ ghcr.io/xorwell/jama-cli \
480
+ jama items list 123 --output json
481
+ ```
482
+
483
+ ### Building Locally
484
+
485
+ ```bash
486
+ docker build -t jama-cli .
487
+ docker run -p 8000:8000 -e JAMA_URL=... -e JAMA_API_KEY=... jama-cli
488
+ ```
489
+
490
+ > **See [DOCKER.md](https://github.com/XORwell/jama-cli/blob/main/DOCKER.md) for full Docker documentation** including endpoints, image details, Kubernetes probes, and more.
491
+
492
+ ## Development
493
+
494
+ ```bash
495
+ # Clone
496
+ git clone https://github.com/XORwell/jama-cli.git
497
+ cd jama-cli
498
+
499
+ # Install with dev dependencies
500
+ poetry install
501
+
502
+ # Run tests
503
+ poetry run pytest
504
+
505
+ # Lint
506
+ poetry run ruff check .
507
+ poetry run black --check .
508
+
509
+ # Type check
510
+ poetry run mypy jama_cli jama_mcp_server
511
+ ```
512
+
513
+ ## License
514
+
515
+ MIT License - see [LICENSE](https://github.com/XORwell/jama-cli/blob/main/LICENSE)
516
+
517
+ ## Contributing
518
+
519
+ Contributions welcome! Please read [CONTRIBUTING.md](https://github.com/XORwell/jama-cli/blob/main/CONTRIBUTING.md).
520
+
521
+ ## Related
522
+
523
+ - [Jama REST API Documentation](https://dev.jamasoftware.com/api/)
524
+ - [Model Context Protocol](https://modelcontextprotocol.io/)
525
+ - [py-jama-rest-client](https://github.com/jamasoftware-ps/py-jama-rest-client)
526
+