Mnevis MCP Server
by mar-co-za
README.md
# Mnevis MCP Server
> ⚠️ **This is an experiment.**
A **lightweight, zero-dependency** Python MCP server that exposes a single `do_everything` tool.
Any AI agent that supports MCP can use it to offload **all** language-model work to a local
OpenAI-compatible endpoint.
---
## How it works
```
AI Agent
│
│ MCP stdio (JSON-RPC 2.0)
▼
mnevis server.py
│
│ HTTP POST /v1/chat/completions
▼
Local LLM (Ollama, LM Studio, llama.cpp, vLLM, …)
```
The agent calls the `do_everything` tool with a `prompt` (and optional `system` instruction).
The server forwards the request to the local LLM using the standard OpenAI chat-completions API
and returns the model's response to the agent.
The tool description is worded so that any LLM automatically understands it should **delegate
every task** to the tool instead of reasoning on its own.
---
## Requirements
- Python **3.11+**
- No third-party packages — uses the standard library only (`urllib`, `json`, `sys`, `os`)
- A running local LLM that exposes a `/v1/chat/completions` endpoint
---
## Configuration
All settings are read from **environment variables** at startup:
| Variable | Default | Description |
|-------------------|-------------------------|------------------------------------------------|
| `MNEVIS_URL` | `http://localhost` | Base URL of the local LLM server |
| `MNEVIS_PORT` | `11434` | Port the LLM server listens on |
| `MNEVIS_MODEL` | `llama3` | Model name to pass in the request |
| `MNEVIS_API_KEY` | _(empty)_ | Optional API key (sent as `Bearer` token) |
| `MNEVIS_TIMEOUT` | `120` | Request timeout in seconds for the LLM HTTP call |
| `MNEVIS_LOGLEVEL` | `INFO` | Logging level for server diagnostics (`DEBUG`, `INFO`, `WARNING`, `ERROR`) |
### Examples
**Ollama (default port 11434):**
```bash
MNEVIS_MODEL=llama3 python server.py
```
**LM Studio (default port 1234):**
```bash
MNEVIS_URL=http://localhost MNEVIS_PORT=1234 MNEVIS_MODEL=lmstudio-community/Meta-Llama-3-8B-Instruct python server.py
```
**vLLM with API key:**
```bash
MNEVIS_URL=http://my-gpu-box MNEVIS_PORT=8000 MNEVIS_MODEL=mistral-7b MNEVIS_API_KEY=secret python server.py
```
---
## Running the server
The server communicates over **stdio** (JSON-RPC 2.0), so it is spawned as a child process by
the MCP host — you do not run it manually in most cases.
To test it directly:
```bash
python server.py
```
Then paste a raw JSON-RPC message, e.g.:
```json
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0.0.1"}}}
```
---
## Registering with an MCP host
Add to your `mcp.json` (workspace or global):
```json
{
"mcpServers": {
"mnevis": {
"command": "python",
"args": ["/absolute/path/to/mnevis-mcp/server.py"],
"env": {
"MNEVIS_URL": "http://localhost",
"MNEVIS_PORT": "11434",
"MNEVIS_MODEL": "llama3",
"MNEVIS_API_KEY": ""
}
}
}
}
```
For VScode:
```json
{
"servers": {
"mnevis": {
"command": "python",
"args": ["/absolute/path/to/mnevis-mcp/server.py"],
"env": {
"MNEVIS_URL": "http://localhost",
"MNEVIS_PORT": "11434",
"MNEVIS_MODEL": "llama3",
"MNEVIS_API_KEY": ""
}
}
}
}
```
Replace the `args` path with the actual absolute path on your machine.
Set `MNEVIS_PORT` / `MNEVIS_MODEL` to match your local LLM setup.
---
## Exposed tool
### `do_everything`
| Argument | Type | Required | Description |
|----------|--------|----------|------------------------------------------------------------------|
| `prompt` | string | ✅ | The full task, question, or conversation to process |
| `system` | string | ❌ | Optional system / persona instruction for the local LLM |
The tool description explicitly instructs the calling agent to **send every task here** rather than reasoning itself.
### `health_check`
| Argument | Type | Required | Description |
|----------|--------|----------|-------------|
| *(none)* | — | — | Returns a short status string containing the server version, configured model name, URL/port and request timeout. Useful for monitoring or debugging.
**Example request**
```json
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"health_check","arguments":{}}}
```
**Example response**
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [{"type": "text", "text": "mnevis version 1.0.0 | model=llama3 | url=http://localhost:11434 | timeout=120s"}],
"isError": false
}
}
```
---
## Project layout
```
mnevis-mcp/
├── server.py # MCP server (single file, stdlib only)
├── pyproject.toml # Project metadata
├── README.md # This file
└── .gitignore
```
---
## License
MIT
TDQS
A4/5.0
Scored across 1 tool
Disambiguation5/5
Only one tool exists, so there is no possibility of confusing it with other tools. The tool's purpose is clearly stated.
Naming Consistency5/5
With a single tool, naming consistency is inherently perfect. The name 'do_everything' clearly describes its intended use.
Tool Count4/5
The server's scope is very narrow—providing a single LLM proxy—so one tool is appropriate. However, it feels slightly thin compared to typical MCP servers that offer multiple specialized tools.
Completeness5/5
The tool claims to handle every possible language model task, from reasoning to coding, making it complete for its stated purpose of being a universal LLM delegate.
Maintenance
ActivityMaintained
ResponsivenessNo issues