{"_id":"@amrc-factoryplus/mcp","name":"@amrc-factoryplus/mcp","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@amrc-factoryplus/mcp","version":"1.0.0","description":"MCP server for AMRC Connectivity Stack (ACS) - enables AI agents to interact with Factory+ services","author":{"name":"AMRC"},"license":"MIT","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"amrc-factoryplus-mcp":"dist/index.js"},"engines":{"node":">=18.0.0"},"publishConfig":{"access":"public"},"keywords":["amrc","factory-plus","factoryplus","acs","mcp","model-context-protocol","configdb","ai","claude","cursor"],"scripts":{"start":"node dist/index.js","build":"tsc","dev":"npm run build && npm run start","clean":"tsc --build --clean","prepublishOnly":"npm run build"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","@amrc-factoryplus/service-client":"^1.6.0","dotenv":"^16.0.3","zod":"^3.23.0"},"optionalDependencies":{"gssapi.js":"^2.0.1"},"devDependencies":{"@types/node":"^20.0.0","typescript":"^5.0.0"},"gitHead":"9b372c0868d2d6dc9c360a0752860387c14f7334","_id":"@amrc-factoryplus/mcp@1.0.0","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-J9X9jjJNwKrZ+JJk5IMqSgM1jugyb6gNl4iZQt7ZdMZ5k3LA8wF/cW01i514ME7zQvDO7ojS1JqWtqD2yCdF+Q==","shasum":"1b2a4a0b4e37fae6c93e71d9a370812f30968f76","tarball":"https://registry.npmjs.org/@amrc-factoryplus/mcp/-/mcp-1.0.0.tgz","fileCount":17,"unpackedSize":71340,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDLtRD8/TALgrx9CXWwiL2vjznLP1y0xmORZxXHc19gvAIgd897s5RTvU9Vb3u8NCEzHmaxAZl9/ReIdUVdgDPO6Po="}]},"_npmUser":{"name":"alex-godbehere","email":"alex.godbehere@amrc.co.uk"},"directories":{},"maintainers":[{"name":"amrc-benmorrow","email":"b.morrow@amrc.co.uk"},{"name":"alex-godbehere","email":"alex.godbehere@amrc.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_1.0.0_1769690032381_0.9016993130087572"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-29T12:33:52.275Z","1.0.0":"2026-01-29T12:33:52.516Z","modified":"2026-01-29T12:33:52.782Z"},"maintainers":[{"name":"amrc-benmorrow","email":"b.morrow@amrc.co.uk"},{"name":"alex-godbehere","email":"alex.godbehere@amrc.co.uk"}],"description":"MCP server for AMRC Connectivity Stack (ACS) - enables AI agents to interact with Factory+ services","keywords":["amrc","factory-plus","factoryplus","acs","mcp","model-context-protocol","configdb","ai","claude","cursor"],"author":{"name":"AMRC"},"license":"MIT","readme":"# @amrc-factoryplus/mcp\n\nAn [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server for the AMRC Connectivity Stack (ACS). Enables AI agents (Claude, Cursor, etc.) to interact with Factory+ services including ConfigDB, Auth, and Directory.\n\n## Quick Start\n\n```bash\nnpx -y @amrc-factoryplus/mcp\n```\n\nOr install globally:\n\n```bash\nnpm install -g @amrc-factoryplus/mcp\namrc-factoryplus-mcp\n```\n\n## Configuration\n\nSet the following environment variables:\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `DIRECTORY_URL` | Yes | URL of the ACS Directory service |\n| `SERVICE_USERNAME` | Yes | Service account username |\n| `SERVICE_PASSWORD` | Yes | Service account password |\n| `VERBOSE` | No | Enable verbose logging |\n\n## Usage with MCP Clients\n\n### Claude Desktop\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):\n\n```json\n{\n  \"mcpServers\": {\n    \"acs\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@amrc-factoryplus/mcp\"],\n      \"env\": {\n        \"DIRECTORY_URL\": \"https://directory.your-acs.example.com\",\n        \"SERVICE_USERNAME\": \"your-service-account\",\n        \"SERVICE_PASSWORD\": \"your-password\"\n      }\n    }\n  }\n}\n```\n\n### Cursor IDE\n\nAdd to Cursor's MCP settings:\n\n```json\n{\n  \"acs\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@amrc-factoryplus/mcp\"],\n    \"env\": {\n      \"DIRECTORY_URL\": \"https://directory.your-acs.example.com\",\n      \"SERVICE_USERNAME\": \"your-service-account\",\n      \"SERVICE_PASSWORD\": \"your-password\"\n    }\n  }\n}\n```\n\n## Available Tools\n\n### ConfigDB Tools\n\n| Tool | Description |\n|------|-------------|\n| `list_apps` | List all registered applications |\n| `get_config` | Fetch config by app UUID and object UUID |\n| `list_configs` | List all objects with config for an application |\n| `search_configs` | Search configs with JSONPath query |\n| `get_class_members` | List all members of a class (recursive) |\n| `get_class_subclasses` | List all subclasses of a class (recursive) |\n| `get_object_info` | Get registration and general info for an object |\n\n### Auth Tools\n\n| Tool | Description |\n|------|-------------|\n| `list_principals` | List all principal UUIDs |\n| `find_principal` | Find info by Kerberos/UUID/Sparkplug ID |\n| `check_acl` | Check if a principal has a permission on a target |\n| `list_grants` | List all permission grant UUIDs |\n| `get_grant` | Get details of a specific grant |\n| `find_grants` | Search grants by principal/permission/target |\n| `whoami` | Get current authenticated identity |\n\n### Directory Tools\n\n| Tool | Description |\n|------|-------------|\n| `get_device_info` | Get device details (address, schemas, online status) |\n| `get_device_address` | Get Sparkplug address for a device UUID |\n| `get_service_info` | Get full service registration (URL + device) |\n| `get_service_url` | Get HTTP endpoint URL for a service UUID |\n\n### Documentation Tools\n\n| Tool | Description |\n|------|-------------|\n| `search_docs` | Search ACS documentation on GitHub |\n| `list_docs` | List available documentation files |\n| `read_doc` | Read a specific documentation file |\n| `search_portal` | Search Factory+ documentation portal |\n| `read_portal_page` | Read a Factory+ portal page |\n\n## Development\n\n```bash\n# Clone and install\ncd acs-mcp\nnpm install\n\n# Build TypeScript\nnpm run build\n\n# Run locally\nnpm run start\n```\n\n## Publishing\n\n```bash\n# Build and publish\nnpm run build\nnpm publish --access public\n```\n\n## License\n\nMIT - see [LICENSE](../LICENSE)\n","readmeFilename":"README.md","_rev":"1-ef214d6770411872483530ec11302042"}