{"_id":"@alexbuzo/pati-mcp","_rev":"3-dd69a14456e0d3491af83b33b9402c96","name":"@alexbuzo/pati-mcp","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@alexbuzo/pati-mcp","version":"0.1.0","keywords":["mcp","pati","swagger","rest"],"author":{"name":"Aliaksei Buzo aliakseibuzo@gmail.com"},"license":"MIT","_id":"@alexbuzo/pati-mcp@0.1.0","maintainers":[{"name":"alexbuzo","email":"aliakseibuzo@gmail.com"}],"homepage":"https://github.com/abuzo/pati-mcp#readme","bugs":{"url":"https://github.com/abuzo/pati-mcp/issues"},"bin":{"pati-mcp":"build/index.js"},"dist":{"shasum":"5fdf90af8d1e23c6a2b2e03e47410ce041aa98f2","tarball":"https://registry.npmjs.org/@alexbuzo/pati-mcp/-/pati-mcp-0.1.0.tgz","fileCount":21,"integrity":"sha512-YZzw9B/xTlwiHwCM6+y8+dxa6N67DnUxJIrq5uTI5oYycr1dvEjQATF3jTsxw1t7vnDkZZK/xvkkEmsnFnB21g==","signatures":[{"sig":"MEUCIQCy6ShHHtLtyKVHFwZz4yP4n30ad0w0oOZK7Hlc7HEfjAIgKrsvRCybn36fbgqGZ06Yok36KIFVlBCnWRBSkDbkmZU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172482},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"}},"gitHead":"dbbdcd8c9b478fb251505533ae309b2e5c469df1","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/operations.test.ts src/client.test.ts src/mcp.test.ts","build":"npm run clean && tsc","clean":"node -e \"fs.rmSync('build', { recursive: true, force: true })\"","start":"node build/index.js","watch":"tsc --watch","prepack":"npm run build","prepublishOnly":"npm test && npm run build && npm pack --dry-run","generate:operations":"node scripts/generate-operations.mjs"},"_npmUser":{"name":"alexbuzo","email":"aliakseibuzo@gmail.com"},"repository":{"url":"git+https://github.com/abuzo/pati-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"PATI-compatible REST API MCP server exposing Swagger operations over stdio.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.25.76","dotenv":"^17.2.3","undici":"^7.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/pati-mcp_0.1.0_1779380430906_0.7698064791262282","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alexbuzo/pati-mcp","version":"0.1.1","keywords":["mcp","pati","swagger","rest"],"author":{"name":"Aliaksei Buzo aliakseibuzo@gmail.com"},"license":"MIT","_id":"@alexbuzo/pati-mcp@0.1.1","maintainers":[{"name":"alexbuzo","email":"aliakseibuzo@gmail.com"}],"homepage":"https://github.com/abuzo/pati-mcp#readme","bugs":{"url":"https://github.com/abuzo/pati-mcp/issues"},"bin":{"pati-mcp":"build/index.js"},"dist":{"shasum":"ebe7f45f4bb46f72c8a1e5d0c67cca5a45e086ab","tarball":"https://registry.npmjs.org/@alexbuzo/pati-mcp/-/pati-mcp-0.1.1.tgz","fileCount":27,"integrity":"sha512-r6oWggF3q2e5yHoY2XQRCh65Ldk83djuFVsAjAe4TOETmN1VH44FmQHkSKz+8P7E14F17yGb+in/ixO4tK/vgA==","signatures":[{"sig":"MEYCIQDw43gjiZtFGSL1HGkdxqlJyRLCN8cUhCg/7lyfHwX8WwIhAN2SrXfDzvswVxNPX3CD/twAwoAlRPeBIZ0N8jIAE40q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213449},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"}},"gitHead":"dbbdcd8c9b478fb251505533ae309b2e5c469df1","scripts":{"dev":"tsx src/index.ts","test":"tsx --test src/*.test.ts","build":"npm run clean && tsc","clean":"node -e \"fs.rmSync('build', { recursive: true, force: true })\"","start":"node build/index.js","watch":"tsc --watch","prepack":"npm run build","prepublishOnly":"npm test && npm run build && npm pack --dry-run","generate:operations":"node scripts/generate-operations.mjs"},"_npmUser":{"name":"alexbuzo","email":"aliakseibuzo@gmail.com"},"repository":{"url":"git+https://github.com/abuzo/pati-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"PATI-compatible REST API MCP server exposing Swagger operations over stdio.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.25.76","dotenv":"^17.2.3","undici":"^7.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.9.3","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/pati-mcp_0.1.1_1780491931839_0.9292795705410353","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@alexbuzo/pati-mcp","version":"0.1.2","description":"PATI-compatible REST API MCP server exposing Swagger operations over stdio.","author":{"name":"Aliaksei Buzo aliakseibuzo@gmail.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/abuzo/pati-mcp.git"},"bugs":{"url":"https://github.com/abuzo/pati-mcp/issues"},"homepage":"https://github.com/abuzo/pati-mcp#readme","type":"module","main":"./build/index.js","types":"./build/index.d.ts","exports":{".":{"types":"./build/index.d.ts","default":"./build/index.js"}},"bin":{"pati-mcp":"build/index.js"},"publishConfig":{"access":"public"},"keywords":["mcp","pati","swagger","rest"],"engines":{"node":">=20"},"scripts":{"clean":"node -e \"fs.rmSync('build', { recursive: true, force: true })\"","build":"npm run clean && tsc","dev":"tsx src/index.ts","generate:operations":"node scripts/generate-operations.mjs","start":"node build/index.js","test":"tsx --test src/*.test.ts","prepack":"npm run build","prepublishOnly":"npm test && npm run build && npm pack --dry-run","watch":"tsc --watch"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","dotenv":"^17.2.3","undici":"^7.25.0","zod":"^3.25.76"},"devDependencies":{"@types/node":"^22.10.2","tsx":"^4.20.6","typescript":"^5.9.3"},"gitHead":"dbbdcd8c9b478fb251505533ae309b2e5c469df1","_id":"@alexbuzo/pati-mcp@0.1.2","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-3YX1zE9VuP2csaESU2uIgjOpvqP2zF0bD5/L3+AIkAorl9om4/prXYoX2032Qa5NHc6RRzWLYzimXvauLQbskA==","shasum":"d498ba30c35721380e72b5012b240ba4ff6f084e","tarball":"https://registry.npmjs.org/@alexbuzo/pati-mcp/-/pati-mcp-0.1.2.tgz","fileCount":27,"unpackedSize":215412,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEforYuRdwKrPY1Rbfokx/k6EsdMAQgDxxhc8dWD9K0tAiEApJnqM5/gKVt4PrrsWwcRkkQ+7/4nZLjkDNx5SkiC2/c="}]},"_npmUser":{"name":"alexbuzo","email":"aliakseibuzo@gmail.com"},"directories":{},"maintainers":[{"name":"alexbuzo","email":"aliakseibuzo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pati-mcp_0.1.2_1780493178012_0.8054012748988311"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-21T16:20:30.704Z","modified":"2026-06-03T13:26:18.415Z","0.1.0":"2026-05-21T16:20:31.063Z","0.1.1":"2026-06-03T13:05:31.993Z","0.1.2":"2026-06-03T13:26:18.145Z"},"bugs":{"url":"https://github.com/abuzo/pati-mcp/issues"},"author":{"name":"Aliaksei Buzo aliakseibuzo@gmail.com"},"license":"MIT","homepage":"https://github.com/abuzo/pati-mcp#readme","keywords":["mcp","pati","swagger","rest"],"repository":{"type":"git","url":"git+https://github.com/abuzo/pati-mcp.git"},"description":"PATI-compatible REST API MCP server exposing Swagger operations over stdio.","maintainers":[{"name":"alexbuzo","email":"aliakseibuzo@gmail.com"}],"readme":"# PATI MCP Server\n\nMCP server for a PATI-compatible Swagger 2.0 REST API.\n\nThis server exposes every PATI Swagger operation as an MCP tool over stdio.\nIt also includes one convenience promotion tool that can resolve a PATI build id from\nArtifactory artifact properties and then call the PATI Swagger promotion API.\n\n## Installation\n\n```bash\nnpm install -g @alexbuzo/pati-mcp\n```\n\nOr run it without a global install:\n\n```bash\nnpx -y @alexbuzo/pati-mcp\n```\n\n## Development\n\n```bash\nnpm install\nnpm run generate:operations\nnpm test\nnpm run build\n```\n\n## MCP Configuration\n\n```json\n{\n  \"mcpServers\": {\n    \"pati-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@alexbuzo/pati-mcp\"],\n      \"env\": {\n        \"PATI_BASE_URL\": \"https://pati.example.com\",\n        \"PATI_USERNAME\": \"your-login\",\n        \"PATI_PASSWORD\": \"your-password\",\n        \"PATI_ALLOW_WRITE\": \"false\",\n        \"ARTIFACTORY_BASE_URL\": \"https://artifactory.example.com\",\n        \"ARTIFACTORY_USERNAME\": \"your-login\",\n        \"ARTIFACTORY_PASSWORD\": \"your-password\"\n      }\n    }\n  }\n}\n```\n\n## Environment Variables\n\n| Variable | Required | Description |\n|---|---:|---|\n| `PATI_BASE_URL` | Yes | PATI base URL. |\n| `PATI_USERNAME` | For Basic auth | Username for PATI Basic auth. |\n| `PATI_PASSWORD` | For Basic auth | Password for PATI Basic auth. |\n| `PATI_BASIC_TOKEN` | Alternative | Precomputed Basic auth token, without the `Basic ` prefix. |\n| `PATI_ALLOW_WRITE` | No | Set to `true` to allow mutating operations. Default: `false`. |\n| `PATI_TLS_INSECURE` | No | Set to `true` only for local certificate troubleshooting. |\n| `PATI_TIMEOUT_MS` | No | Request timeout in milliseconds. Default: `30000`. |\n| `PATI_RETRIES` | No | Retry attempts for transient failures. Default: `1`. |\n| `ARTIFACTORY_BASE_URL` | For artifact lookup | Artifactory base URL. Not required when using an explicit `buildId`. |\n| `ARTIFACTORY_USERNAME` | For Basic auth | Username for Artifactory Basic auth. |\n| `ARTIFACTORY_PASSWORD` | For Basic auth | Password for Artifactory Basic auth. |\n| `ARTIFACTORY_TOKEN` | Alternative | Bearer token for Artifactory. |\n| `ARTIFACTORY_BASIC_TOKEN` | Alternative | Precomputed Basic auth token, without the `Basic ` prefix. |\n| `ARTIFACTORY_TLS_INSECURE` | No | Set to `true` only for local certificate troubleshooting. |\n| `ARTIFACTORY_TIMEOUT_MS` | No | Request timeout in milliseconds. Default: `30000`. |\n\n## Simple Promotion Tool\n\nUse `pati_promote_from_artifact` for the shortest promotion flow.\n\nMinimal input:\n\n- `appVersion`: application/build coordinate like `app-name:release-d1-20260531.143556-971`\n\nOptional overrides:\n\n- `mode`: `plan`, `simulate`, or `promote`. Default: `promote`.\n- `repos`: Artifactory repositories to narrow search. By default Artifactory searches all accessible repositories.\n- `versionName`: inferred from `release-<version>-<timestamp>-<build>` build versions.\n- `naming`: inferred as `NEW` unless the build version already ends with `-RELEASE`.\n- `artifactSelection`: default `EVERYTHING`.\n\nProvide exactly one source:\n\n- `buildId`\n- `appVersion`\n- `artifactUrl`\n- `repoKey` + `artifactPath`\n- `artifactName` + `repos`\n\n`plan` resolves the build id and returns the PATI request without calling PATI.\n`simulate` calls the PATI promotion endpoint with `execution=SIMULATE`.\n`promote` calls it with `execution=PROMOTE`.\n\n`simulate` and `promote` require `PATI_ALLOW_WRITE=true` because they call a PATI POST endpoint.\n\nExample plan request:\n\n```json\n{\n  \"appVersion\": \"app-name:release-d1-20260531.143556-971\"\n}\n```\n\n## Tool Naming\n\nTool names are generated from Swagger operation IDs with a `pati_` prefix.\nExample: `closeDeliverableUsingPOST` becomes `pati_close_deliverable_using_post`.\n\n## Operation Generation\n\nThe checked-in operation catalog was generated from Swagger. To regenerate it, provide the Swagger URL or a local Swagger JSON file through environment variables:\n\n```bash\nPATI_SWAGGER_URL=\"https://pati.example.com/v2/api-docs\" npm run generate:operations\nPATI_SWAGGER_FILE=\"./swagger.json\" npm run generate:operations\n```\n\n## Publishing\n\nReview the package contents before publishing:\n\n```bash\nnpm pack --dry-run\n```\n\nPublish the scoped package publicly:\n\n```bash\nnpm publish --access public\n```\n","readmeFilename":"README.md"}