strava-activity-mcp-server 0.1.8__tar.gz → 0.1.9__tar.gz
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.
- {strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/.python-version +1 -1
- {strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/PKG-INFO +24 -26
- {strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/README.md +23 -25
- {strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/pyproject.toml +18 -18
- strava_activity_mcp_server-0.1.9/ref/auth.jpg +0 -0
- strava_activity_mcp_server-0.1.9/ref/code.jpg +0 -0
- strava_activity_mcp_server-0.1.9/ref/image.jpg +0 -0
- {strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/src/strava_activity_mcp_server/__init__.py +3 -3
- {strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/uv.lock +2 -2
- {strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/.github/workflows/python-publish.yml +0 -0
- {strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/.gitignore +0 -0
- {strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/.vscode/settings.json +0 -0
- {strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/LICENSE +0 -0
- {strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/ref/mcp_pypi_example.md +0 -0
- {strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/requirements.txt +0 -0
- {strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/src/strava_activity_mcp_server/__main__.py +0 -0
- {strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/src/strava_activity_mcp_server/strava_activity_mcp_server.py +0 -0
@@ -1 +1 @@
|
|
1
|
-
3.13
|
1
|
+
3.13
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: strava-activity-mcp-server
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.9
|
4
4
|
Summary: STRAVA ACTIVITY MCP SERVER
|
5
5
|
License-File: LICENSE
|
6
6
|
Requires-Python: >=3.10
|
@@ -14,6 +14,10 @@ Description-Content-Type: text/markdown
|
|
14
14
|
[](https://opensource.org/licenses/gpl-3-0)
|
15
15
|
[](https://www.python.org/downloads/release/python-3130/)
|
16
16
|
|
17
|
+

|
18
|
+
|
19
|
+
|
20
|
+
|
17
21
|
A small Model Context Protocol (MCP) server that exposes your Strava athlete data to language-model tooling.
|
18
22
|
|
19
23
|
This package provides a lightweight MCP server which communicates with the Strava API and exposes a few helper tools (authorization URL, token exchange/refresh, and fetching athlete activities) that language models or other local tools can call.
|
@@ -39,7 +43,7 @@ After installing, you can run the MCP server using the provided console script o
|
|
39
43
|
|
40
44
|
Run via the console script (entry point defined in `pyproject.toml`):
|
41
45
|
|
42
|
-
```
|
46
|
+
```cmd
|
43
47
|
strava-activity-mcp-server
|
44
48
|
```
|
45
49
|
|
@@ -63,27 +67,21 @@ This server requires Strava OAuth credentials to access athlete data. You will n
|
|
63
67
|
Steps:
|
64
68
|
|
65
69
|
1. Create a Strava API application at https://www.strava.com/settings/api and note your Client ID and Client Secret. Use `localhost` as the Authorization Callback Domain.
|
66
|
-
2. Open the authorization URL produced by the `strava://auth/url` tool (see
|
67
|
-
3. Exchange the code for tokens using `strava://auth/token` or use the included helper to save refresh/access tokens to your environment.
|
70
|
+
2. Open the authorization URL produced by the `strava://auth/url` tool (see IMAGE below) in a browser to obtain an authorization code.
|
68
71
|
|
69
|
-
|
72
|
+

|
70
73
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
$env:STRAVA_REFRESH_TOKEN = "<your refresh token>";
|
75
|
-
strava-activity-mcp-server
|
76
|
-
```
|
74
|
+
3. Copy the code from the redirected URL (Image below) or use the included helper to save refresh/access tokens to your environment.
|
75
|
+
|
76
|
+

|
77
77
|
|
78
|
-
Note: Keep secrets out of version control. Use a `.env` file and a tool such as `direnv` or your system secrets manager for convenience.
|
79
78
|
|
80
79
|
## Exposed Tools (what the server provides)
|
81
80
|
|
82
81
|
The MCP server exposes the following tools (tool IDs shown):
|
83
82
|
|
84
83
|
- `strava://auth/url` — Build the Strava OAuth authorization URL. Input: `client_id` (int). Output: URL string to open in a browser.
|
85
|
-
- `strava://
|
86
|
-
- `strava://athlete/stats` — Fetch recent athlete activities. Input: `token` (str). Output: JSON with activity list.
|
84
|
+
- `strava://athlete/stats` — Fetch recent athlete activities. Input: `client_id` (int), `client_secret` (str), `access_token` (str) and obtained `code` from URL generated by `strava://auth/url`. Output: JSON with activity list.
|
87
85
|
|
88
86
|
These tools map to the functions implemented in `src/strava_activity_mcp_server/strava_activity_mcp_server.py` and are intended to be called by MCP clients.
|
89
87
|
|
@@ -92,28 +90,27 @@ These tools map to the functions implemented in `src/strava_activity_mcp_server/
|
|
92
90
|
1) Get an authorization URL and retrieve tokens
|
93
91
|
|
94
92
|
- Call `strava://auth/url` with your `client_id` and open the returned URL in your browser.
|
95
|
-
- After authorizing, Strava will provide a `code`.
|
93
|
+
- After authorizing, Strava will provide a `code`.
|
96
94
|
|
97
95
|
2) Fetch recent activities
|
98
96
|
|
99
97
|
- Use `strava://athlete/stats` with a valid access token. If the access token is expired, use the refresh flow to get a new access token.
|
100
98
|
|
101
|
-
## Developer notes
|
102
|
-
|
103
|
-
- The package entry point calls `mcp.run()` which runs the MCP server. If you want to change transport or logging settings, modify `src/strava_activity_mcp_server/__init__.py` or `strava_activity_mcp_server.py`.
|
104
|
-
- The code uses the `requests` library for HTTP calls.
|
105
|
-
|
106
|
-
|
107
99
|
### Client config example and quick inspector test
|
108
100
|
|
109
|
-
Any MCP-capable client can launch the server using a config similar to the following (example file often called `config.json
|
101
|
+
Any MCP-capable client can launch the server using a config similar to the following (example file often called `config.json`. Be sure to enter your values here):
|
110
102
|
|
111
103
|
```json
|
112
104
|
{
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
105
|
+
"command": "uvx",
|
106
|
+
"args": [
|
107
|
+
"strava-activity-mcp-server"
|
108
|
+
],
|
109
|
+
"env": {
|
110
|
+
"STRAVA_CLIENT_ID": "12345",
|
111
|
+
"STRAVA_CLIENT_SECRET": "e1234a12d12345f12c1f12345a123bba1d12c1",
|
112
|
+
"STRAVA_REFRESH_TOKEN": "1a123eda1cfd12345678987db2db1bda234c38"
|
113
|
+
}
|
117
114
|
}
|
118
115
|
```
|
119
116
|
|
@@ -141,3 +138,4 @@ This project is licensed under the GNU GENERAL PUBLIC LICENSE — see the `LICEN
|
|
141
138
|
|
142
139
|
|
143
140
|
|
141
|
+
|
@@ -3,6 +3,10 @@
|
|
3
3
|
[](https://opensource.org/licenses/gpl-3-0)
|
4
4
|
[](https://www.python.org/downloads/release/python-3130/)
|
5
5
|
|
6
|
+

|
7
|
+
|
8
|
+
|
9
|
+
|
6
10
|
A small Model Context Protocol (MCP) server that exposes your Strava athlete data to language-model tooling.
|
7
11
|
|
8
12
|
This package provides a lightweight MCP server which communicates with the Strava API and exposes a few helper tools (authorization URL, token exchange/refresh, and fetching athlete activities) that language models or other local tools can call.
|
@@ -28,7 +32,7 @@ After installing, you can run the MCP server using the provided console script o
|
|
28
32
|
|
29
33
|
Run via the console script (entry point defined in `pyproject.toml`):
|
30
34
|
|
31
|
-
```
|
35
|
+
```cmd
|
32
36
|
strava-activity-mcp-server
|
33
37
|
```
|
34
38
|
|
@@ -52,27 +56,21 @@ This server requires Strava OAuth credentials to access athlete data. You will n
|
|
52
56
|
Steps:
|
53
57
|
|
54
58
|
1. Create a Strava API application at https://www.strava.com/settings/api and note your Client ID and Client Secret. Use `localhost` as the Authorization Callback Domain.
|
55
|
-
2. Open the authorization URL produced by the `strava://auth/url` tool (see
|
56
|
-
3. Exchange the code for tokens using `strava://auth/token` or use the included helper to save refresh/access tokens to your environment.
|
59
|
+
2. Open the authorization URL produced by the `strava://auth/url` tool (see IMAGE below) in a browser to obtain an authorization code.
|
57
60
|
|
58
|
-
|
61
|
+

|
59
62
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
$env:STRAVA_REFRESH_TOKEN = "<your refresh token>";
|
64
|
-
strava-activity-mcp-server
|
65
|
-
```
|
63
|
+
3. Copy the code from the redirected URL (Image below) or use the included helper to save refresh/access tokens to your environment.
|
64
|
+
|
65
|
+

|
66
66
|
|
67
|
-
Note: Keep secrets out of version control. Use a `.env` file and a tool such as `direnv` or your system secrets manager for convenience.
|
68
67
|
|
69
68
|
## Exposed Tools (what the server provides)
|
70
69
|
|
71
70
|
The MCP server exposes the following tools (tool IDs shown):
|
72
71
|
|
73
72
|
- `strava://auth/url` — Build the Strava OAuth authorization URL. Input: `client_id` (int). Output: URL string to open in a browser.
|
74
|
-
- `strava://
|
75
|
-
- `strava://athlete/stats` — Fetch recent athlete activities. Input: `token` (str). Output: JSON with activity list.
|
73
|
+
- `strava://athlete/stats` — Fetch recent athlete activities. Input: `client_id` (int), `client_secret` (str), `access_token` (str) and obtained `code` from URL generated by `strava://auth/url`. Output: JSON with activity list.
|
76
74
|
|
77
75
|
These tools map to the functions implemented in `src/strava_activity_mcp_server/strava_activity_mcp_server.py` and are intended to be called by MCP clients.
|
78
76
|
|
@@ -81,28 +79,27 @@ These tools map to the functions implemented in `src/strava_activity_mcp_server/
|
|
81
79
|
1) Get an authorization URL and retrieve tokens
|
82
80
|
|
83
81
|
- Call `strava://auth/url` with your `client_id` and open the returned URL in your browser.
|
84
|
-
- After authorizing, Strava will provide a `code`.
|
82
|
+
- After authorizing, Strava will provide a `code`.
|
85
83
|
|
86
84
|
2) Fetch recent activities
|
87
85
|
|
88
86
|
- Use `strava://athlete/stats` with a valid access token. If the access token is expired, use the refresh flow to get a new access token.
|
89
87
|
|
90
|
-
## Developer notes
|
91
|
-
|
92
|
-
- The package entry point calls `mcp.run()` which runs the MCP server. If you want to change transport or logging settings, modify `src/strava_activity_mcp_server/__init__.py` or `strava_activity_mcp_server.py`.
|
93
|
-
- The code uses the `requests` library for HTTP calls.
|
94
|
-
|
95
|
-
|
96
88
|
### Client config example and quick inspector test
|
97
89
|
|
98
|
-
Any MCP-capable client can launch the server using a config similar to the following (example file often called `config.json
|
90
|
+
Any MCP-capable client can launch the server using a config similar to the following (example file often called `config.json`. Be sure to enter your values here):
|
99
91
|
|
100
92
|
```json
|
101
93
|
{
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
94
|
+
"command": "uvx",
|
95
|
+
"args": [
|
96
|
+
"strava-activity-mcp-server"
|
97
|
+
],
|
98
|
+
"env": {
|
99
|
+
"STRAVA_CLIENT_ID": "12345",
|
100
|
+
"STRAVA_CLIENT_SECRET": "e1234a12d12345f12c1f12345a123bba1d12c1",
|
101
|
+
"STRAVA_REFRESH_TOKEN": "1a123eda1cfd12345678987db2db1bda234c38"
|
102
|
+
}
|
106
103
|
}
|
107
104
|
```
|
108
105
|
|
@@ -130,3 +127,4 @@ This project is licensed under the GNU GENERAL PUBLIC LICENSE — see the `LICEN
|
|
130
127
|
|
131
128
|
|
132
129
|
|
130
|
+
|
@@ -1,18 +1,18 @@
|
|
1
|
-
[project]
|
2
|
-
name = "strava-activity-mcp-server"
|
3
|
-
version = "0.1.
|
4
|
-
description = "STRAVA ACTIVITY MCP SERVER"
|
5
|
-
readme = "README.md"
|
6
|
-
requires-python = ">=3.10"
|
7
|
-
dependencies = [
|
8
|
-
"build>=1.3.0",
|
9
|
-
"mcp[cli]>=1.16.0",
|
10
|
-
"twine>=6.2.0",
|
11
|
-
]
|
12
|
-
|
13
|
-
[project.scripts]
|
14
|
-
strava-activity-mcp-server = "strava_activity_mcp_server:main"
|
15
|
-
|
16
|
-
[build-system]
|
17
|
-
requires = ["hatchling"]
|
18
|
-
build-backend = "hatchling.build"
|
1
|
+
[project]
|
2
|
+
name = "strava-activity-mcp-server"
|
3
|
+
version = "0.1.9"
|
4
|
+
description = "STRAVA ACTIVITY MCP SERVER"
|
5
|
+
readme = "README.md"
|
6
|
+
requires-python = ">=3.10"
|
7
|
+
dependencies = [
|
8
|
+
"build>=1.3.0",
|
9
|
+
"mcp[cli]>=1.16.0",
|
10
|
+
"twine>=6.2.0",
|
11
|
+
]
|
12
|
+
|
13
|
+
[project.scripts]
|
14
|
+
strava-activity-mcp-server = "strava_activity_mcp_server:main"
|
15
|
+
|
16
|
+
[build-system]
|
17
|
+
requires = ["hatchling"]
|
18
|
+
build-backend = "hatchling.build"
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .strava_activity_mcp_server import mcp
|
2
|
-
def main() -> None:
|
3
|
-
"""Run the MCP server."""
|
1
|
+
from .strava_activity_mcp_server import mcp
|
2
|
+
def main() -> None:
|
3
|
+
"""Run the MCP server."""
|
4
4
|
mcp.run()
|
@@ -1,5 +1,5 @@
|
|
1
1
|
version = 1
|
2
|
-
revision =
|
2
|
+
revision = 2
|
3
3
|
requires-python = ">=3.10"
|
4
4
|
|
5
5
|
[[package]]
|
@@ -1031,7 +1031,7 @@ wheels = [
|
|
1031
1031
|
|
1032
1032
|
[[package]]
|
1033
1033
|
name = "strava-activity-mcp-server"
|
1034
|
-
version = "0.1.
|
1034
|
+
version = "0.1.9"
|
1035
1035
|
source = { editable = "." }
|
1036
1036
|
dependencies = [
|
1037
1037
|
{ name = "build" },
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{strava_activity_mcp_server-0.1.8 → strava_activity_mcp_server-0.1.9}/ref/mcp_pypi_example.md
RENAMED
File without changes
|
File without changes
|
File without changes
|