{"_id":"@aiwerk/mcp-server-miro","name":"@aiwerk/mcp-server-miro","dist-tags":{"latest":"1.1.0"},"versions":{"1.1.0":{"name":"@aiwerk/mcp-server-miro","version":"1.1.0","main":"build/index.js","type":"module","scripts":{"build":"tsc","clean":"rm -rf build/","prebuild":"npm run clean","postbuild":"chmod +x build/index.js","prepublishOnly":"bash $HOME/agent-memory/commons/scripts/prepublish-safety.sh && npm run build","test":"node test/smoke.test.mjs"},"bin":{"aiwerk-mcp-server-miro":"build/index.js","mcp-miro":"build/index.js"},"keywords":[],"author":{"name":"Konrad Jarzyna"},"license":"Apache-2.0","description":"Miro MCP server with 97 tools (boards, items, tags, groups, members, webhooks). Maintained AIWerk fork of k-jarzyna/mcp-miro with current MCP SDK.","dependencies":{"@mirohq/miro-api":"^2.2.4","@modelcontextprotocol/sdk":"^1.29.0","dotenv":"^16.4.7","zod":"^3.24.2"},"devDependencies":{"@types/node":"^22.14.0","typescript":"^5.8.2"},"repository":{"type":"git","url":"git+https://github.com/AIWerk/mcp-server-miro.git"},"homepage":"https://github.com/AIWerk/mcp-server-miro#readme","bugs":{"url":"https://github.com/AIWerk/mcp-server-miro/issues"},"engines":{"node":">=18"},"_id":"@aiwerk/mcp-server-miro@1.1.0","gitHead":"4fc3f6532db1b84932b43e0bb44a2fe32ab4b5e1","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-ZwvHajwZLZdzgvAPVyUYwTzN4myOfrrL0SgNRMSBzHFxRDA1kK6TFSC2VrNxYr8Ns/9vh/ISsD3HrxRVUB6I/Q==","shasum":"bdb72b2d124e5379e329e503e9e3c2f32266ce77","tarball":"https://registry.npmjs.org/@aiwerk/mcp-server-miro/-/mcp-server-miro-1.1.0.tgz","fileCount":106,"unpackedSize":206847,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFTDH73YMJ4M4HdB+RTEi23jaYzhZfLSQvo2B0snndv5AiA/wz2UiiuLnxaT+jV6OVc9yTkbR0fVZJ9Iu0AciuAGqQ=="}]},"_npmUser":{"name":"agbergsmann","email":"kontakt@aiwerk.ch"},"directories":{},"maintainers":[{"name":"agbergsmann","email":"kontakt@aiwerk.ch"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-server-miro_1.1.0_1783007914369_0.20710830764397592"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-02T15:58:34.227Z","1.1.0":"2026-07-02T15:58:34.514Z","modified":"2026-07-02T15:58:34.744Z"},"maintainers":[{"name":"agbergsmann","email":"kontakt@aiwerk.ch"}],"description":"Miro MCP server with 97 tools (boards, items, tags, groups, members, webhooks). Maintained AIWerk fork of k-jarzyna/mcp-miro with current MCP SDK.","homepage":"https://github.com/AIWerk/mcp-server-miro#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/AIWerk/mcp-server-miro.git"},"author":{"name":"Konrad Jarzyna"},"bugs":{"url":"https://github.com/AIWerk/mcp-server-miro/issues"},"license":"Apache-2.0","readme":"# @aiwerk/mcp-server-miro\n\nMiro MCP server with 97 tools (boards, items, tags, groups, members, webhooks).\n\nMaintained [AIWerk](https://github.com/AIWerk) fork of [k-jarzyna/mcp-miro](https://github.com/k-jarzyna/mcp-miro) (Apache-2.0). Fork motivation: the upstream package was last released in August 2025 and carries known high-severity advisories in its transitive `@modelcontextprotocol/sdk` dependency. This fork tracks the current MCP SDK (`npm audit`: 0 vulnerabilities) and is published as `@aiwerk/mcp-server-miro`.\n\nModel Context Protocol (MCP) server integrating with the [Miro](https://miro.com/) platform. It enables AI assistants (like Claude) to access Miro boards and manage their content through a standardized interface.\n\n---\n### Requirements\n\n- Node.js v16 or newer installed\n- Miro account with API token\n\n### Generate Miro Access Token\n\n1. Go to the [Miro Developer Portal](https://developers.miro.com/docs)\n2. Create a new app or use an existing one\n3. Make sure to create token with permission selected below\n4. Generate OAuth token by selecting `Install app and get OAuth token`\n\n| Permission        | Required |\n|-------------------|:--------:|\n| boards:read       |    ✅     |\n| boards:write      |    ✅     |\n| identity:read     |    ✅     |\n| identity:write    |    ✅     |\n| team:read         |    ✅     |\n| team:write        |    ✅     |\n| microphone:listen |    ❌     |\n| screen:record     |    ❌     |\n| webcam:record     |    ❌     |\n| auditlogs:read    |    ❌     |\n| sessions:delete   |    ❌     |\n\n### Connecting with Claude Desktop\n\n1. Install [Claude Desktop](https://claude.ai/download)\n2. Open or create the configuration file:\n   - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\n   - Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n3. Update it to include this server:\n\n```json\n{\n   \"mcpServers\":{\n      \"miro\":{\n         \"command\":\"npx\",\n         \"args\":[\n            \"-y\",\n            \"@aiwerk/mcp-server-miro\"\n         ],\n         \"env\":{\n            \"MIRO_ACCESS_TOKEN\":\"your_miro_access_token\"\n         }\n      }\n   }\n}\n```\n\n4. Restart Claude Desktop\n\n---\n## Available Tools and Resources\n\n#### Tools\n| Miro SDK Function | MCP Tool | Available |\n|-------------------|----------|-----------|\n| List boards | list-boards | ✅ |\n| Create board | create-board | ✅ |\n| Update board | update-board | ✅ |\n| Delete board | delete-board | ✅ |\n| Copy board | copy-board | ✅ |\n| Get specific board | get-specific-board | ✅ |\n| Get items on board | get-items-on-board | ✅ |\n| Get specific item | get-specific-item | ✅ |\n| Update item position | update-item-position | ✅ |\n| Delete item | delete-item | ✅ |\n| Create app card item | create-app-card-item | ✅ |\n| Get app card item | get-app-card-item | ✅ |\n| Update app card item | update-app-card-item | ✅ |\n| Delete app card item | delete-app-card-item | ✅ |\n| Create card item | create-card-item | ✅ |\n| Get card item | get-card-item | ✅ |\n| Update card item | update-card-item | ✅ |\n| Delete card item | delete-card-item | ✅ |\n| Create connector | create-connector | ✅ |\n| Get connectors | get-connectors | ✅ |\n| Get specific connector | get-specific-connector | ✅ |\n| Update connector | update-connector | ✅ |\n| Delete connector | delete-connector | ✅ |\n| Create sticky note item | create-sticky-note-item | ✅ |\n| Get sticky note item | get-sticky-note-item | ✅ |\n| Update sticky note item | update-sticky-note-item | ✅ |\n| Delete sticky note item | delete-sticky-note-item | ✅ |\n| Create frame | create-frame | ✅ |\n| Get frame item | get-frame-item | ✅ |\n| Update frame item | update-frame-item | ✅ |\n| Delete frame item | delete-frame-item | ✅ |\n| Create document item | create-document-item | ✅ |\n| Get document item | get-document-item | ✅ |\n| Update document item | update-document-item | ✅ |\n| Delete document item | delete-document-item | ✅ |\n| Create text item | create-text-item | ✅ |\n| Get text item | get-text-item | ✅ |\n| Update text item | update-text-item | ✅ |\n| Delete text item | delete-text-item | ✅ |\n| Create items in bulk | create-items-in-bulk | ✅ |\n| Create image item using URL | create-image-item-using-url | ✅ |\n| Create image item using file | create-image-item-using-file | ✅ |\n| Get image item | get-image-item | ✅ |\n| Update image item | update-image-item | ✅ |\n| Update image item using file | update-image-item-using-file | ✅ |\n| Delete image item | delete-image-item | ✅ |\n| Create shape item | create-shape-item | ✅ |\n| Get shape item | get-shape-item | ✅ |\n| Update shape item | update-shape-item | ✅ |\n| Delete shape item | delete-shape-item | ✅ |\n| Create embed item | create-embed-item | ✅ |\n| Get embed item | get-embed-item | ✅ |\n| Update embed item | update-embed-item | ✅ |\n| Delete embed item | delete-embed-item | ✅ |\n| Create tag | create-tag | ✅ |\n| Get tag | get-tag | ✅ |\n| Get all tags | get-all-tags | ✅ |\n| Update tag | update-tag | ✅ |\n| Delete tag | delete-tag | ✅ |\n| Attach tag | attach-tag | ✅ |\n| Detach tag | detach-tag | ✅ |\n| Get item tags | get-item-tags | ✅ |\n| Get all board members | get-all-board-members | ✅ |\n| Get specific board member | get-specific-board-member | ✅ |\n| Remove board member | remove-board-member | ✅ |\n| Share board | share-board | ✅ |\n| Update board member | update-board-member | ✅ |\n| Create group | create-group | ✅ |\n| Get all groups | get-all-groups | ✅ |\n| Get group | get-group | ✅ |\n| Get group items | get-group-items | ✅ |\n| Update group | update-group | ✅ |\n| Ungroup items | ungroup-items | ✅ |\n| Delete group | delete-group | ✅ |\n| Create items in bulk using file | create-items-in-bulk-using-file | ✅ |\n| Create mindmap node | create-mindmap-node | ✅ |\n| Get mindmap node | get-mindmap-node | ✅ |\n| Get mindmap nodes | get-mindmap-nodes | ✅ |\n| Delete mindmap node | delete-mindmap-node | ✅ |\n| Add project member | add-project-member | ✅ |\n| Create board export job | create-board-export-job | ✅ |\n| Get all cases | get-all-cases | ✅ |\n| Get all legal holds | get-all-legal-holds | ✅ |\n| Get audit logs | get-audit-logs | ✅ |\n| Get board classification | get-board-classification | ✅ |\n| Get board content logs | get-board-content-logs | ✅ |\n| Get board export job results | get-board-export-job-results | ✅ |\n| Get board export job status | get-board-export-job-status | ✅ |\n| Get case | get-case | ✅ |\n| Get legal hold | get-legal-hold | ✅ |\n| Get legal hold content items | get-legal-hold-content-items | ✅ |\n| Get organization info | get-organization-info | ✅ |\n| Get organization member | get-organization-member | ✅ |\n| Get organization members | get-organization-members | ✅ |\n| Get project member | get-project-member | ✅ |\n| Remove project member | remove-project-member | ✅ |\n| Update board classification | update-board-classification | ✅ |\n\n\n---\n## Local Development\n\n1. Install dependencies:\n\n```bash\nnpm install\n```\n\n2. Create a `.env` file based on the template:\n\n```bash\ncp .env.template .env\n```\n\n3. Edit the `.env` file and add your Miro access token\n\n4. Build the server:\n\n```bash\nnpm run build\n```\n\n### Running the Server\n\nTo run the server:\n\n```bash\nnode build/index.js\n```\n\n---\n## License\n\nApache License 2.0\n\nThis project is licensed under the Apache License, Version 2.0. See the [LICENSE](LICENSE) file for details.\n","readmeFilename":"README.md","_rev":"1-456ebf27c278b24707129c320c846e79"}