Skip to main content
Glama
mar-co-za
by mar-co-za

Mnevis MCP 서버

⚠️ 이는 실험입니다.

가벼우며, 의존성이 없는 Python MCP 서버로, 단일 do_everything 도구를 제공합니다. MCP를 지원하는 모든 AI 에이전트는 이 서버를 사용하여 모든 언어 모델 작업을 로컬 OpenAI 호환 엔드포인트에 오프로드할 수 있습니다.


작동 방식

AI Agent
    │
    │  MCP stdio (JSON-RPC 2.0)
    ▼
mnevis  server.py
    │
    │  HTTP POST /v1/chat/completions
    ▼
Local LLM  (Ollama, LM Studio, llama.cpp, vLLM, …)

에이전트가 prompt(와 선택적 system 명령)와 함께 do_everything 도구를 호출합니다.
서버는 표준 OpenAI 채팅 완료 API를 사용하여 요청을 로컬 LLM에 전달하고
모델의 응답을 에이전트에 반환합니다.

도구 설명은 모든 LLM이 스스로 추론하는 대신 모든 작업을 도구에 위임해야 한다는 것을
자동으로 이해하도록 작성되었습니다.


Related MCP server: MCP-123

요구 사항

  • Python 3.11+

  • 타사 패키지 불필요 — 표준 라이브러리만 사용(urllib, json, sys, os)

  • /v1/chat/completions 엔드포인트를 노출하는 실행 중인 로컬 LLM


설정

모든 설정은 시작 시 환경 변수에서 읽어옵니다:

변수

기본값

설명

MNEVIS_URL

http://localhost

로컬 LLM 서버의 기본 URL

MNEVIS_PORT

11434

LLM 서버가 수신 대기하는 포트

MNEVIS_MODEL

llama3

요청에 전달할 모델 이름

MNEVIS_API_KEY

(비어 있음)

선택적 API 키 (Bearer 토큰으로 전송)

MNEVIS_TIMEOUT

120

LLM HTTP 호출에 대한 요청 시간 초과(초)

MNEVIS_LOGLEVEL

INFO

서버 진단을 위한 로깅 수준 (DEBUG, INFO, WARNING, ERROR)

예시

Ollama (기본 포트 11434):

MNEVIS_MODEL=llama3 python server.py

LM Studio (기본 포트 1234):

MNEVIS_URL=http://localhost MNEVIS_PORT=1234 MNEVIS_MODEL=lmstudio-community/Meta-Llama-3-8B-Instruct python server.py

API 키를 사용한 vLLM:

MNEVIS_URL=http://my-gpu-box MNEVIS_PORT=8000 MNEVIS_MODEL=mistral-7b MNEVIS_API_KEY=secret python server.py

서버 실행

서버는 stdio (JSON-RPC 2.0)를 통해 통신하므로, MCP 호스트에 의해
자식 프로세스로 생성됩니다 — 대부분의 경우 수동으로 실행하지 않습니다.

직접 테스트하려면:

python server.py

그런 다음 원시 JSON-RPC 메시지를 붙여넣습니다. 예:

{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0.0.1"}}}

MCP 호스트에 등록

mcp.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": ""
      }
    }
  }
}

VScode의 경우:

{
  "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": ""
      }
    }
  }
}

args 경로를 실제 시스템의 절대 경로로 바꾸세요.
로컬 LLM 설정에 맞게 MNEVIS_PORT / MNEVIS_MODEL을 설정하세요.


제공되는 도구

do_everything

인수

유형

필수

설명

prompt

string

✅

처리할 전체 작업, 질문 또는 대화

system

string

❌

로컬 LLM을 위한 선택적 시스템 / 페르소나 지시

도구 설명은 호출 에이전트에게 스스로 추론하는 대신 모든 작업을 여기로 보내도록 명시적으로 지시합니다.

health_check

인수

유형

필수

설명

(없음)

—

—

서버 버전, 설정된 모델 이름, URL/포트 및 요청 시간 초과가 포함된 짧은 상태 문자열을 반환합니다. 모니터링 또는 디버깅에 유용합니다.

요청 예시

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"health_check","arguments":{}}}

응답 예시

{
  "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
  }
}

프로젝트 구조

mnevis-mcp/
├── server.py        # MCP server (single file, stdlib only)
├── pyproject.toml   # Project metadata
├── README.md        # This file
└── .gitignore

라이선스

MIT

Available Tools

1 tool
do_everythingA

Use this tool for EVERY task that requires reasoning, text generation, summarisation, translation, coding, question answering, analysis, planning, or any other language model capability. Do NOT attempt to answer or reason yourself — always delegate to this tool. Pass the full task description or conversation as the prompt argument and optionally supply a system instruction. The tool forwards the request to a local LLM and returns the response.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesThe complete task, question, or conversation turn to process. Include all context the model needs.
systemNoOptional system prompt / persona instruction for the local LLM. Leave blank to use no system message.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Only states it forwards to a local LLM and returns response, lacking details on failure modes, latency, or read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise, front-loaded, and wastes no words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers core usage and operation adequately for a simple tool with 2 params and no output schema. Could mention return format but sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and description adds meaningful guidance for 'prompt' (include all context) and 'system' (optional persona), slightly above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool forwards tasks to a local LLM, covering many capabilities. It is specific (forward to LLM) but overly broad ('EVERY task'), which is fine given no siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to always use this tool for reasoning tasks and not to answer directly. Provides clear context with no exclusions, sufficient given no alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.0.0
    • First observeddo_everything

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

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers