@flowrelay/mcp-server 1.0.12 → 1.0.14

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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Adriano Sorbello (atrisorb)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -9,7 +9,7 @@ It connects to Flow Relay API v1 using an API key and supports:
9
9
  ## Package
10
10
 
11
11
  - Name: @flowrelay/mcp-server
12
- - Version: 1.0.12
12
+ - Version: 1.0.14
13
13
 
14
14
  ## What Is Included
15
15
 
@@ -32,7 +32,7 @@ The server currently exposes these tools:
32
32
  - list_events
33
33
  - list_untracked_resources (lists event-producing resources not scoped to any project – useful for discovering untracked activity)
34
34
  - discord_list_channels
35
- - discord_send_message (plain text, or a handoff/insight by id or `last_*` rendered to Markdown and attached as a `.md` file)
35
+ - discord_send_message (plain text, or a handoff/insight by id or `last_*` – `last_handoff`, `last_correlation`, `last_onboarding`, `last_architecture`, `last_release_notes` – rendered to Markdown and attached as a `.md` file)
36
36
 
37
37
  ## Environment Variables
38
38
 
@@ -105,4 +105,5 @@ npm pack
105
105
 
106
106
  ## Related Docs
107
107
 
108
- - Repository overview: ../README.md
108
+ - Documentation & Platform: https://www.flowrelay.it
109
+
package/dist/api.d.ts CHANGED
@@ -65,7 +65,7 @@ export interface InsightResult {
65
65
  id: string;
66
66
  project_id: string;
67
67
  requested_by: string;
68
- kind: 'onboarding_brief' | 'cross_source_correlation' | 'architecture_insight';
68
+ kind: 'onboarding_brief' | 'cross_source_correlation' | 'architecture_insight' | 'release_notes';
69
69
  title: string;
70
70
  summary: string;
71
71
  data: Record<string, unknown>;
@@ -214,7 +214,7 @@ export declare class FlowRelayAPI {
214
214
  content?: string;
215
215
  handoff_id?: string;
216
216
  insight_id?: string;
217
- artifact?: 'last_handoff' | 'last_correlation' | 'last_onboarding' | 'last_architecture';
217
+ artifact?: 'last_handoff' | 'last_correlation' | 'last_onboarding' | 'last_architecture' | 'last_release_notes';
218
218
  project_id?: string;
219
219
  }): Promise<{
220
220
  ok: boolean;
package/dist/api.js CHANGED
@@ -11,8 +11,10 @@ export class FlowRelayAPI {
11
11
  }
12
12
  async requestRaw(path, options) {
13
13
  const url = `${this.baseUrl}/api/v1${path}`;
14
+ const signal = options?.signal ?? AbortSignal.timeout(30_000);
14
15
  const res = await fetch(url, {
15
16
  ...options,
17
+ signal,
16
18
  headers: {
17
19
  'Authorization': `Bearer ${this.apiKey}`,
18
20
  'Content-Type': 'application/json',
package/dist/index.js CHANGED
@@ -5,9 +5,7 @@ import { z } from 'zod';
5
5
  import { FlowRelayAPI } from './api.js';
6
6
  import { createRequire } from 'node:module';
7
7
  const { version: PKG_VERSION } = createRequire(import.meta.url)('../package.json');
8
- // Canonical source vocabulary. Mirrors ALL_SOURCES in the web app's @/types
9
- // (this is a separate published package, so it can't import it). The parity
10
- // test tests/client-source-parity.test.ts fails if the two ever diverge.
8
+ // Canonical source vocabulary.
11
9
  const SOURCES = [
12
10
  'github',
13
11
  'slack',
@@ -350,13 +348,13 @@ server.tool('discord_list_channels', 'List the text channels in the Discord serv
350
348
  }
351
349
  });
352
350
  // ── Tool: discord send message ──────────────────────────────────────
353
- server.tool('discord_send_message', 'Send to a Discord channel in your connected server. Provide exactly one of: content (inline text); handoff_id or insight_id (sends that artifact, rendered to Markdown, as a .md file attachment); or artifact (last_handoff / last_correlation / last_onboarding / last_architecture, with project_id) to send the latest active artifact of that kind.', {
351
+ server.tool('discord_send_message', 'Send to a Discord channel in your connected server. Provide exactly one of: content (inline text); handoff_id or insight_id (sends that artifact, rendered to Markdown, as a .md file attachment); or artifact (last_handoff / last_correlation / last_onboarding / last_architecture / last_release_notes, with project_id) to send the latest active artifact of that kind.', {
354
352
  channel_id: z.string().describe('Discord channel id from discord_list_channels.'),
355
353
  content: z.string().optional().describe('Inline message text. Mutually exclusive with handoff_id / insight_id / artifact'),
356
354
  handoff_id: z.string().optional().describe('Id of a handoff (from list_handoffs) to render and attach as a .md file'),
357
355
  insight_id: z.string().optional().describe('Id of an insight (from list_insights) to render and attach as a .md file'),
358
356
  artifact: z
359
- .enum(['last_handoff', 'last_correlation', 'last_onboarding', 'last_architecture'])
357
+ .enum(['last_handoff', 'last_correlation', 'last_onboarding', 'last_architecture', 'last_release_notes'])
360
358
  .optional()
361
359
  .describe('Send the latest active artifact of this kind. Requires project_id'),
362
360
  project_id: z.string().optional().describe('Project UUID. Required only when artifact is set'),
@@ -465,9 +463,10 @@ server.tool('generate_release_notes', 'Generate release notes or a PR descriptio
465
463
  source: SourceEnum.default('github').describe('Code source id (github, gitlab, bitbucket, azure_devops).'),
466
464
  repo: z.string().optional().describe('Repository name to scope changes to.'),
467
465
  style: z.enum(['release_notes', 'pr_description']).default('release_notes').describe('Output style.'),
468
- }, async ({ project_id, source, repo, style }) => {
466
+ filters: FiltersSchema,
467
+ }, async ({ project_id, source, repo, style, filters }) => {
469
468
  try {
470
- const res = await api.generateInsight(project_id, 'release_notes', { source, repo, style });
469
+ const res = await api.generateInsight(project_id, 'release_notes', { source, repo, style, filters });
471
470
  const { job, result } = await api.waitForJob(res.jobId);
472
471
  if (job.status === 'failed' || !result) {
473
472
  const reason = job.error ?? 'unknown error';
package/package.json CHANGED
@@ -1,14 +1,17 @@
1
1
  {
2
2
  "name": "@flowrelay/mcp-server",
3
- "version": "1.0.12",
3
+ "version": "1.0.14",
4
4
  "description": "Flow Relay MCP Server for Claude Desktop and Claude Code – handoffs, integrations and context events via natural conversation.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
- "author": "atrisorb",
7
+ "author": "atrisorb <https://github.com/atrisorb>",
8
8
  "homepage": "https://www.flowrelay.it",
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "git+https://github.com/atrisorb/flow-relay.git"
11
+ "url": "git+https://github.com/atrisorb/flowrelay-mcp-server.git"
12
+ },
13
+ "publishConfig": {
14
+ "access": "public"
12
15
  },
13
16
  "keywords": [
14
17
  "mcp",