{"_id":"@access-mcp/announcements","_rev":"5-324e1a1f5c8a25512ff63db7b9b33f52","name":"@access-mcp/announcements","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@access-mcp/announcements","version":"0.1.0","keywords":["mcp","access-ci","announcements","support"],"author":{"name":"ACCESS-CI"},"license":"MIT","_id":"@access-mcp/announcements@0.1.0","maintainers":[{"name":"sweetandfizzy","email":"andrew@sweetandfizzy.com"}],"bin":{"access-mcp-announcements":"dist/index.js"},"dist":{"shasum":"af37240f114601f91cfec13ca5e4f732fcf1107b","tarball":"https://registry.npmjs.org/@access-mcp/announcements/-/announcements-0.1.0.tgz","fileCount":12,"integrity":"sha512-PCS2HxmAsVNb0cOCs94zgR9bPGLZ7epOf8NRn0ZWsHq/G+MbsY5NNGBIlAlMlJkuFaKSjjXAb84v4gJONE1UsA==","signatures":[{"sig":"MEUCIGCJ8kPanR+FhyXdieZ9v/SsIPu9puZCEDr1wahw1dnoAiEAzaJtPFW7vAQUfSgfXAzMZC/COZ5pz5+IntDSZaYegXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59994},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"9087d13de9b785aa13a473cb2c3e8a05d0537161","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","start":"node dist/index.js","test:all":"vitest run && vitest run --config vitest.integration.config.ts","test:watch":"vitest","test:coverage":"vitest run --coverage","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"sweetandfizzy","email":"andrew@sweetandfizzy.com"},"_npmVersion":"11.3.0","description":"MCP server for ACCESS Support Announcements API","directories":{},"_nodeVersion":"24.2.0","dependencies":{"axios":"^1.7.0","@access-mcp/shared":"file:../shared","@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/announcements_0.1.0_1758316317184_0.5553938301925532","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@access-mcp/announcements","version":"0.2.0","keywords":["mcp","access-ci","announcements","support"],"author":{"name":"ACCESS-CI"},"license":"MIT","_id":"@access-mcp/announcements@0.2.0","maintainers":[{"name":"sweetandfizzy","email":"andrew@sweetandfizzy.com"}],"bin":{"access-mcp-announcements":"dist/index.js"},"dist":{"shasum":"246cf2428179d70bab2768e26157e2e8b229569a","tarball":"https://registry.npmjs.org/@access-mcp/announcements/-/announcements-0.2.0.tgz","fileCount":12,"integrity":"sha512-AsN8sEbgEtkFZgPBX3wEt5jy8cBdfM9yXENI1ZfL+wuiU/KEpmL2q4LKRRAudwZofmrt4bchS7Fb04gRqf6+oA==","signatures":[{"sig":"MEUCIQDKusq9NZDisdPv4YUxnoWLuX17PQOx7n+iNVUthhSf2AIgLbpjtwn0vwd/fkn+5W+39kvwh3lVRuWiTJKoShUPzo8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44341},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"9224291b50a9c4c538241d2a93f8fb2dde8b69f8","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","start":"node dist/index.js","test:all":"vitest run && vitest run --config vitest.integration.config.ts","test:watch":"vitest","test:coverage":"vitest run --coverage","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"sweetandfizzy","email":"andrew@sweetandfizzy.com"},"_npmVersion":"11.3.0","description":"MCP server for ACCESS Support Announcements API","directories":{},"_nodeVersion":"24.2.0","dependencies":{"axios":"^1.7.0","@access-mcp/shared":"^0.3.3","@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/announcements_0.2.0_1764187360765_0.5691954511824895","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@access-mcp/announcements","version":"0.3.0","keywords":["mcp","access-ci","announcements","support"],"author":{"name":"ACCESS-CI"},"license":"MIT","_id":"@access-mcp/announcements@0.3.0","maintainers":[{"name":"sweetandfizzy","email":"andrew@sweetandfizzy.com"}],"bin":{"access-mcp-announcements":"dist/index.js"},"dist":{"shasum":"0bcdec96f4c13037e9aae40706bd20d0ed90390f","tarball":"https://registry.npmjs.org/@access-mcp/announcements/-/announcements-0.3.0.tgz","fileCount":12,"integrity":"sha512-A7rLKM+s0168y4+TT5nn4trST+qanGOJhs8m98wLUK+5MjbVgFKuQqdgSUMAgu9w1I1LxXsRRYSdJFE8ft5r4A==","signatures":[{"sig":"MEUCIQDhd2+z4YdMuCcu2Zs8gZa+XuaP2LVnOxRHs9vLYw/LKQIgTih5ujGLWDzmyWi8gD/u9zaLz7oUyOlK9yI2VuFV610=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139748},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"c406541e97053803814d2badd76890edd2ed00ed","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","start":"node dist/index.js","test:all":"vitest run && vitest run --config vitest.integration.config.ts","test:watch":"vitest","test:coverage":"vitest run --coverage","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"sweetandfizzy","email":"andrew@sweetandfizzy.com"},"_npmVersion":"11.3.0","description":"MCP server for ACCESS Support Announcements API","directories":{},"_nodeVersion":"24.2.0","dependencies":{"axios":"^1.7.0","@access-mcp/shared":"^0.5.0","@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/announcements_0.3.0_1766163268891_0.19426902461007645","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@access-mcp/announcements","version":"0.3.1","keywords":["mcp","access-ci","announcements","support"],"author":{"name":"ACCESS-CI"},"license":"MIT","_id":"@access-mcp/announcements@0.3.1","maintainers":[{"name":"sweetandfizzy","email":"andrew@sweetandfizzy.com"}],"bin":{"access-mcp-announcements":"dist/index.js"},"dist":{"shasum":"d36e7fd95cc88e866b8f5924b0d701c4ff5293d7","tarball":"https://registry.npmjs.org/@access-mcp/announcements/-/announcements-0.3.1.tgz","fileCount":12,"integrity":"sha512-2H+b1CI1EUCgl05SJcvJ21H2AR44urEtaYeJ0clwByvM0ERAnWALLL7nY6XaaZ21tHjxq9gu2WwVOrxv+4pgJQ==","signatures":[{"sig":"MEUCIQDyl9EO9AoSKVkag/vYMqPe1FJtUgSU9LPK2TeDdeDorwIgOFTx8SNzlWtaWLumPvKiooUI1hXXeTVaE7Z2JV4wuZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":161472},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"a1917eb47506edfa1c72cbecf7b0a880412697b7","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","start":"node dist/index.js","test:all":"vitest run && vitest run --config vitest.integration.config.ts","test:watch":"vitest","test:coverage":"vitest run --coverage","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"sweetandfizzy","email":"andrew@sweetandfizzy.com"},"_npmVersion":"11.3.0","description":"MCP server for ACCESS Support Announcements API","directories":{},"_nodeVersion":"24.2.0","dependencies":{"axios":"^1.7.0","@access-mcp/shared":"*","@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/announcements_0.3.1_1771869877856_0.533672838547564","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@access-mcp/announcements","version":"0.5.0","description":"MCP server for ACCESS Support Announcements API","type":"module","main":"dist/index.js","bin":{"access-mcp-announcements":"dist/index.js"},"scripts":{"build":"tsc","dev":"tsc --watch","start":"node dist/index.js","test":"vitest run","test:watch":"vitest","test:integration":"vitest run --config vitest.integration.config.ts","test:all":"vitest run && vitest run --config vitest.integration.config.ts","test:coverage":"vitest run --coverage"},"keywords":["mcp","access-ci","announcements","support"],"author":{"name":"ACCESS-CI"},"license":"MIT","dependencies":{"@access-mcp/shared":"^0.9.0","@modelcontextprotocol/sdk":"^1.28.0","axios":"^1.7.0"},"devDependencies":{"@types/node":"^20.0.0","typescript":"^5.0.0","vitest":"^1.0.0"},"_id":"@access-mcp/announcements@0.5.0","gitHead":"fdf87363ea16c4a03335cf164ada6f22876c8683","types":"./dist/index.d.ts","_nodeVersion":"24.2.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-JTrE/em8u5bSicOfCeP8wPaTHG2q/riIN9jV/lR5/+lEUdDtel+Ka5SuqmUjfNOLq+0eDDzypnmKAHt07hzVFw==","shasum":"b073f679eaf9e34be874f1faaa90070a7e281ced","tarball":"https://registry.npmjs.org/@access-mcp/announcements/-/announcements-0.5.0.tgz","fileCount":12,"unpackedSize":175871,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCjuVUbPZIcZYz2+VeD66KEhOGxZ3owZyIJPZQie8VSMQIhAP6ENGAZvRumrVD5GJNjp0QVr3poIb0gNgOnBUvu6zck"}]},"_npmUser":{"name":"sweetandfizzy","email":"andrew@sweetandfizzy.com"},"directories":{},"maintainers":[{"name":"sweetandfizzy","email":"andrew@sweetandfizzy.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/announcements_0.5.0_1775573977440_0.5422546558185708"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-19T21:11:57.060Z","modified":"2026-04-07T14:59:37.689Z","0.1.0":"2025-09-19T21:11:57.418Z","0.2.0":"2025-11-26T20:02:40.955Z","0.3.0":"2025-12-19T16:54:29.044Z","0.3.1":"2026-02-23T18:04:38.004Z","0.5.0":"2026-04-07T14:59:37.584Z"},"author":{"name":"ACCESS-CI"},"license":"MIT","keywords":["mcp","access-ci","announcements","support"],"description":"MCP server for ACCESS Support Announcements API","maintainers":[{"name":"sweetandfizzy","email":"andrew@sweetandfizzy.com"}],"readme":"# ACCESS Support Announcements MCP Server\n\nMCP server for ACCESS support announcements, service updates, maintenance notices, and community communications. Supports both searching public announcements and creating/managing announcements for authenticated users.\n\n## Usage Examples\n\n### Searching Announcements\n```\n\"Recent ACCESS announcements\"\n\"Search for GPU announcements\"\n\"Find announcements about machine learning\"\n```\n\n### Creating Announcements\n```\n\"Help me create a new announcement\"\n\"I want to post an announcement about our workshop\"\n```\n\n### Managing Your Announcements\n```\n\"Show my announcements\"\n\"Update my draft announcement\"\n\"Delete my announcement\"\n```\n\n## Tools\n\n### `search_announcements`\n\nSearch and filter ACCESS support announcements (public, read-only).\n\n**Parameters:**\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `query` | string | Full-text search across title, body, and summary |\n| `tags` | string | Filter by topics (e.g., \"gpu\", \"machine-learning\", \"training\") |\n| `date` | enum | Time period: `today`, `this_week` (last 7 days), `this_month` (last 30 days), `past` (last year) |\n| `limit` | number | Max results (default: 25) |\n\n**Returns:** `{ total, items: [{ uuid, title, summary, body, published_date, tags, affiliation, affinity_group }] }`\n\n**Examples:**\n```javascript\n// Full-text search\nsearch_announcements({ query: \"GPU computing\" })\n\n// GPU announcements from the past month\nsearch_announcements({ tags: \"gpu\", date: \"this_month\" })\n\n// Combined search\nsearch_announcements({ query: \"workshop\", tags: \"training\", limit: 10 })\n```\n\n### `get_announcement_context`\n\nGet user context and available options before creating an announcement. **Call this first** when creating announcements.\n\n**Returns:**\n- `tags`: Available tags for announcements\n- `affinity_groups`: Groups the user coordinates (empty if not a coordinator)\n- `is_coordinator`: Boolean - whether user can associate announcements with affinity groups\n- `affiliations`: Available affiliation options (\"ACCESS Collaboration\", \"Community\")\n- `where_to_share_options`: Available sharing options (for coordinators)\n\n### `create_announcement`\n\nCreate a new ACCESS announcement (saved as draft for staff review).\n\n**Parameters:**\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `title` | string | Yes | Clear, specific headline (under 100 characters) |\n| `body` | string | Yes | Full content. HTML supported (`<p>`, `<a>`, `<strong>`, `<em>`, `<ul>`, `<li>`) |\n| `summary` | string | Yes | Brief teaser (1-2 sentences) for listings |\n| `tags` | array | No | Tag names to categorize the announcement |\n| `affiliation` | string | No | \"ACCESS Collaboration\" or \"Community\" (default) |\n| `affinity_group` | string | No | Group name/UUID (coordinators only) |\n| `external_link` | object | No | `{ uri: \"https://...\", title: \"Link text\" }` |\n| `where_to_share` | array | No | Where to publish: \"Announcements page\", \"Bi-Weekly Digest\" (all users), \"Affinity Group page\", \"Email to Affinity Group\" (coordinators only) |\n\n**Returns:** `{ success, uuid, title, edit_url }`\n\n### `update_announcement`\n\nUpdate an existing announcement you own.\n\n**Parameters:**\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `uuid` | string | Yes | Announcement UUID (from `get_my_announcements`) |\n| `title` | string | No | New title |\n| `body` | string | No | New body content |\n| `summary` | string | No | New summary |\n| `tags` | array | No | New tags |\n| `affinity_group` | string | No | New affinity group |\n| `external_link` | object | No | New external link |\n| `where_to_share` | array | No | Where to publish (see create_announcement for options) |\n\n**Returns:** `{ success, uuid, title, edit_url }`\n\n### `delete_announcement`\n\nPermanently delete an announcement you own. **Requires explicit user confirmation.**\n\n**Parameters:**\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `uuid` | string | Yes | Announcement UUID |\n| `confirmed` | boolean | Yes | Must be `true` - only set after showing the user the title/status and getting explicit confirmation |\n\n**Important:** For bulk deletes, each announcement must be confirmed individually. General consent (\"delete them all\") is not sufficient.\n\n**Returns:** `{ success, uuid }`\n\n### `get_my_announcements`\n\nList all announcements created by the authenticated user.\n\n**Parameters:**\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `limit` | number | Max results (default: 50) |\n\n**Returns:** `{ total, items: [{ uuid, nid, title, status, created, published_date, summary, edit_url }] }`\n\n## Installation\n\n```bash\nnpm install -g @access-mcp/announcements\n```\n\n## Configuration\n\nFor read-only access (searching public announcements):\n```json\n{\n  \"mcpServers\": {\n    \"access-announcements\": {\n      \"command\": \"npx\",\n      \"args\": [\"@access-mcp/announcements\"]\n    }\n  }\n}\n```\n\nFor full access (creating/managing announcements), authentication is required:\n```json\n{\n  \"mcpServers\": {\n    \"access-announcements\": {\n      \"command\": \"npx\",\n      \"args\": [\"@access-mcp/announcements\"],\n      \"env\": {\n        \"DRUPAL_API_URL\": \"https://support.access-ci.org\",\n        \"DRUPAL_USERNAME\": \"your-username\",\n        \"DRUPAL_PASSWORD\": \"your-password\",\n        \"ACTING_USER_UID\": \"12345\"\n      }\n    }\n  }\n}\n```\n\n## Resources\n\n- `accessci://announcements` - Recent announcements (10 most recent)\n\n## Prompts\n\n- `create_announcement_guide` - Step-by-step guide for creating announcements\n- `manage_announcements_guide` - Guide for viewing, updating, and deleting announcements\n","readmeFilename":"README.md"}