Skip to main content
Glama

#Nexus-MCP ( Foundry-Reverse )

Newer Foundry MCP reverse-engineered to work on Ollama


A fully local, open-source alternative to the Azure AI Foundry MCP Server, powered entirely by Ollama.
No Azure subscription, no API keys, no cloud required.

Features

Category

Tools

Health

health_check

Model Management

list_models, get_model_info, pull_model, delete_model, list_running_models, compare_models

Inference

generate, chat

Evaluation

evaluate_response, evaluate_agent

Knowledge / RAG

create_index, list_indexes, add_document, query_knowledge, delete_index

Plus MCP Resources (ollama://models, ollama://running, ollama://indexes) and reusable Prompts (summarize, rag_answer, code_review).

Related MCP server: mcplex

Requirements

  • Python 3.12+

  • Ollama running locally (ollama serve)

  • uv (recommended) or pip

Quick Start

# 1. Clone
git clone https://github.com/deadSwank001/Foundry-Reverse.git
cd Foundry-Reverse

# 2. Copy and edit configuration
cp .env.example .env

# 3. Run the MCP server (stdio transport)
uv run foundry-reverse

VS Code / Copilot Integration

Copy mcp.json to your VS Code workspace .vscode/mcp.json (or user-level MCP config), then restart VS Code.

{
  "mcpServers": {
    "foundry-reverse": {
      "command": "uv",
      "args": ["run", "foundry-reverse"],
      "env": {
        "OLLAMA_BASE_URL": "http://localhost:11434"
      }
    }
  }
}

Configuration

Variable

Default

Description

OLLAMA_BASE_URL

http://localhost:11434

Ollama API endpoint

OLLAMA_TIMEOUT

120

Request timeout in seconds

EMBED_MODEL

nomic-embed-text

Ollama model used for embeddings

JUDGE_MODEL

(first available)

Ollama model used as evaluator

KNOWLEDGE_STORE_PATH

.foundry_knowledge.json

Path for the local RAG store

Development

# Install deps (including dev)
uv sync --all-groups

# Run tests
uv run pytest

Architecture

src/foundry_reverse/
├── __init__.py          # Package version
├── server.py            # FastMCP server – all tools, resources, prompts
├── ollama_client.py     # Async Ollama REST API client
├── evaluation.py        # LLM-as-judge evaluation helpers
└── knowledge.py         # In-memory vector store (cosine similarity + Ollama embeddings)

Comparison with Azure AI Foundry MCP

Feature

Azure Foundry MCP

Foundry-Reverse

Model catalog

Azure AI model registry

Local Ollama models

Inference

Azure OpenAI / serverless

Ollama (/api/generate, /api/chat)

Embeddings

Azure OpenAI embeddings

Ollama (/api/embeddings)

Vector search

Azure AI Search

In-memory cosine similarity

Evaluation

Azure AI Evaluation SDK

Local LLM-as-judge

Auth

Azure Service Principal / keys

None (local only)

Cost

Pay-per-token

Free

Available Tools

16 tools
add_documentC

Add a text document to a knowledge index. The text is embedded automatically using the index's embedding model.

Inputs: index_name (required), text (required), metadata. Returns: object

chatB

Send a multi-turn conversation to an Ollama model. Messages should follow the format [{'role': 'user'|'assistant'|'system', 'content': '...'}].

Inputs: model (required), messages (required), temperature, max_tokens. Returns: object

compare_modelsB

Run the same prompt against multiple models and return all responses side-by-side for comparison.

Inputs: prompt (required), model_names (required), system_prompt. Returns: object

create_indexA

Create a named local vector index for RAG (Retrieval-Augmented Generation). Documents added to this index are embedded via Ollama.

Inputs: index_name (required), embed_model. Returns: object

delete_indexB

Delete a knowledge index and all its documents.

Inputs: index_name (required). Returns: object

delete_modelC

Delete a locally stored Ollama model to free disk space.

Inputs: model_name (required). Returns: object

evaluate_agentB

Evaluate a multi-turn agent conversation on task completion, tool use, safety, and efficiency using a local judge model.

Inputs: conversation (required), judge_model. Returns: object

evaluate_responseB

Use a local judge model to score an LLM response on relevance, coherence, correctness, and completeness (1-5 each).

Inputs: question (required), response (required), judge_model. Returns: object

generateC

Run text generation with an Ollama model. Returns the model's raw completion for a given prompt.

Inputs: model (required), prompt (required), system_prompt, temperature, +1 more. Returns: object

get_model_infoB

Get detailed information about a specific Ollama model.

Inputs: model_name (required). Returns: object

health_checkA

Check whether the local Ollama service is reachable.

Inputs: no named parameters. Returns: object

list_indexesA

List all local knowledge indexes.

Inputs: no named parameters. Returns: result

list_modelsA

List all locally available Ollama models.

Inputs: no named parameters. Returns: result

list_running_modelsA

List models currently loaded in memory (running in Ollama).

Inputs: no named parameters. Returns: result

pull_modelA

Download / update an Ollama model from the Ollama registry. Returns streaming status lines summarising the download progress.

Inputs: model_name (required). Returns: object

query_knowledgeB

Semantic search over a knowledge index. Returns the top-k most relevant documents for a natural language query.

Inputs: index_name (required), query (required), top_k. Returns: result

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 16 tools

    Disambiguation5/5

    Each tool targets a distinct operation: model management, knowledge indexing, evaluation, or generation. Overlap between 'chat', 'generate', and 'compare_models' is minimal and disambiguated by descriptions.

    Naming Consistency4/5

    Most tools follow a verb_noun pattern (e.g., 'create_index', 'list_models'), but a few use single verbs ('chat', 'generate') or noun_verb ('health_check'). The pattern is mostly consistent and readable.

    Tool Count4/5

    With 16 tools covering models, knowledge bases, evaluation, and chat, the count is appropriate for a multi-purpose MCP server. It is slightly on the higher side but still well-scoped.

    Completeness4/5

    The tool surface covers model lifecycle, generation, knowledge index management, and evaluation. Missing features include individual document removal and document listing within indexes, but core workflows are complete.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      Not graded
      maintenance
      An MCP server that bridges local Ollama models and ChromaDB vector memory to MCP clients like Claude Code. It enables local text generation, vision-based image analysis, and semantic memory storage without requiring external API keys.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      A Python MCP server that exposes local Ollama models as tools for AI assistants, enabling chat, generation, embeddings, and model management without cloud APIs.
      51 PyPI
      5
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Unified MCP server for managing local model runtimes (Ollama, LM Studio, etc.), enabling provider-agnostic discovery, lifecycle management, hardware-fit checks, and delegated inference.
      22
      516 npm
      Creative Commons Attribution Non Commercial No Derivatives 4.0 International