Model Context Protocol (MCP) Server
Manage your changelogs, roadmaps, and customer feedback directly from your AI coding workflow using our official Model Context Protocol (MCP) server: @ahm-labs/nanolog-mcp.
Whether you use Cursor, Claude Code, Antigravity, Windsurf, or any other MCP-compatible client, you can ask your AI assistant to draft release notes, edit changelogs, update roadmap milestones, inspect customer feedback, and tweak widget configurations without leaving your editor.
[!NOTE] Safety Design: No Delete Operations To prevent accidental data loss or automated wiping of release history by AI agents, the NanoLog MCP server strictly supports Create, Read, and Update operations. Deletion of posts or roadmap items must be performed manually via the NanoLog Dashboard.
Quick Setup
1. Cursor (.cursor/mcp.json)
Add the following to your Cursor MCP configuration (Settings > Features > MCP or .cursor/mcp.json in your workspace):
{
"mcpServers": {
"nanolog": {
"command": "npx",
"args": ["-y", "@ahm-labs/nanolog-mcp"],
"env": {
"NANOLOG_API_URL": "https://www.nanolog.dev",
"NANOLOG_API_KEY": "YOUR_NANOLOG_API_KEY",
"NANOLOG_APP_ID": "YOUR_DEFAULT_APP_ID"
}
}
}
}
2. Claude Code
Add the server to Claude Code using the CLI command:
claude mcp add nanolog -- npx -y @ahm-labs/nanolog-mcp
Or configure environment variables in your ~/.claude/claude_desktop_config.json:
{
"mcpServers": {
"nanolog": {
"command": "npx",
"args": ["-y", "@ahm-labs/nanolog-mcp"],
"env": {
"NANOLOG_API_URL": "https://www.nanolog.dev",
"NANOLOG_API_KEY": "YOUR_NANOLOG_API_KEY"
}
}
}
}
3. Google Antigravity
In your Antigravity MCP settings (~/.gemini/antigravity/mcp_config.json):
{
"mcpServers": {
"nanolog": {
"command": "npx",
"args": ["-y", "@ahm-labs/nanolog-mcp"],
"env": {
"NANOLOG_API_URL": "https://www.nanolog.dev",
"NANOLOG_API_KEY": "YOUR_NANOLOG_API_KEY"
}
}
}
}
Environment Variables
| Variable | Description | Required |
| :--- | :--- | :--- |
| NANOLOG_API_KEY | Your NanoLog API key, organization HMAC secret, or master token. | Yes |
| NANOLOG_APP_ID | Default project App ID (UUID) used when no specific project is specified in prompts. | Optional |
| NANOLOG_USER_EMAIL | User account email (e.g. you@company.com) to automatically filter multi-tenant client projects. | Optional |
| NANOLOG_API_URL | Base URL of your NanoLog instance. Defaults to https://www.nanolog.dev. | Optional |
Available Tools Reference
The NanoLog MCP server exposes the following specialized tools:
1. Project & Configuration Tools
list_projects: Lists all client organizations and App IDs accessible by your account.- Example prompt:
"Show me all my client projects in NanoLog."
- Example prompt:
get_project_settings: Inspects allowed domains, localhost testing access, public page URLs, and widget tab configurations.- Example prompt:
"Check the widget settings and allowed domains for Riverside Records."
- Example prompt:
update_project_settings: Modifies project display names, domain allowlists, public page status, tab labels, and voting toggles.- Example prompt:
"Enable post voting and update the feedback tab label to 'Suggestions' in project Demo Organization."
- Example prompt:
2. Changelog Posts Tools
list_changelog_posts: Lists recent release notes and updates with their unique post IDs, categories, publication status, and pinned status.- Example prompt:
"List the last 5 changelog posts for our app."
- Example prompt:
create_changelog_post: Drafts or publishes a new product announcement or release note. Supportstitle,content(markdown),category(feature,improvement,fix,announcement),tags,isPublished, andisPinned.- Example prompt:
"Publish a new 'feature' changelog post titled 'Stripe Checkout v2' with notes on Apple Pay support."
- Example prompt:
edit_changelog_post: Updates the content, title, tags, category, pin status, or publication state of an existing post by its ID.- Example prompt:
"Update changelog post 02cd81d3-... to publish it and add the tag 'billing'."
- Example prompt:
3. Roadmap Items Tools
list_roadmap_items: Retrieves roadmap milestones and feature requests grouped by column (planned,in_progress,released) along with community vote counts.- Example prompt:
"Show our planned roadmap items."
- Example prompt:
add_roadmap_item: Adds a new feature, objective, or bug tracker item to your product roadmap.- Example prompt:
"Add 'Dark Mode Theme Support' to the planned column on our roadmap."
- Example prompt:
edit_roadmap_item: Updates title, description, order, or transitions status betweenplanned,in_progress, andreleased.- Example prompt:
"Move the roadmap item 'Direct Deposit Payroll' to 'released'."
- Example prompt:
4. Customer Feedback Tools
get_user_feedback: Reads user feedback, suggestions, and NPS ratings submitted directly through the in-app widget.- Example prompt:
"What have customers submitted in the feedback widget recently?"
- Example prompt:
5. Media & Screenshot Upload Tools
upload_image: Uploads local screenshot files (e.g. from Playwright, Puppeteer, or local disk) to NanoLog CDN storage. Returns a public, CDN-hosted URL.- Example prompt:
"Take a screenshot of the checkout screen using Playwright, upload it, and set it as the heroImage on our draft post."
- Example prompt:
Images in Changelogs: Hero vs Inline
NanoLog supports two distinct ways to display images in product announcements:
-
Cover / Hero Image (
heroImage):- Displays as a wide cover banner at the top of the post card in the feed and at the top of the article modal view.
- Pass the public image URL as
heroImageincreate_changelog_postoredit_changelog_post.
-
Inline Article Images (
content):- Embed screenshots directly within the markdown content flow anywhere in your release note using standard Markdown syntax:
Here is a comparison of the new user dashboard:  - Automatically rendered with responsive scaling and style isolation inside the widget's Shadow DOM.
- Embed screenshots directly within the markdown content flow anywhere in your release note using standard Markdown syntax:
Automated Playwright Workflow:
When an AI agent uses Playwright or browser tools:
- Take Screenshot: The agent captures a screenshot to local disk (e.g.,
./checkout-preview.png). - Upload to CDN: The agent calls
upload_image({ filePath: "./checkout-preview.png" }), which optimizes the image to WebP and returns a public CDN URL. - Draft Changelog: The agent calls
create_changelog_postsettingheroImage: fileUrl(or embedsin the markdown content).
Recommended Agent Rules (.cursorrules or CLAUDE.md)
The NanoLog MCP server defaults isPublished to false (draft) so human team members can verify notes before they go live. To guarantee that your AI assistants always adhere to this workflow, you can add this instruction to your project's .cursorrules, CLAUDE.md, or AI system prompt:
# NanoLog Changelog & Roadmap Guidelines
- Always create new changelog entries as drafts (`isPublished: false`).
- Summarize changes concisely with user-friendly benefit-driven bullets (avoid raw commit hashes).
- Present the draft post ID and title to the user for human review.
- Only call `edit_changelog_post({ isPublished: true })` when the user explicitly commands to publish live.
Example AI Prompts
Try asking your AI assistant:
"Check git log for changes since yesterday and create a draft changelog post with categorized bullet points."
"List our roadmap and move the Stripe integration item to released."
"What is the latest feedback from our users and what NPS scores did they submit?"