sendpro-flowmailer-mcp 0.1.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.
- package/.env.example +19 -0
- package/LICENSE +21 -0
- package/README.md +295 -0
- package/dist/config.d.ts +11 -0
- package/dist/config.js +45 -0
- package/dist/config.js.map +1 -0
- package/dist/flowmailer-client.d.ts +40 -0
- package/dist/flowmailer-client.js +191 -0
- package/dist/flowmailer-client.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/tools.d.ts +25 -0
- package/dist/tools.js +377 -0
- package/dist/tools.js.map +1 -0
- package/docs/configuration.md +38 -0
- package/docs/releasing.md +85 -0
- package/docs/repository-health.md +110 -0
- package/docs/tools.md +34 -0
- package/package.json +73 -0
- package/server.json +59 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Repository Health
|
|
2
|
+
|
|
3
|
+
This document captures the repository conventions used here and the reasoning behind them.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
Small MCP servers should stay boring and predictable:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
src/ TypeScript source
|
|
11
|
+
test/ Unit tests
|
|
12
|
+
docs/ Longer documentation
|
|
13
|
+
.github/workflows/ CI, release, security automation
|
|
14
|
+
.github/ISSUE_TEMPLATE/
|
|
15
|
+
README.md Usage and installation
|
|
16
|
+
CHANGELOG.md Human-readable change history
|
|
17
|
+
server.json MCP Registry metadata
|
|
18
|
+
package.json npm package metadata and scripts
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Avoid adding framework folders or generated assets unless the project needs them.
|
|
22
|
+
|
|
23
|
+
## Community Files
|
|
24
|
+
|
|
25
|
+
GitHub's community profile checks expect the basics:
|
|
26
|
+
|
|
27
|
+
- `README.md`
|
|
28
|
+
- `LICENSE`
|
|
29
|
+
- `CONTRIBUTING.md`
|
|
30
|
+
- `CODE_OF_CONDUCT.md`
|
|
31
|
+
- `SECURITY.md`
|
|
32
|
+
- issue templates
|
|
33
|
+
- pull request template
|
|
34
|
+
|
|
35
|
+
This repository currently reports a 100% community profile from GitHub.
|
|
36
|
+
|
|
37
|
+
## Badges
|
|
38
|
+
|
|
39
|
+
Badges are just image links, usually generated by Shields.io or the service itself. They are useful when they communicate real status.
|
|
40
|
+
|
|
41
|
+
Good badges for this project:
|
|
42
|
+
|
|
43
|
+
- latest GitHub release
|
|
44
|
+
- CI status
|
|
45
|
+
- OpenSSF Scorecard
|
|
46
|
+
- license
|
|
47
|
+
- supported Node.js version
|
|
48
|
+
- TypeScript
|
|
49
|
+
- MCP transport
|
|
50
|
+
- read-only default
|
|
51
|
+
- npm version and npm downloads
|
|
52
|
+
|
|
53
|
+
Avoid badges that imply unverifiable claims, such as "Top ranked", "Trending", or "Best" unless a real service computes that status and the badge links to the evidence.
|
|
54
|
+
|
|
55
|
+
Example badge Markdown:
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
[](https://github.com/Mestika/sendpro-flowmailer-mcp/releases)
|
|
59
|
+
[](https://www.npmjs.com/package/sendpro-flowmailer-mcp)
|
|
60
|
+
[](https://www.npmjs.com/package/sendpro-flowmailer-mcp)
|
|
61
|
+
[](https://github.com/Mestika/sendpro-flowmailer-mcp/actions/workflows/ci.yml)
|
|
62
|
+
[](https://scorecard.dev/viewer/?uri=github.com/Mestika/sendpro-flowmailer-mcp)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Branches, Tags, and Releases
|
|
66
|
+
|
|
67
|
+
Use `main` as the stable branch.
|
|
68
|
+
|
|
69
|
+
Use short-lived branches for changes:
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
fix/read-only-guard
|
|
73
|
+
docs/release-process
|
|
74
|
+
feat/source-user-tools
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Use version tags for released snapshots:
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
v0.1.0
|
|
81
|
+
v0.1.1
|
|
82
|
+
v0.2.0
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
A GitHub Release is built from a tag. The tag is the exact source snapshot; the release is the public changelog entry.
|
|
86
|
+
|
|
87
|
+
## Security Automation
|
|
88
|
+
|
|
89
|
+
This repository uses:
|
|
90
|
+
|
|
91
|
+
- Dependabot for dependency and GitHub Actions updates.
|
|
92
|
+
- CI on Node 20, 22, and 24.
|
|
93
|
+
- OpenSSF Scorecard for supply-chain posture.
|
|
94
|
+
|
|
95
|
+
Recommended GitHub settings:
|
|
96
|
+
|
|
97
|
+
- Enable secret scanning and push protection if available.
|
|
98
|
+
- Enable private vulnerability reporting.
|
|
99
|
+
- Protect `main` with required CI checks before merge.
|
|
100
|
+
- Delete branches after merge.
|
|
101
|
+
- Prefer squash merges for a tidy history.
|
|
102
|
+
|
|
103
|
+
## Sources
|
|
104
|
+
|
|
105
|
+
- [GitHub best practices for repositories](https://docs.github.com/en/repositories/creating-and-managing-repositories/best-practices-for-repositories)
|
|
106
|
+
- [GitHub healthy contribution files](https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions)
|
|
107
|
+
- [OpenSSF Scorecard Action](https://github.com/ossf/scorecard-action)
|
|
108
|
+
- [Shields.io](https://shields.io/)
|
|
109
|
+
- [Git branching basics](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell)
|
|
110
|
+
- [GitHub releases](https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases)
|
package/docs/tools.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Tools
|
|
2
|
+
|
|
3
|
+
The server exposes tools over MCP stdio.
|
|
4
|
+
|
|
5
|
+
## Read Tools
|
|
6
|
+
|
|
7
|
+
- `flowmailer_request`
|
|
8
|
+
- `flowmailer_endpoint_catalog`
|
|
9
|
+
- `flowmailer_list_messages`
|
|
10
|
+
- `flowmailer_get_message`
|
|
11
|
+
- `flowmailer_get_message_archive`
|
|
12
|
+
- `flowmailer_get_message_error_archive`
|
|
13
|
+
- `flowmailer_get_recipient`
|
|
14
|
+
- `flowmailer_list_resource`
|
|
15
|
+
|
|
16
|
+
## Write Tools
|
|
17
|
+
|
|
18
|
+
Write tools are registered only when `SENDPRO_READ_ONLY=false`.
|
|
19
|
+
|
|
20
|
+
- `flowmailer_submit_message`
|
|
21
|
+
- `flowmailer_simulate_message`
|
|
22
|
+
- `flowmailer_resend_message`
|
|
23
|
+
|
|
24
|
+
## Generic Requests
|
|
25
|
+
|
|
26
|
+
Use `flowmailer_request` for endpoints not yet covered by a convenience tool. The path must be relative and start with `/`.
|
|
27
|
+
|
|
28
|
+
In read-only mode the generic request schema only accepts:
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"method": "GET"
|
|
33
|
+
}
|
|
34
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sendpro-flowmailer-mcp",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Unofficial MCP server for Spotler SendPro, formerly FlowMailer.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"mcpName": "io.github.mestika/sendpro-flowmailer-mcp",
|
|
7
|
+
"bin": {
|
|
8
|
+
"sendpro-flowmailer-mcp": "dist/index.js",
|
|
9
|
+
"sendpro-mcp": "dist/index.js",
|
|
10
|
+
"spotler-sendpro-mcp": "dist/index.js",
|
|
11
|
+
"flowmailer-sendpro-mcp": "dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"docs",
|
|
16
|
+
"README.md",
|
|
17
|
+
".env.example",
|
|
18
|
+
"server.json"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc -p tsconfig.build.json",
|
|
22
|
+
"check": "npm run typecheck && npm test && npm run build",
|
|
23
|
+
"dev": "tsx src/index.ts",
|
|
24
|
+
"inspect": "npx -y @modelcontextprotocol/inspector node dist/index.js",
|
|
25
|
+
"prepack": "npm run build",
|
|
26
|
+
"prepublishOnly": "npm run check",
|
|
27
|
+
"prepare": "npm run build",
|
|
28
|
+
"version:major": "npm version major -m \"Release v%s\"",
|
|
29
|
+
"version:minor": "npm version minor -m \"Release v%s\"",
|
|
30
|
+
"version:patch": "npm version patch -m \"Release v%s\"",
|
|
31
|
+
"test": "vitest run",
|
|
32
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
33
|
+
},
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=20"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
39
|
+
"dotenv": "^17.4.2",
|
|
40
|
+
"zod": "^4.4.3"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@types/node": "^24.10.1",
|
|
44
|
+
"tsx": "^4.20.6",
|
|
45
|
+
"typescript": "^6.0.3",
|
|
46
|
+
"vitest": "^4.1.6"
|
|
47
|
+
},
|
|
48
|
+
"keywords": [
|
|
49
|
+
"mcp",
|
|
50
|
+
"model-context-protocol",
|
|
51
|
+
"sendpro",
|
|
52
|
+
"spotler",
|
|
53
|
+
"flowmailer",
|
|
54
|
+
"email",
|
|
55
|
+
"transactional-email",
|
|
56
|
+
"sms",
|
|
57
|
+
"api",
|
|
58
|
+
"stdio"
|
|
59
|
+
],
|
|
60
|
+
"author": "Mestika",
|
|
61
|
+
"license": "MIT",
|
|
62
|
+
"homepage": "https://github.com/Mestika/sendpro-flowmailer-mcp#readme",
|
|
63
|
+
"repository": {
|
|
64
|
+
"type": "git",
|
|
65
|
+
"url": "git+https://github.com/Mestika/sendpro-flowmailer-mcp.git"
|
|
66
|
+
},
|
|
67
|
+
"bugs": {
|
|
68
|
+
"url": "https://github.com/Mestika/sendpro-flowmailer-mcp/issues"
|
|
69
|
+
},
|
|
70
|
+
"publishConfig": {
|
|
71
|
+
"access": "public"
|
|
72
|
+
}
|
|
73
|
+
}
|
package/server.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
+
"name": "io.github.mestika/sendpro-flowmailer-mcp",
|
|
4
|
+
"title": "Spotler SendPro / FlowMailer",
|
|
5
|
+
"description": "Unofficial MCP server for the Spotler SendPro API, formerly FlowMailer.",
|
|
6
|
+
"version": "0.1.1",
|
|
7
|
+
"websiteUrl": "https://github.com/Mestika/sendpro-flowmailer-mcp#readme",
|
|
8
|
+
"repository": {
|
|
9
|
+
"url": "https://github.com/Mestika/sendpro-flowmailer-mcp",
|
|
10
|
+
"source": "github"
|
|
11
|
+
},
|
|
12
|
+
"packages": [
|
|
13
|
+
{
|
|
14
|
+
"registryType": "npm",
|
|
15
|
+
"registryBaseUrl": "https://registry.npmjs.org",
|
|
16
|
+
"identifier": "sendpro-flowmailer-mcp",
|
|
17
|
+
"version": "0.1.1",
|
|
18
|
+
"runtimeHint": "npx",
|
|
19
|
+
"transport": {
|
|
20
|
+
"type": "stdio"
|
|
21
|
+
},
|
|
22
|
+
"environmentVariables": [
|
|
23
|
+
{
|
|
24
|
+
"name": "SENDPRO_ACCOUNT_ID",
|
|
25
|
+
"description": "Spotler SendPro account id.",
|
|
26
|
+
"isRequired": true,
|
|
27
|
+
"isSecret": false
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "SENDPRO_CLIENT_ID",
|
|
31
|
+
"description": "OAuth client id for the SendPro API.",
|
|
32
|
+
"isRequired": true,
|
|
33
|
+
"isSecret": true
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "SENDPRO_CLIENT_SECRET",
|
|
37
|
+
"description": "OAuth client secret for the SendPro API.",
|
|
38
|
+
"isRequired": true,
|
|
39
|
+
"isSecret": true
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"name": "SENDPRO_READ_ONLY",
|
|
43
|
+
"description": "Set to true to allow only SendPro read requests. Defaults to true.",
|
|
44
|
+
"default": "true",
|
|
45
|
+
"isRequired": false,
|
|
46
|
+
"isSecret": false
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"_meta": {
|
|
52
|
+
"io.modelcontextprotocol.registry/publisher-provided": {
|
|
53
|
+
"publisher": "Mestika",
|
|
54
|
+
"unofficial": true,
|
|
55
|
+
"legacyNames": ["FlowMailer"],
|
|
56
|
+
"vendor": "Spotler SendPro"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|