feat: Add MCP server stubs, development docs, and Docker updates
- 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>
This commit is contained in:
23
mcp-servers/code-analysis/pyproject.toml
Normal file
23
mcp-servers/code-analysis/pyproject.toml
Normal file
@@ -0,0 +1,23 @@
|
||||
[project]
|
||||
name = "syndarix-mcp-code-analysis"
|
||||
version = "0.1.0"
|
||||
description = "Syndarix Code Analysis MCP Server - AST parsing, linting, type checking"
|
||||
requires-python = ">=3.12"
|
||||
dependencies = [
|
||||
"fastmcp>=0.1.0",
|
||||
"tree-sitter>=0.21.0",
|
||||
"redis>=5.0.0",
|
||||
"pydantic>=2.0.0",
|
||||
"pydantic-settings>=2.0.0",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
dev = [
|
||||
"pytest>=8.0.0",
|
||||
"pytest-asyncio>=0.23.0",
|
||||
"ruff>=0.8.0",
|
||||
]
|
||||
|
||||
[tool.ruff]
|
||||
target-version = "py312"
|
||||
line-length = 88
|
||||
47
mcp-servers/code-analysis/server.py
Normal file
47
mcp-servers/code-analysis/server.py
Normal file
@@ -0,0 +1,47 @@
|
||||
"""
|
||||
Syndarix Code Analysis MCP Server.
|
||||
|
||||
Provides code analysis with:
|
||||
- AST parsing via tree-sitter
|
||||
- Linting integration
|
||||
- Type checking
|
||||
|
||||
Phase 5 implementation.
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from fastmcp import FastMCP
|
||||
|
||||
mcp = FastMCP(
|
||||
"syndarix-code-analysis",
|
||||
description="AST parsing, linting, type checking",
|
||||
)
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
async def parse_file(project_id: str, path: str) -> dict:
|
||||
"""Parse a file and return its AST."""
|
||||
return {"status": "not_implemented", "project_id": project_id}
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
async def lint_file(project_id: str, path: str) -> dict:
|
||||
"""Run linting on a file."""
|
||||
return {"status": "not_implemented", "project_id": project_id}
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
async def type_check(project_id: str, path: str | None = None) -> dict:
|
||||
"""Run type checking on file(s)."""
|
||||
return {"status": "not_implemented", "project_id": project_id}
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
async def find_references(project_id: str, symbol: str, path: str) -> dict:
|
||||
"""Find all references to a symbol."""
|
||||
return {"status": "not_implemented", "project_id": project_id}
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
mcp.run()
|
||||
Reference in New Issue
Block a user