adins-prd-mcp
MCP server for reading Confluence PRD pages and rendering SRS/URS documents as Word files. Built for use with AI agents in the AdIns SDLC toolchain.
Tools
Confluence tools
| Tool | Description |
|---|---|
get_confluence_page |
Fetch a page by numeric ID. Returns markdown or raw HTML in context. |
get_confluence_page_to_file |
Fetch a page and write content directly to a local file. Returns path and size only. |
search_confluence |
Search using CQL. |
list_confluence_attachments |
List attachments on a page. |
download_confluence_attachment |
Download an attachment to a local path. |
get_confluence_page_ancestors |
Return the ancestor chain (root → immediate parent). |
get_confluence_page_siblings |
Return sibling pages sharing the same parent. |
Database tools
| Tool | Description |
|---|---|
init_document_db |
Create the SQLite DB and store module-level metadata. |
store_feature |
Parse and store one PRD feature (and its menus) into the DB. |
store_feature_from_file |
Same as store_feature but reads the payload from a local JSON file. |
raw_query_exec |
Execute a raw SQL statement against the DB. Read-only by default; pass write=True for DML/DDL. Results capped at 200 rows. |
Render tools
| Tool | Description |
|---|---|
render_srs_docx |
Render an SRS Word document from the DB. |
render_urs_docx |
Render a URS Word document from the DB. |
Workflow
init_document_db(db_path, meta)
↓
get_confluence_page_to_file(page_id, output_path) ← subagent fetches its page to disk
↓
store_feature(db_path, feature_data) ← subagent stores parsed data
↓ (up to 5 parallel subagents, one per feature page)
render_srs_docx(template_path, output_path, db_path)
or
render_urs_docx(template_path, output_path, db_path)
The main agent sets service_order. Each subagent sets feature_order from its sibling
position in the Confluence page tree. Menu order is derived from list position.
The agent never assembles the full context dict. The render tools read directly from the DB.
Requirements
- Python 3.12+
- A classic (non-scoped) Atlassian API token — generate one at id.atlassian.com/manage-profile/security/api-tokens
Configuration
Set these environment variables before running:
| Variable | Description | Example |
|---|---|---|
CONFLUENCE_BASE_URL |
Your Atlassian site URL | https://yourcompany.atlassian.net |
CONFLUENCE_EMAIL |
Account email | you@yourcompany.com |
CONFLUENCE_API_TOKEN |
Classic API token | ATATT3x... |
Usage
With uvx (recommended)
{
"mcpServers": {
"adins-prd-mcp": {
"command": "uvx",
"args": ["adins-prd-mcp"],
"env": {
"CONFLUENCE_BASE_URL": "https://yourcompany.atlassian.net",
"CONFLUENCE_EMAIL": "you@yourcompany.com",
"CONFLUENCE_API_TOKEN": "your-token-here"
}
}
}
}
With a local install
{
"mcpServers": {
"adins-prd-mcp": {
"command": "python",
"args": ["-m", "adins_prd_mcp.server"],
"cwd": "/path/to/mcp",
"env": {
"CONFLUENCE_BASE_URL": "https://yourcompany.atlassian.net",
"CONFLUENCE_EMAIL": "you@yourcompany.com",
"CONFLUENCE_API_TOKEN": "your-token-here"
}
}
}
}
store_feature payload shape
{
"db_path": "output/LMS-1.5.db",
"feature_data": {
"source_id": "935559172",
"source_version": 24,
"raw_content_path": "output/LMS-1.5/935559172/raw.md",
"service_name": "Amendment",
"service_style": "standard",
"service_order": 0,
"feature_name": "Partial Prepayment",
"feature_description": "Partial Prepayment merupakan fitur ...",
"feature_order": 2,
"process_flow_image_path": "output/LMS-1.5/935559172/process-flow.png",
"menus": [
{
"title": "Partial Prepayment Request",
"actor": "Operation Staff",
"description": "Menu for submitting a partial prepayment request.",
"figma_url": "[Figma - Partial Prepayment Request](https://www.figma.com/proto/...)",
"constraints": [
{
"group": "Ada beberapa persyaratan:",
"children": [
{"text": "Status agreement tidak sedang dalam proses lain."},
{"text": "Belum mencapai maksimal amendment limit."}
]
}
],
"boundaries": [
{"group": "", "children": [{"text": "Fitur ini belum support untuk kontrak syariah."}]}
],
"actions": [
{"action": "Submit", "description": "Submit the prepayment request for approval."}
],
"scenarios": [
{"no": "1", "scenario": "Submit with valid data.", "expectation": "Request saved with status Pending."}
],
"gaps": [
{
"number": "GAP-001",
"title": "Prepayment amount validation",
"summary": "Current system does not validate prepayment amount.",
"current_system": "No validation exists.",
"system_solution": "Add server-side validation."
}
]
}
]
}
}
Development
uv sync
uv run adins-prd-mcp
Publishing
uv build
uv publish
Release files for adins-prd-mcp 0.5.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| adins_prd_mcp-0.5.5.tar.gz | 113.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| adins_prd_mcp-0.5.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 148.7 kB
Release files / adins_prd_mcp-0.5.5.tar.gz
| Download URL | adins_prd_mcp-0.5.5.tar.gz |
|---|---|
| Size | 113.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
51181d2259aca1a3323320e0b5fc6e35edf57a2f139b0dc7e155c9eacb98503c
|
|
BLAKE2b-256 checksum How to use checksums |
97949edaec748438f3db36f93a9b1eda1444f43fac6a55256b9fb7cdd9eb1b8c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.11 {"installer":{"name":"uv","version":"0.12.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / adins_prd_mcp-0.5.5-py3-none-any.whl
| Download URL | adins_prd_mcp-0.5.5-py3-none-any.whl |
|---|---|
| Size | 35.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2528a86e791e929c30c6087cc9903c5fec8f725a3c1f484d3c211c2a9172a96d
|
|
BLAKE2b-256 checksum How to use checksums |
8132293342f5a6b75e4430d6c7a39569d728d17475ddcda3559323e442eb5dea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.11 {"installer":{"name":"uv","version":"0.12.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|