MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

MCP server exposing UF NaviGator AI as Claude Code tools

Created 3/9/2026
Updated about 10 hours ago
Repository documentation and setup instructions

UF NaviGator MCP Server

An MCP server that exposes UF NaviGator AI — the University of Florida's OpenAI-compatible AI API — as tools for Claude Code, Claude Desktop, or any MCP client.

Community project — not officially maintained by UF IT. Requires a valid NaviGator API key.

Disclaimer: This is a personal project provided as-is. Most of the code was generated by AI coding agents, which may introduce unexpected bugs or security issues. I am not responsible for any problems arising from its use. Comments and feedback are welcome — feel free to open an issue.


Example Use Cases

  • Cross-check research with a second model. Build a Claude Code skill that sends a key argument to GPT or Gemini via NaviGator for an independent sanity check.
  • Generate images from a coding workflow. Ask Claude Code to create a diagram or figure using DALL-E through NaviGator, without leaving your terminal.
  • Transcribe a lecture recording. Pass an audio file to NaviGator's Whisper endpoint and get a transcript back — all from within Claude Desktop.
  • Compare model outputs side by side. Send the same prompt to multiple NaviGator models (GPT, Gemini, Llama) and diff the responses in one conversation.
  • Embed text for semantic search. Generate embeddings for a batch of documents using NaviGator's embedding models, then use them downstream in your own pipeline.

What is UF NaviGator?

NaviGator is UF's self-service AI toolkit providing API access to GPT, Gemini, Claude, Llama, image generation, speech, and embedding models — all through your UF credentials. It is part of the broader UF AI initiative that includes NaviGator Chat, NaviGator Notebook, and more.

For a list of available models, see the NaviGator Models documentation.


Step-by-Step Setup Guide

Step 1: Install Node.js

You need Node.js 18 or later. Download from nodejs.org or use a package manager:

# Windows
winget install OpenJS.NodeJS.LTS

# macOS
brew install node

# Ubuntu/Debian

sudo apt install nodejs npm

Verify the installation:

node --version   # should print v18.x or higher
npm --version    # should print 9.x or higher

Step 2: Get a UF NaviGator API key

  1. Go to the NaviGator API key portal
  2. Log in with your GatorLink credentials
  3. Create a new API key and copy it (you won't be able to see it again)

If you need a custom budget or team access, submit a service request.

For a walkthrough, see the NaviGator Quickstart Guide.

Step 3: Install the MCP server

npm install -g uf-navigator-mcp

Or skip global install and use npx uf-navigator-mcp to run it on demand.

Step 4: Set your API key

Choose one of the following:

Option A — Environment variable (recommended):

# Linux / macOS — add to ~/.bashrc or ~/.zshrc
export UF_NAVIGATOR_API_KEY="your-key-here"

# Windows (PowerShell, persists for current user)
[Environment]::SetEnvironmentVariable("UF_NAVIGATOR_API_KEY", "your-key-here", "User")

Option B — Key file:

# Linux / macOS
mkdir -p ~/.config/uf-navigator-mcp
echo "your-key-here" > ~/.config/uf-navigator-mcp/key
chmod 600 ~/.config/uf-navigator-mcp/key

Option C — At runtime: Use the navigator_set_api_key tool after connecting (in-memory by default; pass persist: true to save to disk).

Step 5: Connect to your AI client

Claude Code (CLI)

claude mcp add uf-navigator -- npx uf-navigator-mcp

Or with an inline API key:

claude mcp add uf-navigator --env UF_NAVIGATOR_API_KEY=your-key-here -- npx uf-navigator-mcp

Claude Desktop

Add to your config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "uf-navigator": {
      "command": "npx",
      "args": ["uf-navigator-mcp"],
      "env": {
        "UF_NAVIGATOR_API_KEY": "your-key-here"
      }
    }
  }
}

Restart Claude Desktop after saving.

Other MCP Clients

This server uses stdio transport. Point any MCP client at npx uf-navigator-mcp with UF_NAVIGATOR_API_KEY in the environment.

Step 6: Verify

Ask your AI assistant:

"Use the health_check tool to verify the UF NaviGator connection."

You should see a response confirming the API key is present, the base URL is reachable, and models are available.


Key file locations

| OS | Config directory | | ------- | ----------------------------------------------------------------------------- | | Linux | $XDG_CONFIG_HOME/uf-navigator-mcp/ (default: ~/.config/uf-navigator-mcp/) | | macOS | ~/Library/Application Support/uf-navigator-mcp/ | | Windows | %APPDATA%\uf-navigator-mcp\ |


Aliases

No aliases are created by default. Use navigator_set_alias to create your own:

"Create an alias my-gpt pointing to gpt-4o"

Aliases are stored in your personal config directory (see Key file locations) as aliases.json. See aliases.example.json for a sample:

{
  "latest_openai": "gpt-5.2",
  "latest_google": "gemini-3.1-pro"
}

This is useful for keeping agent prompts stable — point aliases like latest_openai at whatever model is current, and update the alias when new models are released without changing your prompts.


Available Tools

Inference

| Tool | Description | | -------------------------- | ---------------------------------------- | | navigator_chat | Chat completions (streaming supported) | | navigator_embeddings | Text embeddings | | navigator_image_generate | Image generation (DALL-E compatible) | | navigator_speech_to_text | Audio transcription (Whisper-compatible) | | navigator_text_to_speech | Text-to-speech synthesis |

Model Management

| Tool | Description | | ------------------------------- | ------------------------------------------ | | navigator_list_models | List available models (cached, filterable) | | navigator_refresh_models | Force live refresh of model list | | navigator_get_model_specs | Fetch a model's spec card | | navigator_refresh_model_index | Refresh specs for all cached models |

Aliases

| Tool | Description | | ------------------------- | ------------------------- | | navigator_get_aliases | View all alias mappings | | navigator_set_alias | Create or update an alias | | navigator_resolve_model | Resolve alias to model ID | | navigator_delete_alias | Remove an alias |

Compliance, Cost & Health

| Tool | Description | | ------------------------------------- | ------------------------------------------------------- | | navigator_check_data_classification | Check model approval for a UF data classification level | | dry_run_cost_estimate | Estimate token count and cost without calling the API | | health_check | Verify API key, connectivity, and model endpoint | | navigator_set_api_key | Update API key at runtime (in-memory by default) |


Environment Variables

| Variable | Required | Default | Description | | ----------------------- | -------- | ------------------------------ | ---------------------- | | UF_NAVIGATOR_API_KEY | Yes* | — | Your NaviGator API key | | UF_NAVIGATOR_BASE_URL | No | https://api.ai.it.ufl.edu/v1 | API base URL |

Required unless using a key file or navigator_set_api_key.


Security

  • API keys are never logged, emitted in tool output, or committed to the repo.
  • redactKey() scrubs the key from all error messages before logging.
  • All logs go to stderr only (stdout is reserved for MCP protocol).
  • Key files are written with mode 0o600. On Windows, Node.js ignores POSIX mode bits — files inherit parent directory ACLs.
  • The .env file is gitignored.

Data Classification

UF NaviGator models are approved for specific data classification levels. Use navigator_check_data_classification to verify a model is approved for your data before sending it.

| Level | Sensitivity | Examples | | ---------------- | ----------- | ------------------------------------------ | | Public | Lowest | Published research, course catalogs | | Sensitive | Low | Internal emails, unpublished drafts | | Confidential | Medium | Student records (FERPA), HR data | | Restricted | High | Financial data, export-controlled research | | Regulated | Highest | HIPAA, PCI, classified information |


Development

git clone https://github.com/zoutianxin1/uf-navigator-mcp.git
cd uf-navigator-mcp
npm install
npm run build
npm test

| Command | Description | | --------------- | ---------------------------------- | | npm run dev | Run with tsx (no build step) | | npm test | Unit tests (no network required) | | npm run smoke | End-to-end test (requires API key) | | npm run build | Compile TypeScript to dist/ |


UF NaviGator Resources

| Resource | URL | | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | NaviGator Toolkit overview | https://it.ufl.edu/ai/navigator-toolkit/ | | API key portal | https://api.ai.it.ufl.edu/ui | | Available models | https://docs.ai.it.ufl.edu/docs/navigator_models/ | | Quickstart guide | https://docs.ai.it.ufl.edu/docs/navigator_toolkit/getting_started/quickstart/ | | Full documentation | https://docs.ai.it.ufl.edu/ | | Text generation API | https://docs.ai.it.ufl.edu/docs/navigator_toolkit/capabilities/text_generation/ | | Image generation API | https://docs.ai.it.ufl.edu/docs/navigator_toolkit/capabilities/image_generation/ | | Function calling API | https://docs.ai.it.ufl.edu/docs/navigator_toolkit/capabilities/function_calling/ | | Changelog | https://docs.ai.it.ufl.edu/docs/changelog/ | | Service request (custom budgets) | https://ufl.teamdynamix.com/TDClient/33/IT-Portal/Requests/ServiceDet?ID=413 | | UF AI hub | https://it.ufl.edu/ai/ | | NaviGator Chat | https://it.ufl.edu/ai/navigator-chat/ | | NaviGator Notebook | https://it.ufl.edu/ai/navigator-notebook/ | | UF AI FAQ | https://ai.ufl.edu/teaching-with-ai/faqs/ | | AI governance & privacy | https://privacy.ufl.edu/laws-and-regulations/ai-governance/ | | UF Libraries AI guide | https://guides.uflib.ufl.edu/ai | | Model Context Protocol | https://modelcontextprotocol.io/ |


Troubleshooting

| Problem | Solution | | ------------------------------- | ------------------------------------------------------------------------------------- | | "API key not found" | Set UF_NAVIGATOR_API_KEY env var, create a key file, or use navigator_set_api_key | | Tools don't appear in Claude | Restart Claude Desktop/Code after config changes | | "Network error" on health check | Check that you can reach api.ai.it.ufl.edu (may require UF VPN) | | Model not found | Run navigator_refresh_models to update the model cache | | Stale specs | Run navigator_refresh_model_index or wait for the 24-hour TTL |


License

MIT

Quick Setup
Installation guide for this server

Install Package (if required)

npx @modelcontextprotocol/server-uf-navigator-mcp

Cursor configuration (mcp.json)

{ "mcpServers": { "zoutianxin1-uf-navigator-mcp": { "command": "npx", "args": [ "zoutianxin1-uf-navigator-mcp" ] } } }