chore: update landing page copy, improve code formatting, and add PyPI publish workflow
This commit is contained in:
@@ -34,6 +34,28 @@ jobs:
|
||||
- name: Run Ruff (Lint & Syntax Check)
|
||||
run: uv run ruff check src
|
||||
|
||||
publish-pypi:
|
||||
name: Publish to PyPI
|
||||
needs: lint
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@v2
|
||||
with:
|
||||
version: "latest"
|
||||
|
||||
- name: Build package
|
||||
run: uv build
|
||||
|
||||
- name: Publish to PyPI
|
||||
run: uv publish --token ${{ secrets.PYPI_TOKEN }}
|
||||
env:
|
||||
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
|
||||
|
||||
build-and-push:
|
||||
name: Build & Push Docker Image
|
||||
needs: lint
|
||||
|
||||
+4
-1
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
|
||||
|
||||
|
||||
[project]
|
||||
name = "strava-mcp-server"
|
||||
name = "strava-mcp-server-hnrx"
|
||||
dynamic = ["version"]
|
||||
description = "A Model Context Protocol (MCP) server that exposes the Strava API v3 as tools, resources, and prompts for AI agents."
|
||||
readme = "README.md"
|
||||
@@ -54,6 +54,9 @@ dev = [
|
||||
[tool.hatch.version]
|
||||
source = "vcs"
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["src/strava_mcp_server"]
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
asyncio_mode = "auto"
|
||||
testpaths = ["tests"]
|
||||
|
||||
+20
-10
@@ -1,11 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Strava MCP Server | Modern Training Data Access</title>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="bg-gradient"></div>
|
||||
|
||||
@@ -27,9 +29,11 @@
|
||||
<header class="hero">
|
||||
<img src="assets/hero.png" alt="Futuristic Background" class="hero-img">
|
||||
<h1 data-i18n="hero-title">Empower your AI with Strava Data.</h1>
|
||||
<p data-i18n="hero-subtitle">A production-ready Model Context Protocol (MCP) server that exposes the Strava API for AI agents and LLMs.</p>
|
||||
<p data-i18n="hero-subtitle">A production-ready Model Context Protocol (MCP) server that exposes the Strava
|
||||
API for AI agents and LLMs.</p>
|
||||
<div class="btn-group">
|
||||
<a href="https://git.hnrx.net/hnrx/strava-mcp-server" class="btn btn-primary" data-i18n="btn-start">Get Started</a>
|
||||
<a href="https://git.hnrx.net/hnrx/strava-mcp-server" class="btn btn-primary" data-i18n="btn-start">Get
|
||||
Started</a>
|
||||
<a href="#architecture" class="btn btn-secondary" data-i18n="btn-more">Learn More</a>
|
||||
</div>
|
||||
</header>
|
||||
@@ -37,13 +41,15 @@
|
||||
<section id="features">
|
||||
<div class="section-title">
|
||||
<h2 data-i18n="features-title">Features</h2>
|
||||
<p data-i18n="features-subtitle">Comprehensive access to your training data through standardized MCP tools.</p>
|
||||
<p data-i18n="features-subtitle">Comprehensive access to your training data through standardized MCP
|
||||
tools.</p>
|
||||
</div>
|
||||
<div class="grid">
|
||||
<div class="card">
|
||||
<span class="card-icon">👤</span>
|
||||
<h3 data-i18n="feat-1-t">Athlete Profiles</h3>
|
||||
<p data-i18n="feat-1-d">Detailed profiles, heart rate zones, and power stats for personalized analysis.</p>
|
||||
<p data-i18n="feat-1-d">Detailed profiles, heart rate zones, and power stats for personalized
|
||||
analysis.</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<span class="card-icon">🚴</span>
|
||||
@@ -69,8 +75,11 @@
|
||||
<p data-i18n="arch-p">Optimized for both humans and machines. Every tool delivers two outputs:</p>
|
||||
<br>
|
||||
<ul style="list-style: none; color: var(--text-dim);">
|
||||
<li style="margin-bottom: 1rem;"><strong style="color: var(--primary);" data-i18n="arch-user-t">User Content:</strong> <span data-i18n="arch-user-d">Formatted markdown for an aesthetic display in the chat.</span></li>
|
||||
<li><strong style="color: #fff;" data-i18n="arch-llm-t">Assistant Resource:</strong> <span data-i18n="arch-llm-d">Structured JSON for precise data processing by the LLM.</span></li>
|
||||
<li style="margin-bottom: 1rem;"><strong style="color: var(--primary);" data-i18n="arch-user-t">User
|
||||
Content:</strong> <span data-i18n="arch-user-d">Formatted markdown for an aesthetic display
|
||||
in the chat.</span></li>
|
||||
<li><strong style="color: #fff;" data-i18n="arch-llm-t">Assistant Resource:</strong> <span
|
||||
data-i18n="arch-llm-d">Structured JSON for precise data processing by the LLM.</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="code-window">
|
||||
@@ -141,7 +150,7 @@
|
||||
"nav-arch": "Architektur",
|
||||
"nav-install": "Installation",
|
||||
"nav-repo": "Quellcode",
|
||||
"hero-title": "Stärke deine KI mit Strava Daten.",
|
||||
"hero-title": "Analysiere deine Strava-Daten mit KI-Power.",
|
||||
"hero-subtitle": "Ein produktionsreifer Model Context Protocol (MCP) Server, der die Strava API für AI Agents und LLMs nutzbar macht.",
|
||||
"btn-start": "Loslegen",
|
||||
"btn-more": "Mehr erfahren",
|
||||
@@ -168,7 +177,7 @@
|
||||
|
||||
function setLanguage(lang) {
|
||||
localStorage.setItem('preferredLang', lang);
|
||||
|
||||
|
||||
// Update all text elements
|
||||
document.querySelectorAll('[data-i18n]').forEach(el => {
|
||||
const key = el.getAttribute('data-i18n');
|
||||
@@ -184,7 +193,7 @@
|
||||
btn.classList.add('active');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
document.documentElement.lang = lang;
|
||||
}
|
||||
|
||||
@@ -193,4 +202,5 @@
|
||||
setLanguage(savedLang);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user