Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Code Assistantread the contents of my main.c file"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 fileRequirements
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-assistantUsage
Running the Server
The server reads JSON-RPC requests from stdin and writes responses to stdout:
python3 server.pyTesting 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 definitionsImport 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
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.