Skip to content

Commit b68153b

Browse files
rushilpatel0github-actions[bot]
authored andcommitted
Automated pre-commit update
1 parent 6c64ab2 commit b68153b

File tree

2 files changed

+19
-27
lines changed

2 files changed

+19
-27
lines changed

codegen-examples/examples/codegen-mcp-server/pyproject.toml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@ version = "0.1.0"
44
description = "Add your description here"
55
readme = "README.md"
66
requires-python = ">=3.13"
7-
dependencies = [
8-
"codegen>=0.14.5",
9-
"mcp>=1.2.1",
10-
]
7+
dependencies = ["codegen>=0.14.5", "mcp>=1.2.1"]
118

129
[tool.poetry.scripts]
1310
codegen-mcp-server = "server:main"

codegen-examples/examples/codegen-mcp-server/server.py

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
from mcp.server.fastmcp import FastMCP
55
from codegen import Codebase
66

7+
78
@dataclass
89
class CodebaseState:
910
"""Class to manage codebase state and parsing."""
11+
1012
parse_task: Optional[asyncio.Task] = None
1113
parsed_codebase: Optional[Codebase] = None
1214
log_buffer: List[str] = field(default_factory=list)
@@ -23,30 +25,32 @@ def reset(self) -> None:
2325
self.parsed_codebase.reset()
2426
self.log_buffer.clear()
2527

28+
2629
# Initialize FastMCP server
2730
mcp = FastMCP(
2831
"codegen-mcp-server",
29-
instructions="""This server provides tools to parse and modify a codebase using codemods.
32+
instructions="""This server provides tools to parse and modify a codebase using codemods.
3033
It can initiate parsing, check parsing status, and execute codemods.""",
3134
)
3235

3336
# Initialize state
3437
state = CodebaseState()
3538

39+
3640
def capture_output(*args, **kwargs) -> None:
3741
"""Capture and log output messages."""
3842
for arg in args:
3943
state.log_buffer.append(str(arg))
4044

45+
4146
@mcp.tool(name="parse_codebase", description="Initiate codebase parsing")
42-
async def parse_codebase(
43-
codebase_path: Annotated[str, "path to the codebase to be parsed"]
44-
) -> Dict[str, str]:
47+
async def parse_codebase(codebase_path: Annotated[str, "path to the codebase to be parsed"]) -> Dict[str, str]:
4548
if not state.parse_task or state.parse_task.done():
4649
state.parse_task = asyncio.create_task(state.parse(codebase_path))
4750
return {"message": "Codebase parsing initiated, this may take some time depending on the size of the codebase. Use the `check_parsing_status` tool to check if the parse has completed."}
4851
return {"message": "Codebase is already being parsed."}
4952

53+
5054
@mcp.tool(name="check_parsing_status", description="Check if codebase parsing has completed")
5155
async def check_parsing_status() -> Dict[str, str]:
5256
if not state.parse_task:
@@ -55,15 +59,14 @@ async def check_parsing_status() -> Dict[str, str]:
5559
return {"message": "Codebase parsing completed."}
5660
return {"message": "Codebase parsing in progress."}
5761

62+
5863
@mcp.tool(name="execute_codemod", description="Execute a codemod on the codebase")
59-
async def execute_codemod(
60-
codemod: Annotated[str, "The python codemod code to execute on the codebase"]
61-
) -> Dict[str, Any]:
64+
async def execute_codemod(codemod: Annotated[str, "The python codemod code to execute on the codebase"]) -> Dict[str, Any]:
6265
if not state.parse_task or not state.parse_task.done():
6366
return {"error": "Codebase is not ready for codemod execution."}
64-
67+
6568
try:
66-
codebase = await state.parse_task
69+
await state.parse_task
6770
# TODO: Implement proper sandboxing for code execution
6871
context = {
6972
"codebase": state.parsed_codebase,
@@ -72,23 +75,15 @@ async def execute_codemod(
7275
exec(codemod, context)
7376

7477
logs = "\n".join(state.log_buffer)
75-
78+
7679
state.reset()
77-
return {
78-
"message": "Codemod executed and codebase reset.",
79-
"logs": logs
80-
}
80+
return {"message": "Codemod executed and codebase reset.", "logs": logs}
8181
except Exception as e:
82-
return {
83-
"error": f"Error executing codemod: {str(e)}",
84-
"details": {
85-
"type": type(e).__name__,
86-
"message": str(e)
87-
}
88-
}
82+
return {"error": f"Error executing codemod: {str(e)}", "details": {"type": type(e).__name__, "message": str(e)}}
83+
8984

9085
if __name__ == "__main__":
91-
print('starting codegen-mcp-server')
86+
print("starting codegen-mcp-server")
9287
run = mcp.run_stdio_async()
93-
print('codegen-mcp-server started')
88+
print("codegen-mcp-server started")
9489
asyncio.run(run)

0 commit comments

Comments
 (0)