footballbin-mcp-server 1.0.0
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 +278 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +99 -0
- package/dist/index.js.map +1 -0
- package/package.json +55 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 FootballBin
|
|
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
ADDED
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
# FootballBin MCP Server
|
|
2
|
+
|
|
3
|
+
A Model Context Protocol (MCP) server that provides AI agents with access to football match predictions for the Premier League and Champions League.
|
|
4
|
+
|
|
5
|
+
## What is MCP?
|
|
6
|
+
|
|
7
|
+
The [Model Context Protocol](https://modelcontextprotocol.io) (MCP) is an open protocol that enables AI agents to securely access external tools and data sources. This server implements MCP to expose football match predictions to any MCP-compatible AI client.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **AI Match Predictions**: Get predictions for upcoming matches including:
|
|
12
|
+
- Half-time score
|
|
13
|
+
- Full-time score
|
|
14
|
+
- Next goal scorer
|
|
15
|
+
- Corner count predictions
|
|
16
|
+
|
|
17
|
+
- **Supported Leagues**:
|
|
18
|
+
- Premier League (EPL)
|
|
19
|
+
- UEFA Champions League (UCL)
|
|
20
|
+
|
|
21
|
+
- **Key Players**: Each match includes key player insights with reasoning
|
|
22
|
+
|
|
23
|
+
## Live Endpoint
|
|
24
|
+
|
|
25
|
+
The FootballBin MCP server is publicly available:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
https://ru7m5svay1.execute-api.eu-central-1.amazonaws.com/prod/mcp
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
No API key required.
|
|
32
|
+
|
|
33
|
+
## Usage
|
|
34
|
+
|
|
35
|
+
### Connect via Claude Desktop
|
|
36
|
+
|
|
37
|
+
Add this to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"mcpServers": {
|
|
42
|
+
"footballbin": {
|
|
43
|
+
"url": "https://ru7m5svay1.execute-api.eu-central-1.amazonaws.com/prod/mcp"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Connect via Claude.ai
|
|
50
|
+
|
|
51
|
+
1. Go to **Settings > Connectors**
|
|
52
|
+
2. Click **Add custom connector**
|
|
53
|
+
3. Enter the endpoint URL
|
|
54
|
+
4. Start asking about football predictions!
|
|
55
|
+
|
|
56
|
+
### Direct API Usage
|
|
57
|
+
|
|
58
|
+
#### List Available Tools
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
curl -X POST https://ru7m5svay1.execute-api.eu-central-1.amazonaws.com/prod/mcp \
|
|
62
|
+
-H "Content-Type: application/json" \
|
|
63
|
+
-d '{
|
|
64
|
+
"jsonrpc": "2.0",
|
|
65
|
+
"method": "tools/list",
|
|
66
|
+
"id": 1
|
|
67
|
+
}'
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
#### Get Premier League Predictions
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
curl -X POST https://ru7m5svay1.execute-api.eu-central-1.amazonaws.com/prod/mcp \
|
|
74
|
+
-H "Content-Type: application/json" \
|
|
75
|
+
-d '{
|
|
76
|
+
"jsonrpc": "2.0",
|
|
77
|
+
"method": "tools/call",
|
|
78
|
+
"params": {
|
|
79
|
+
"name": "get_match_predictions",
|
|
80
|
+
"arguments": {
|
|
81
|
+
"league": "premier_league"
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"id": 1
|
|
85
|
+
}'
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
#### Get Champions League Predictions
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
curl -X POST https://ru7m5svay1.execute-api.eu-central-1.amazonaws.com/prod/mcp \
|
|
92
|
+
-H "Content-Type: application/json" \
|
|
93
|
+
-d '{
|
|
94
|
+
"jsonrpc": "2.0",
|
|
95
|
+
"method": "tools/call",
|
|
96
|
+
"params": {
|
|
97
|
+
"name": "get_match_predictions",
|
|
98
|
+
"arguments": {
|
|
99
|
+
"league": "ucl"
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"id": 1
|
|
103
|
+
}'
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
#### Filter by Team
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
curl -X POST https://ru7m5svay1.execute-api.eu-central-1.amazonaws.com/prod/mcp \
|
|
110
|
+
-H "Content-Type: application/json" \
|
|
111
|
+
-d '{
|
|
112
|
+
"jsonrpc": "2.0",
|
|
113
|
+
"method": "tools/call",
|
|
114
|
+
"params": {
|
|
115
|
+
"name": "get_match_predictions",
|
|
116
|
+
"arguments": {
|
|
117
|
+
"league": "epl",
|
|
118
|
+
"home_team": "liverpool"
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"id": 1
|
|
122
|
+
}'
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Tool: get_match_predictions
|
|
126
|
+
|
|
127
|
+
### Input Parameters
|
|
128
|
+
|
|
129
|
+
| Parameter | Type | Required | Description |
|
|
130
|
+
|-----------|------|----------|-------------|
|
|
131
|
+
| `league` | string | Yes | League identifier. Accepts: `premier_league`, `epl`, `pl`, `champions_league`, `ucl`, `cl` |
|
|
132
|
+
| `matchweek` | number | No | Matchweek number (defaults to current matchweek) |
|
|
133
|
+
| `home_team` | string | No | Filter by home team (e.g., `chelsea`, `arsenal`, `man_utd`) |
|
|
134
|
+
| `away_team` | string | No | Filter by away team (e.g., `liverpool`, `wolves`) |
|
|
135
|
+
|
|
136
|
+
### Team Aliases
|
|
137
|
+
|
|
138
|
+
The API supports common team aliases:
|
|
139
|
+
|
|
140
|
+
| Alias | Maps To |
|
|
141
|
+
|-------|---------|
|
|
142
|
+
| `united`, `mufc` | `man_utd` |
|
|
143
|
+
| `city`, `mcfc` | `man_city` |
|
|
144
|
+
| `spurs` | `tottenham` |
|
|
145
|
+
| `villa` | `aston_villa` |
|
|
146
|
+
| `forest` | `nottm_forest` |
|
|
147
|
+
| `palace` | `crystal_palace` |
|
|
148
|
+
| `gunners` | `arsenal` |
|
|
149
|
+
| `reds` | `liverpool` |
|
|
150
|
+
| `blues` | `chelsea` |
|
|
151
|
+
| `barca` | `barcelona` |
|
|
152
|
+
| `real` | `real_madrid` |
|
|
153
|
+
| `bayern_munich` | `bayern` |
|
|
154
|
+
|
|
155
|
+
### Response Format
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"league": "premier_league",
|
|
160
|
+
"matchweek": 22,
|
|
161
|
+
"count": 10,
|
|
162
|
+
"app_link": "https://apps.apple.com/app/footballbin/id6757111871",
|
|
163
|
+
"note": "Download FootballBin for live match tracking, player valuations, and detailed predictions.",
|
|
164
|
+
"matches": [
|
|
165
|
+
{
|
|
166
|
+
"match_id": "epl_mw22_liv_bur",
|
|
167
|
+
"home_team": "Liverpool",
|
|
168
|
+
"away_team": "Burnley",
|
|
169
|
+
"kickoff_time": "2026-01-17T15:00:00Z",
|
|
170
|
+
"kickoff_formatted": "Sat 17 Jan 15:00",
|
|
171
|
+
"countdown": "7d 3h",
|
|
172
|
+
"status": "scheduled",
|
|
173
|
+
"predictions": [
|
|
174
|
+
{ "type": "Half Time Result", "value": "2:0", "confidence": 75 },
|
|
175
|
+
{ "type": "Full Time Result", "value": "4:0", "confidence": 75 },
|
|
176
|
+
{ "type": "Next Goal", "value": "Home,Wirtz", "confidence": 75 },
|
|
177
|
+
{ "type": "Corner Count", "value": "9:3", "confidence": 75 }
|
|
178
|
+
],
|
|
179
|
+
"key_players": [
|
|
180
|
+
{
|
|
181
|
+
"player_id": "florian_wirtz",
|
|
182
|
+
"player_name": "Florian Wirtz",
|
|
183
|
+
"reason": "12 goals, 14 assists. Liverpool's creative hub with 89 form rating."
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"player_id": "zian_flemming",
|
|
187
|
+
"player_name": "Zian Flemming",
|
|
188
|
+
"reason": "6 goals, 3 assists. Burnley's top scorer and set-piece specialist."
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## FootballBin App
|
|
197
|
+
|
|
198
|
+
Get the full experience with the FootballBin iOS app:
|
|
199
|
+
|
|
200
|
+
[](https://apps.apple.com/app/footballbin/id6757111871)
|
|
201
|
+
|
|
202
|
+
Features:
|
|
203
|
+
- Live match tracking
|
|
204
|
+
- AI player valuations
|
|
205
|
+
- Detailed match predictions
|
|
206
|
+
- Player news and discussions
|
|
207
|
+
- Squad browsers for all major leagues
|
|
208
|
+
|
|
209
|
+
## Technical Details
|
|
210
|
+
|
|
211
|
+
### Protocol
|
|
212
|
+
|
|
213
|
+
- **Protocol**: JSON-RPC 2.0
|
|
214
|
+
- **Transport**: HTTPS POST
|
|
215
|
+
- **Content-Type**: application/json
|
|
216
|
+
|
|
217
|
+
### Infrastructure
|
|
218
|
+
|
|
219
|
+
- **Runtime**: AWS Lambda (Node.js 20.x)
|
|
220
|
+
- **Database**: Amazon DynamoDB
|
|
221
|
+
- **API Gateway**: AWS API Gateway
|
|
222
|
+
- **Region**: eu-central-1 (Frankfurt)
|
|
223
|
+
|
|
224
|
+
### Error Codes
|
|
225
|
+
|
|
226
|
+
| Code | Meaning |
|
|
227
|
+
|------|---------|
|
|
228
|
+
| -32700 | Parse error (invalid JSON) |
|
|
229
|
+
| -32600 | Invalid request |
|
|
230
|
+
| -32601 | Method not found |
|
|
231
|
+
| -32602 | Invalid params |
|
|
232
|
+
| -32603 | Internal error |
|
|
233
|
+
|
|
234
|
+
## Self-Hosting
|
|
235
|
+
|
|
236
|
+
If you want to deploy your own instance:
|
|
237
|
+
|
|
238
|
+
### Prerequisites
|
|
239
|
+
|
|
240
|
+
- Node.js 20+
|
|
241
|
+
- AWS Account with DynamoDB access
|
|
242
|
+
- AWS SAM CLI
|
|
243
|
+
|
|
244
|
+
### Deploy
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
# Clone the repository
|
|
248
|
+
git clone https://github.com/billychl1/footballbin-mcp-server.git
|
|
249
|
+
cd footballbin-mcp-server
|
|
250
|
+
|
|
251
|
+
# Install dependencies
|
|
252
|
+
npm install
|
|
253
|
+
|
|
254
|
+
# Build
|
|
255
|
+
npm run build
|
|
256
|
+
|
|
257
|
+
# Deploy with SAM
|
|
258
|
+
sam deploy --guided
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Environment Variables
|
|
262
|
+
|
|
263
|
+
| Variable | Description | Default |
|
|
264
|
+
|----------|-------------|---------|
|
|
265
|
+
| `MATCHES_TABLE` | DynamoDB table for matches | `footballbin-matches-prod` |
|
|
266
|
+
| `MATCHWEEKS_TABLE` | DynamoDB table for matchweeks | `footballbin-matchweeks-prod` |
|
|
267
|
+
| `DEFAULT_REGION` | AWS region | `eu-central-1` |
|
|
268
|
+
| `APP_STORE_LINK` | App Store URL | `https://apps.apple.com/app/footballbin/id6757111871` |
|
|
269
|
+
|
|
270
|
+
## License
|
|
271
|
+
|
|
272
|
+
MIT License - see [LICENSE](LICENSE) file.
|
|
273
|
+
|
|
274
|
+
## Links
|
|
275
|
+
|
|
276
|
+
- [FootballBin App](https://apps.apple.com/app/footballbin/id6757111871)
|
|
277
|
+
- [Model Context Protocol](https://modelcontextprotocol.io)
|
|
278
|
+
- [MCP Specification](https://spec.modelcontextprotocol.io)
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* FootballBin MCP Server (npm package)
|
|
4
|
+
*
|
|
5
|
+
* A thin wrapper that provides MCP stdio transport
|
|
6
|
+
* and calls the FootballBin remote API for predictions.
|
|
7
|
+
*/
|
|
8
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
9
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
// Remote API endpoint
|
|
12
|
+
const API_ENDPOINT = "https://ru7m5svay1.execute-api.eu-central-1.amazonaws.com/prod/mcp";
|
|
13
|
+
/**
|
|
14
|
+
* Call the remote FootballBin API
|
|
15
|
+
*/
|
|
16
|
+
async function callRemoteAPI(args) {
|
|
17
|
+
const response = await fetch(API_ENDPOINT, {
|
|
18
|
+
method: "POST",
|
|
19
|
+
headers: {
|
|
20
|
+
"Content-Type": "application/json"
|
|
21
|
+
},
|
|
22
|
+
body: JSON.stringify({
|
|
23
|
+
jsonrpc: "2.0",
|
|
24
|
+
method: "tools/call",
|
|
25
|
+
params: {
|
|
26
|
+
name: "get_match_predictions",
|
|
27
|
+
arguments: args
|
|
28
|
+
},
|
|
29
|
+
id: Date.now()
|
|
30
|
+
})
|
|
31
|
+
});
|
|
32
|
+
if (!response.ok) {
|
|
33
|
+
throw new Error(`API request failed: ${response.status} ${response.statusText}`);
|
|
34
|
+
}
|
|
35
|
+
const data = await response.json();
|
|
36
|
+
if (data.error) {
|
|
37
|
+
throw new Error(data.error.message || "API error");
|
|
38
|
+
}
|
|
39
|
+
// Extract the structured content from the response
|
|
40
|
+
if (data.result?.structuredContent) {
|
|
41
|
+
return data.result.structuredContent;
|
|
42
|
+
}
|
|
43
|
+
// Fallback to parsing the text content
|
|
44
|
+
if (data.result?.content?.[0]?.text) {
|
|
45
|
+
return JSON.parse(data.result.content[0].text);
|
|
46
|
+
}
|
|
47
|
+
return data.result;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Main entry point
|
|
51
|
+
*/
|
|
52
|
+
async function main() {
|
|
53
|
+
// Create the MCP server
|
|
54
|
+
const server = new McpServer({
|
|
55
|
+
name: "footballbin-mcp-server",
|
|
56
|
+
version: "1.0.0"
|
|
57
|
+
});
|
|
58
|
+
// Register the get_match_predictions tool using shape syntax
|
|
59
|
+
server.tool("get_match_predictions", "Get AI-powered predictions for Premier League and Champions League matches including half-time score, full-time score, next goal scorer, and corner predictions.", {
|
|
60
|
+
league: z.string().describe('League to get predictions for. Accepts: "premier_league", "epl", "pl", "champions_league", "ucl", "cl"'),
|
|
61
|
+
matchweek: z.number().optional().describe("Matchweek number (optional, defaults to current matchweek)"),
|
|
62
|
+
home_team: z.string().optional().describe('Filter by home team name (optional, e.g., "chelsea", "arsenal", "man_utd")'),
|
|
63
|
+
away_team: z.string().optional().describe('Filter by away team name (optional, e.g., "liverpool", "wolves")')
|
|
64
|
+
}, async (args) => {
|
|
65
|
+
try {
|
|
66
|
+
const result = await callRemoteAPI(args);
|
|
67
|
+
return {
|
|
68
|
+
content: [
|
|
69
|
+
{
|
|
70
|
+
type: "text",
|
|
71
|
+
text: JSON.stringify(result, null, 2)
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
return {
|
|
78
|
+
content: [
|
|
79
|
+
{
|
|
80
|
+
type: "text",
|
|
81
|
+
text: `Error: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
isError: true
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
// Create stdio transport and connect
|
|
89
|
+
const transport = new StdioServerTransport();
|
|
90
|
+
await server.connect(transport);
|
|
91
|
+
// Log to stderr (stdout is used for MCP protocol)
|
|
92
|
+
console.error("FootballBin MCP Server running on stdio");
|
|
93
|
+
}
|
|
94
|
+
// Run the server
|
|
95
|
+
main().catch((error) => {
|
|
96
|
+
console.error("Fatal error:", error);
|
|
97
|
+
process.exit(1);
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "footballbin-mcp-server",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MCP server for FootballBin football match predictions - Premier League & Champions League",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"footballbin-mcp": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"mcpName": "io.github.billychl1/footballbin-mcp-server",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"clean": "rm -rf dist",
|
|
14
|
+
"start": "node dist/index.js",
|
|
15
|
+
"prepublishOnly": "npm run build"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"mcp",
|
|
19
|
+
"model-context-protocol",
|
|
20
|
+
"football",
|
|
21
|
+
"soccer",
|
|
22
|
+
"premier-league",
|
|
23
|
+
"champions-league",
|
|
24
|
+
"predictions",
|
|
25
|
+
"ai",
|
|
26
|
+
"claude",
|
|
27
|
+
"anthropic"
|
|
28
|
+
],
|
|
29
|
+
"author": "billychl1",
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "git+https://github.com/billychl1/footballbin-mcp-server.git"
|
|
34
|
+
},
|
|
35
|
+
"bugs": {
|
|
36
|
+
"url": "https://github.com/billychl1/footballbin-mcp-server/issues"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://github.com/billychl1/footballbin-mcp-server#readme",
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@modelcontextprotocol/sdk": "^1.25.0",
|
|
41
|
+
"zod": "^3.25.0"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/node": "^22.10.0",
|
|
45
|
+
"typescript": "^5.7.0"
|
|
46
|
+
},
|
|
47
|
+
"engines": {
|
|
48
|
+
"node": ">=20.0.0"
|
|
49
|
+
},
|
|
50
|
+
"files": [
|
|
51
|
+
"dist",
|
|
52
|
+
"README.md",
|
|
53
|
+
"LICENSE"
|
|
54
|
+
]
|
|
55
|
+
}
|