This extension provides an MCP server for interacting with Jira Service Management (JSM) Assets.
The codebase is a Python package (jsm_asset_mcp/) with the following modules:
| Module | Responsibility |
|---|---|
config.py |
Settings dataclass loaded from env vars, with cached/discovered Jira IDs |
client.py |
AssetsClient — thin httpx wrapper with auth and base URL |
cache.py |
Generic TTLCache — domain-agnostic |
schema.py |
SchemaService — schema introspection and summary builder |
llm.py |
Claude Agent SDK / Gemini structured-output natural-language → AQL translation |
tools.py |
All MCP tool definitions (thin orchestration) |
server.py |
create_server() factory — wires dependencies, returns FastMCP |
Entrypoint: main.py calls create_server().run().
- Query Assets: Use
execute_aqlto query objects based on Asset Query Language (AQL). - Search Assets: Use
search_assetsfor natural-language object searches. The configured LLM decides the AQL query, result type, and result limit; count questions use the Assets total-count endpoint, and all-object requests paginate through all AQL result pages. - Retrieve Assets: Use
get_objectto fetch specific details about an asset by ID. - Update Assets: Use
update_objectto modify an existing asset's attributes.
- Always construct an accurate AQL query when searching.
- Ensure you have the
object_type_idwhen updating an asset. - When you update an object, follow the attribute structure strictly (i.e., array of
{"objectTypeAttributeId": "...", "objectAttributeValues": [{"value": "..."}]}).