@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 +21 -0
- package/README.md +4 -3
- package/dist/api.d.ts +2 -2
- package/dist/api.js +2 -0
- package/dist/index.js +6 -7
- package/package.json +6 -3
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
|
+
- 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
|
-
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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/
|
|
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",
|