forked from cardosofelipe/fast-next-template
- Add MCP server skeleton implementations for all 7 planned servers (llm-gateway, knowledge-base, git, issues, filesystem, code-analysis, cicd) - Add comprehensive DEVELOPMENT.md with setup and usage instructions - Add BACKLOG.md with detailed phase planning - Update docker-compose.dev.yml with Redis and Celery workers - Update CLAUDE.md with Syndarix-specific context Addresses issues #16, #20, #21 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
77 lines
1.7 KiB
Python
77 lines
1.7 KiB
Python
"""
|
|
Syndarix Issues MCP Server.
|
|
|
|
Provides issue tracker operations with:
|
|
- Multi-provider support (Gitea, GitHub, GitLab)
|
|
- Bi-directional sync
|
|
- LWW conflict resolution
|
|
|
|
Per ADR-011: Issue Synchronization.
|
|
"""
|
|
|
|
import os
|
|
|
|
from fastmcp import FastMCP
|
|
|
|
mcp = FastMCP(
|
|
"syndarix-issues",
|
|
description="Issue tracker synchronization",
|
|
)
|
|
|
|
|
|
@mcp.tool()
|
|
async def list_issues(
|
|
project_id: str,
|
|
state: str = "open",
|
|
labels: list[str] | None = None,
|
|
) -> dict:
|
|
"""List issues for a project."""
|
|
return {"status": "not_implemented", "project_id": project_id}
|
|
|
|
|
|
@mcp.tool()
|
|
async def get_issue(project_id: str, issue_id: str) -> dict:
|
|
"""Get a specific issue."""
|
|
return {"status": "not_implemented", "project_id": project_id}
|
|
|
|
|
|
@mcp.tool()
|
|
async def create_issue(
|
|
project_id: str,
|
|
title: str,
|
|
body: str,
|
|
labels: list[str] | None = None,
|
|
assignees: list[str] | None = None,
|
|
) -> dict:
|
|
"""Create a new issue."""
|
|
return {"status": "not_implemented", "project_id": project_id}
|
|
|
|
|
|
@mcp.tool()
|
|
async def update_issue(
|
|
project_id: str,
|
|
issue_id: str,
|
|
title: str | None = None,
|
|
body: str | None = None,
|
|
state: str | None = None,
|
|
labels: list[str] | None = None,
|
|
) -> dict:
|
|
"""Update an existing issue."""
|
|
return {"status": "not_implemented", "project_id": project_id}
|
|
|
|
|
|
@mcp.tool()
|
|
async def add_comment(project_id: str, issue_id: str, body: str) -> dict:
|
|
"""Add a comment to an issue."""
|
|
return {"status": "not_implemented", "project_id": project_id}
|
|
|
|
|
|
@mcp.tool()
|
|
async def sync_issues(project_id: str, full: bool = False) -> dict:
|
|
"""Trigger issue sync for a project."""
|
|
return {"status": "not_implemented", "project_id": project_id}
|
|
|
|
|
|
if __name__ == "__main__":
|
|
mcp.run()
|