@damper/mcp 0.6.1 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +60 -3
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -41,7 +41,7 @@ async function api(method, path, body) {
41
41
  // Server
42
42
  const server = new McpServer({
43
43
  name: 'damper',
44
- version: '0.5.1',
44
+ version: '0.6.0',
45
45
  });
46
46
  // Output schemas
47
47
  const SubtaskProgressSchema = z.object({
@@ -736,7 +736,7 @@ server.registerTool('get_agent_instructions', {
736
736
  openWorldHint: false,
737
737
  },
738
738
  }, async ({ format = 'section' }) => {
739
- const lastModified = '2025-02-06';
739
+ const lastModified = '2026-02-08';
740
740
  const section = `## Task Management with Damper MCP
741
741
 
742
742
  > Last updated: ${lastModified}
@@ -753,6 +753,7 @@ This project uses Damper MCP for task tracking. **You MUST follow this workflow.
753
753
  4. If working on a task: \`start_task\` to lock it
754
754
 
755
755
  ### While Working
756
+ - **Do NOT commit or complete tasks without explicit user confirmation** - Always ask the user before running \`git commit\` or calling \`complete_task\`
756
757
  - \`add_commit\` after each commit with hash and message
757
758
  - \`add_note\` for decisions: "Decision: chose X because Y"
758
759
  - \`update_subtask\` to mark subtask progress
@@ -772,7 +773,8 @@ This project uses Damper MCP for task tracking. **You MUST follow this workflow.
772
773
  - \`update_project_settings\` - Configure completion checklist and other agent-relevant settings
773
774
 
774
775
  ### At Session End (MANDATORY)
775
- - ALWAYS call \`complete_task\` (if done) or \`abandon_task\` (if stopping early)
776
+ - **Ask the user for confirmation before committing or completing a task** - Never autonomously commit code or call \`complete_task\`
777
+ - Once user confirms, call \`complete_task\` (if done) or \`abandon_task\` (if stopping early)
776
778
  - NEVER leave a started task without completing or abandoning it
777
779
  - If the project has a **completion checklist** (shown in \`start_task\` response), you MUST pass all items as \`confirmations\` when calling \`complete_task\`
778
780
  - If you learned something about the codebase, consider updating project context
@@ -1972,6 +1974,61 @@ server.registerTool('update_project_settings', {
1972
1974
  structuredContent: result,
1973
1975
  };
1974
1976
  });
1977
+ // ==================== Public Pages ====================
1978
+ server.registerTool('open_public_page', {
1979
+ title: 'Open Public Page',
1980
+ description: 'Get the public URL for a project page (roadmap, feedback, changelog, or a specific roadmap item). ' +
1981
+ 'Use this to share links with users or open pages in a browser.\n\n' +
1982
+ '**IMPORTANT:** NEVER guess or construct public page URLs yourself. Always call this tool to get the correct URL.\n\n' +
1983
+ '**Pages:** roadmap, feedback, changelog, roadmap_item\n' +
1984
+ '**roadmap_item** requires `itemId` parameter.',
1985
+ inputSchema: z.object({
1986
+ page: z.enum(['roadmap', 'feedback', 'changelog', 'roadmap_item'])
1987
+ .describe('Which public page to get the URL for'),
1988
+ itemId: z.string().optional()
1989
+ .describe('Roadmap item ID (required when page is "roadmap_item")'),
1990
+ }),
1991
+ outputSchema: z.object({
1992
+ url: z.string(),
1993
+ enabled: z.boolean(),
1994
+ note: z.string().optional(),
1995
+ }),
1996
+ annotations: {
1997
+ readOnlyHint: true,
1998
+ destructiveHint: false,
1999
+ idempotentHint: true,
2000
+ openWorldHint: false,
2001
+ },
2002
+ }, async ({ page, itemId }) => {
2003
+ if (page === 'roadmap_item' && !itemId) {
2004
+ return {
2005
+ content: [{ type: 'text', text: 'Error: itemId is required when page is "roadmap_item"' }],
2006
+ isError: true,
2007
+ };
2008
+ }
2009
+ const data = await api('GET', '/api/agent/project/public-urls');
2010
+ let url;
2011
+ let enabled;
2012
+ if (page === 'roadmap_item') {
2013
+ url = data.roadmapItemUrlTemplate.replace('{itemId}', itemId);
2014
+ enabled = data.pages.roadmap.enabled;
2015
+ }
2016
+ else {
2017
+ const pageData = data.pages[page];
2018
+ url = pageData.url;
2019
+ enabled = pageData.enabled;
2020
+ }
2021
+ const note = !enabled
2022
+ ? `Note: This page is not currently enabled. The URL will work once the project owner enables it in settings.`
2023
+ : undefined;
2024
+ const parts = [url];
2025
+ if (note)
2026
+ parts.push(note);
2027
+ return {
2028
+ content: [{ type: 'text', text: parts.join('\n\n') }],
2029
+ structuredContent: { url, enabled, ...(note ? { note } : {}) },
2030
+ };
2031
+ });
1975
2032
  // Start
1976
2033
  async function main() {
1977
2034
  const transport = new StdioServerTransport();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@damper/mcp",
3
- "version": "0.6.1",
3
+ "version": "0.7.1",
4
4
  "description": "MCP server for Damper task management",
5
5
  "author": "Damper <hello@usedamper.com>",
6
6
  "repository": {