initial server
This commit is contained in:
@@ -0,0 +1 @@
|
||||
"""Personal MCP server package."""
|
||||
@@ -0,0 +1,22 @@
|
||||
from fastmcp import FastMCP
|
||||
|
||||
from personal_mcp.skills.fastapi_uv_docker.server import fastapi_uv_docker_server
|
||||
from personal_mcp.skills.pytest_scaffolding.server import pytest_scaffolding_server
|
||||
from personal_mcp.skills.python_logging_dictconfig.server import (
|
||||
python_logging_dictconfig_server,
|
||||
)
|
||||
|
||||
mcp = FastMCP("personal-mcp")
|
||||
|
||||
mcp.mount(pytest_scaffolding_server, namespace="pytest_scaffolding")
|
||||
mcp.mount(python_logging_dictconfig_server, namespace="python_logging_dictconfig")
|
||||
mcp.mount(fastapi_uv_docker_server, namespace="fastapi_uv_docker")
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""Run the root MCP server."""
|
||||
mcp.run()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1 @@
|
||||
"""Mounted skill servers for the personal MCP app."""
|
||||
@@ -0,0 +1,3 @@
|
||||
from personal_mcp.skills.fastapi_uv_docker.server import fastapi_uv_docker_server
|
||||
|
||||
__all__ = ["fastapi_uv_docker_server"]
|
||||
@@ -0,0 +1,7 @@
|
||||
id: fastapi-uv-docker
|
||||
name: FastAPI uv Docker
|
||||
description: Provide fast migration guidance to FastAPI plus uv plus Docker.
|
||||
tags:
|
||||
- fastapi
|
||||
- uv
|
||||
- docker
|
||||
@@ -0,0 +1,16 @@
|
||||
from fastmcp import FastMCP
|
||||
|
||||
fastapi_uv_docker_server = FastMCP("fastapi-uv-docker")
|
||||
|
||||
|
||||
@fastapi_uv_docker_server.tool()
|
||||
def fastapi_uv_docker_mvp_checklist(current_state: str = "bare python project") -> list[str]:
|
||||
"""Return a compact migration checklist for FastAPI + uv + Docker."""
|
||||
return [
|
||||
f"Current state: {current_state}",
|
||||
"Create src/ package layout for the FastAPI app.",
|
||||
"Manage dependencies with uv and keep uv.lock committed.",
|
||||
"Use an app factory and lifespan hooks.",
|
||||
"Add /healthz endpoint for operational checks.",
|
||||
"Build with a multi-stage Dockerfile and run as non-root user.",
|
||||
]
|
||||
@@ -0,0 +1,3 @@
|
||||
from personal_mcp.skills.pytest_scaffolding.server import pytest_scaffolding_server
|
||||
|
||||
__all__ = ["pytest_scaffolding_server"]
|
||||
@@ -0,0 +1,7 @@
|
||||
id: pytest-scaffolding
|
||||
name: Pytest Scaffolding
|
||||
description: Scaffold a maintainable pytest structure quickly.
|
||||
tags:
|
||||
- pytest
|
||||
- testing
|
||||
- python
|
||||
@@ -0,0 +1,15 @@
|
||||
from fastmcp import FastMCP
|
||||
|
||||
pytest_scaffolding_server = FastMCP("pytest-scaffolding")
|
||||
|
||||
|
||||
@pytest_scaffolding_server.tool()
|
||||
def propose_pytest_mvp_tree(target_scope: str = "src/") -> str:
|
||||
"""Return a minimal test scaffold plan for a target scope."""
|
||||
return (
|
||||
f"MVP pytest scaffold for {target_scope}:\n"
|
||||
"1. Mirror the source subtree under tests/.\n"
|
||||
"2. Add one happy-path test and one edge-case test per core module.\n"
|
||||
"3. Keep fast tests isolated from integration/external dependencies.\n"
|
||||
"4. Use uv run pytest as the canonical runner."
|
||||
)
|
||||
@@ -0,0 +1,5 @@
|
||||
from personal_mcp.skills.python_logging_dictconfig.server import (
|
||||
python_logging_dictconfig_server,
|
||||
)
|
||||
|
||||
__all__ = ["python_logging_dictconfig_server"]
|
||||
@@ -0,0 +1,7 @@
|
||||
id: python-logging-dictconfig
|
||||
name: Python Logging DictConfig
|
||||
description: Provide minimal logging.config.dictConfig setup guidance.
|
||||
tags:
|
||||
- logging
|
||||
- python
|
||||
- observability
|
||||
@@ -0,0 +1,30 @@
|
||||
from fastmcp import FastMCP
|
||||
|
||||
python_logging_dictconfig_server = FastMCP("python-logging-dictconfig")
|
||||
|
||||
|
||||
@python_logging_dictconfig_server.tool()
|
||||
def logging_dictconfig_template(level: str = "INFO") -> dict:
|
||||
"""Return a minimal dictConfig template for application startup."""
|
||||
normalized = level.upper()
|
||||
return {
|
||||
"version": 1,
|
||||
"disable_existing_loggers": False,
|
||||
"formatters": {
|
||||
"standard": {
|
||||
"format": "%(asctime)s %(levelname)s %(name)s: %(message)s",
|
||||
}
|
||||
},
|
||||
"handlers": {
|
||||
"console": {
|
||||
"class": "logging.StreamHandler",
|
||||
"level": normalized,
|
||||
"formatter": "standard",
|
||||
"stream": "ext://sys.stdout",
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"level": normalized,
|
||||
"handlers": ["console"],
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user