Skip to content

Commit e5cba01

Browse files
author
longevitycoach
committed
v0.9.9: Add missing Claude.ai endpoints (/register and /mcp)
- Added /register endpoint (Claude.ai uses this instead of /oauth/register) - Added /mcp endpoint (Claude.ai uses this instead of /messages) - Fixed Railway log 404 errors: - POST /register HTTP/1.1 404 Not Found - POST /mcp HTTP/1.1 404 Not Found Based on Railway logs analysis, Claude.ai expects these specific endpoint paths.
1 parent 8b30977 commit e5cba01

File tree

3 files changed

+18
-16
lines changed

3 files changed

+18
-16
lines changed

src/mcp/claude_compatible_server.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939

4040
# Server configuration
4141
SERVER_NAME = "Dr. Strunz Knowledge MCP Server"
42-
SERVER_VERSION = "0.9.8"
42+
SERVER_VERSION = "0.9.9"
4343
PROTOCOL_VERSION = "2025-03-26"
4444

4545
# Track server start time for uptime calculation
@@ -295,7 +295,7 @@ async def health_check():
295295
return JSONResponse({
296296
"status": "healthy",
297297
"server": "Dr. Strunz Knowledge MCP Server",
298-
"version": "0.9.8",
298+
"version": "0.9.9",
299299
"timestamp": datetime.now().isoformat()
300300
}, status_code=200)
301301

@@ -309,7 +309,7 @@ async def health_check():
309309
response_data = {
310310
"status": health_status["overall"],
311311
"server": "Dr. Strunz Knowledge MCP Server",
312-
"version": "0.9.8",
312+
"version": "0.9.9",
313313
"protocol_version": PROTOCOL_VERSION,
314314
"transport": "sse",
315315
"timestamp": datetime.now().isoformat(),
@@ -353,7 +353,7 @@ async def health_check():
353353
return JSONResponse({
354354
"status": "healthy",
355355
"server": "Dr. Strunz Knowledge MCP Server",
356-
"version": "0.9.8",
356+
"version": "0.9.9",
357357
"timestamp": datetime.now().isoformat(),
358358
"error": str(e),
359359
"railway": {
@@ -376,7 +376,7 @@ async def detailed_health_check():
376376
diagnostics = {
377377
"server_info": {
378378
"name": "Dr. Strunz Knowledge MCP Server",
379-
"version": "0.9.8",
379+
"version": "0.9.9",
380380
"protocol_version": PROTOCOL_VERSION,
381381
"transport": "sse",
382382
"start_time": datetime.fromtimestamp(start_time).isoformat(),
@@ -443,7 +443,7 @@ async def railway_status():
443443
"health_status": health_status["overall"],
444444
"deployment_timestamp": datetime.now().isoformat(),
445445
"uptime_seconds": round(time.time() - start_time, 2),
446-
"version": "0.9.8",
446+
"version": "0.9.9",
447447
"ready_for_traffic": health_status["overall"] in ["healthy", "degraded"],
448448
"critical_services": {
449449
"vector_store": health_status["checks"].get("vector_store", {}).get("status", "unknown"),
@@ -477,7 +477,7 @@ async def debug_env():
477477
"CLAUDE_AI_SKIP_OAUTH": os.environ.get("CLAUDE_AI_SKIP_OAUTH", "not_set"),
478478
"CLAUDE_AI_MINIMAL_OAUTH": os.environ.get("CLAUDE_AI_MINIMAL_OAUTH", "not_set"),
479479
"RAILWAY_ENVIRONMENT": os.environ.get("RAILWAY_ENVIRONMENT", "not_set"),
480-
"version": "0.9.8",
480+
"version": "0.9.9",
481481
"oauth_mode": "minimal" if os.environ.get("CLAUDE_AI_MINIMAL_OAUTH", "false").lower() == "true" else ("disabled" if os.environ.get("CLAUDE_AI_SKIP_OAUTH", "true").lower() == "true" else "full")
482482
})
483483

@@ -542,7 +542,7 @@ async def event_generator():
542542
},
543543
"serverInfo": {
544544
"name": "Dr. Strunz Knowledge MCP Server",
545-
"version": "0.9.8"
545+
"version": "0.9.9"
546546
}
547547
},
548548
"id": init_data.get("id")
@@ -594,6 +594,7 @@ async def event_generator():
594594

595595
@app.post("/messages")
596596
@app.post("/messages/")
597+
@app.post("/mcp") # Claude.ai sometimes uses /mcp instead of /messages
597598
async def messages_endpoint(request: Request, session_id: Optional[str] = Query(None), user=Depends(get_current_user)):
598599
"""
599600
Messages endpoint for MCP requests.
@@ -675,7 +676,7 @@ def handle_initialize(params: Dict) -> Dict:
675676
},
676677
"serverInfo": {
677678
"name": "Dr. Strunz Knowledge MCP Server",
678-
"version": "0.9.8"
679+
"version": "0.9.9"
679680
}
680681
}
681682
}
@@ -825,6 +826,7 @@ async def oauth_protected_resource():
825826
}
826827

827828
@app.post("/oauth/register")
829+
@app.post("/register") # Claude.ai uses /register instead of /oauth/register
828830
async def register_client(request: Request):
829831
"""Dynamic Client Registration (RFC 7591)"""
830832
# If minimal OAuth is enabled, let minimal_oauth handle this

src/mcp/mcp_sdk_clean.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"""
33
Clean MCP SDK Server - Official Implementation
44
Dr. Strunz Knowledge Base MCP Server using official MCP SDK
5-
Version: 0.9.8 - Clean implementation without web dependencies
5+
Version: 0.9.9 - Clean implementation without web dependencies
66
"""
77

88
import os
@@ -1634,7 +1634,7 @@ async def _handle_longevity_protocol_prompt(self, arguments: dict) -> types.GetP
16341634

16351635
async def main():
16361636
"""Main entry point for clean MCP SDK server"""
1637-
logger.info("=== CLEAN MCP SDK SERVER v0.9.8 ===")
1637+
logger.info("=== CLEAN MCP SDK SERVER v0.9.9 ===")
16381638
logger.info("Starting Dr. Strunz Knowledge MCP Server with official SDK...")
16391639

16401640
# Create server instance

src/scripts/deployment/railway_claude_ai_compatible.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def get_mcp_server_purpose():
3939
"""Get information about this MCP server"""
4040
return {
4141
"name": "Dr. Strunz Knowledge MCP Server",
42-
"version": "0.9.8",
42+
"version": "0.9.9",
4343
"purpose": "Claude.ai compatible MCP server with health and nutrition tools",
4444
"endpoint_test": "Claude.ai endpoint working"
4545
}
@@ -74,7 +74,7 @@ def get_dr_strunz_biography():
7474
# Create FastAPI app
7575
app = FastAPI(
7676
title="Dr. Strunz Knowledge MCP Server (Claude.ai Compatible)",
77-
version="0.9.8",
77+
version="0.9.9",
7878
description="MCP server with Claude.ai specific compatibility"
7979
)
8080

@@ -94,7 +94,7 @@ def get_dr_strunz_biography():
9494
@app.on_event("startup")
9595
async def startup_event():
9696
"""Initialize server on startup"""
97-
logger.info("Starting Claude.ai Compatible MCP Server v0.9.8")
97+
logger.info("Starting Claude.ai Compatible MCP Server v0.9.9")
9898

9999
# Preload vector store
100100
try:
@@ -133,7 +133,7 @@ async def startup_event():
133133
# "mcpVersion": "2025-03-26",
134134
# "serverInfo": {
135135
# "name": "Dr. Strunz Knowledge MCP Server",
136-
# "version": "0.9.8",
136+
# "version": "0.9.9",
137137
# "vendor": "Longevity Coach"
138138
# },
139139
# "transport": ["sse", "http"],
@@ -248,7 +248,7 @@ async def messages_endpoint(request: Request):
248248
},
249249
"serverInfo": {
250250
"name": "Dr. Strunz Knowledge MCP Server",
251-
"version": "0.9.8",
251+
"version": "0.9.9",
252252
"vendor": "Longevity Coach"
253253
}
254254
},

0 commit comments

Comments
 (0)