deploynator: _mcp_server
| *Community 4 |
4 files |
cohesion 0.50* |
Definition
This community groups 4 file(s) rooted at deploynator with dominant language py (cohesion 0.50). Central symbols: MCPRequest, MCPResource, MCPServer, MCPTool, TestCliMode, TestMCPServer, __init__, _handle_call_tool. Core file: deploynator/_mcp_server.py (32 symbols). Documented purpose: MCP (Model Context Protocol) stdio server for deploynator. Exposes headless deploy operations as MCP tools so AI harnesses (claude code, codex, opencode) can r.
Files
| File |
Language |
Layer |
Symbols |
Doc |
deploynator/__init__.py |
py |
utility |
0 |
no |
deploynator/__main__.py |
py |
utility |
3 |
no |
deploynator/_mcp_server.py |
py |
utility |
32 |
yes |
tests/test_cli_mcp.py |
py |
testing |
11 |
yes |
Key Symbols
build_parser (function, deploynator/__main__.py:17) def build_parser()
preprocess_argv (function, deploynator/__main__.py:130) def preprocess_argv(argv)
main (function, deploynator/__main__.py:164) def main(argv)
MCPRequest (class, deploynator/_mcp_server.py:35) class MCPRequest
__init__ (method, deploynator/_mcp_server.py:36) def __init__(self, msg)
is_notification (method, deploynator/_mcp_server.py:43) def is_notification(self)
response (method, deploynator/_mcp_server.py:46) def response(self, result)
error (method, deploynator/_mcp_server.py:49) def error(self, code, message, data)
MCPTool (class, deploynator/_mcp_server.py:56) class MCPTool
__init__ (method, deploynator/_mcp_server.py:57) def __init__(self, name, description, handler, input_schema)
definition (method, deploynator/_mcp_server.py:64) def definition(self)
call (method, deploynator/_mcp_server.py:67) def call(self, arguments)
MCPResource (class, deploynator/_mcp_server.py:71) class MCPResource
__init__ (method, deploynator/_mcp_server.py:72) def __init__(self, uri, name, description, mime_type, handler)
definition (method, deploynator/_mcp_server.py:79) def definition(self)
read (method, deploynator/_mcp_server.py:82) def read(self)
MCPServer (class, deploynator/_mcp_server.py:86) class MCPServer
__init__ (method, deploynator/_mcp_server.py:87) def __init__(self, app, target_dir)
register_tool (method, deploynator/_mcp_server.py:94) def register_tool(self, tool)
register_resource (method, deploynator/_mcp_server.py:97) def register_resource(self, resource)
_handle_initialize (method, deploynator/_mcp_server.py:100) def _handle_initialize(self, req)
_handle_list_tools (method, deploynator/_mcp_server.py:108) def _handle_list_tools(self, req)
_handle_call_tool (method, deploynator/_mcp_server.py:111) def _handle_call_tool(self, req)
_handle_list_resources (method, deploynator/_mcp_server.py:128) def _handle_list_resources(self, req)
_handle_read_resource (method, deploynator/_mcp_server.py:131) def _handle_read_resource(self, req)
dispatch (method, deploynator/_mcp_server.py:144) def dispatch(self, req)
run (method, deploynator/_mcp_server.py:162) def run(self)
_register_all (method, deploynator/_mcp_server.py:180) def _register_all(self)
_tool_release (method, deploynator/_mcp_server.py:233) def _tool_release(self, project, commit_type, subject, scope, body, bump, dry_ru
_tool_commit (method, deploynator/_mcp_server.py:248) def _tool_commit(self, commit_type, subject, project, scope, body, dry_run)
Internal vs External Edges
- Internal resolved imports (EXTRACTED): 13
- Cross-boundary resolved imports (EXTRACTED): 7
Connections
- [EXTRACTED] depends_on community 4 <-> 3 (strength 0.9): Extracted import edge crosses communities: deploynator/init.py imports deploynator/_app.py.
- [EXTRACTED] depends_on community 4 <-> 0 (strength 0.9): Extracted import edge crosses communities: deploynator/main.py imports deploynator/_config.py.
- [EXTRACTED] depends_on community 4 <-> 2 (strength 0.9): Extracted import edge crosses communities: deploynator/main.py imports deploynator/_models.py.
- [INFERRED] bridges community 4 <-> 0 (strength 0.7): Inferred cross-community bridge: deploynator/init.py reaches deploynator/_changelog.py in 3 hops.
- [INFERRED] bridges community 4 <-> 1 (strength 0.7): Inferred cross-community bridge: deploynator/init.py reaches deploynator/_docs.py in 3 hops.
- [INFERRED] shares_context community 4 <-> 5 (strength 0.5): Inferred shared context (language py and layer utility) with no import path between community 4 (deploynator: _mcp_server) and community 5 (orphans).
Risks
- No scoped security, taint, cycle, or layer risks.
Open Questions
- Why do 2 file(s) lack file-level docs (e.g.
deploynator/__init__.py)? What purpose do they serve?
- What would break if the most connected file in deploynator: _mcp_server changed?
- Should deploynator: _mcp_server be split, given cohesion 0.50?
Sources
deploynator/__init__.py
deploynator/__main__.py
deploynator/_mcp_server.py
tests/test_cli_mcp.py