jubeju555/MCPServer-1
If you are the rightful owner of MCPServer-1 and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
A minimal Model Context Protocol (MCP) server implementation in Python that provides developer tools for file operations, C code compilation, and executable execution.
MCP Code Assistant
A minimal Model Context Protocol (MCP) server implementation in Python that provides developer tools for file operations, C code compilation, and executable execution.
A learning project for understanding how to build MCP servers from scratch. Designed with an extensible architecture for future enhancements.
Overview
This MCP server communicates using JSON-RPC 2.0 over stdin/stdout, making it compatible with MCP clients and AI assistants that support the Model Context Protocol.
Features
-
File Operations
read_file: Read contents from any file on the filesystemwrite_file: Write contents to files (with automatic directory creation)
-
Future Tools (extensible architecture)
- Compile C code
- Run executables
- Debug tools
Project Structure
mcp-code-assistant/
├── server.py # Main MCP server implementation
├── logger.py # Logging utilities (writes to stderr)
├── jsonrpc.py # JSON-RPC 2.0 message handling
├── dispatcher.py # Tool registration and dispatch
├── tools/ # Tool implementations
│ ├── __init__.py # Tools package
│ └── file_ops.py # File operation tools
├── requirements.txt # Python dependencies (minimal)
└── README.md # This file
Requirements
- Python 3.7 or higher
- No external dependencies (uses only Python standard library)
Installation
- Clone or download this project
- No installation needed - uses only stdlib
cd mcp-code-assistant
Usage
Running the Server
The server reads JSON-RPC requests from stdin and writes responses to stdout:
python3 server.py
Testing the Server
You can test the server manually by sending JSON-RPC requests via stdin:
# Start the server
python3 server.py
# Then type (or pipe) JSON-RPC requests:
{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "clientInfo": {"name": "test-client", "version": "1.0"}}}
{"jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {}}
{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "read_file", "arguments": {"path": "README.md"}}}
Using with MCP Clients
Configure your MCP client to run this server. Example configuration:
{
"mcpServers": {
"code-assistant": {
"command": "python3",
"args": ["/path/to/mcp-code-assistant/server.py"]
}
}
}
Available Tools
read_file
Reads the contents of a file from the filesystem.
Parameters:
path(string, required): Path to the file (absolute or relative)
Example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "read_file",
"arguments": {
"path": "/home/user/example.txt"
}
}
}
write_file
Writes contents to a file on the filesystem. Creates parent directories if needed.
Parameters:
path(string, required): Path to the filecontents(string, required): Contents to write
Example:
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "write_file",
"arguments": {
"path": "/home/user/output.txt",
"contents": "Hello, World!"
}
}
}
Development
Adding New Tools
- Create a new file in
tools/(e.g.,compile_ops.py) - Define your tool handler functions
- Create a
TOOLSdictionary with tool definitions - Import and register in
tools/__init__.py
Example tool structure:
def my_tool(args):
"""Tool implementation."""
# Validate args
# Perform operation
# Return result dict
return {"result": "success"}
TOOLS = {
"my_tool": {
"handler": my_tool,
"description": "Description of what the tool does",
"inputSchema": {
"type": "object",
"properties": {
"param1": {
"type": "string",
"description": "Parameter description"
}
},
"required": ["param1"]
}
}
}
Logging
All logs go to stderr to keep stdout clean for JSON-RPC communication. Use the logger module:
from logger import log_info, log_error, log_debug
log_info("Server started")
log_debug("Debug message")
log_error("Error message")
Protocol Support
- Protocol Version: 2024-11-05
- JSON-RPC: 2.0
- Methods Supported:
initialize: Initialize the server connectiontools/list: List all available toolstools/call: Execute a tool
License
This is a minimal educational implementation. Use and modify as needed.
Future Enhancements
- C code compilation tool (
compile_c) - Execute binary tool (
run_executable) - Debugging tools
- Code analysis tools
- Git integration
- Project scaffolding tools