Skip to main content
Glama
README.md
# agnes-mcp

An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server for the [Agnes AI API](https://agnes-ai.com/doc/overview) by Sapiens AI.

It exposes all four documented core capabilities as MCP tools, integrates **every** Agnes model, and surfaces **all** configurable parameters — including the **1M-token context** window and **4K video** resolution.

- Base URL: `https://apihub.agnes-ai.com/v1` (OpenAI-compatible)
- Auth: `Authorization: Bearer <AGNES_API_KEY>`

## Core capabilities & tools

| # | Capability | Tool(s) | Models |
|---|------------|---------|--------|
| 1 | Text generation & reasoning | `agnes_chat` | `agnes-2.0-flash`, `agnes-1.5-flash` |
| 2 | Image generation & editing | `agnes_image` | `agnes-image-2.1-flash`, `agnes-image-2.0-flash` |
| 3 | Video & audio-video generation (async) | `agnes_video_create`, `agnes_video_query`, `agnes_video_wait` | `agnes-video-v2.0` |
| 4 | Multimodal understanding | `agnes_vision` (+ image input in `agnes_chat`) | `agnes-2.0-flash`, `agnes-1.5-flash` |
| – | Model discovery | `agnes_models` | all |

### Highlights

- **1M context** — `agnes_chat` / `agnes_vision` accept `max_tokens` up to `1,048,576`; `agnes-2.0-flash` supports a 1M-token context window.
- **4K video** — `agnes_video_create` accepts `width`/`height` up to `3840` (multiples of 64). The gateway auto-standardizes to the nearest supported level (480p/720p/1080p/4K).
- **All parameters** — temperature, top_p, max_tokens, stream, tools, tool_choice, Thinking mode (`chat_template_kwargs.enable_thinking` and Anthropic-style `thinking.budget_tokens`), frequency/presence/repetition penalty, stop, seed, image input (URL/data-URI), response_format, return_base64, num_frames (8n+1, ≤441), frame_rate (1–60), negative_prompt, seed, and free-form `extra_body` passthrough.
- **Resilience** — automatic retry with exponential backoff for transient errors (429 capacity/cooldown, 5xx), as recommended by the Agnes error-code docs.
- **Streaming** — `stream: true` is consumed server-side and returned as assembled text.

## Setup

```bash
cd agnes-mcp
npm install
npm run build
```

Configure your API key in `.env` (already created):

```
AGNES_API_KEY=sk-...
```

Optional override:

```
AGNES_BASE_URL=https://apihub.agnes-ai.com/v1
```

## Run

```bash
npm start            # node dist/index.js  (stdio transport)
npm run dev          # tsx src/index.ts
```

## Integrate with an MCP client

Add to your client config (e.g. Claude Desktop / opencode):

```json
{
  "mcpServers": {
    "agnes": {
      "command": "node",
      "args": ["/Users/yingjunchi/Downloads/agnes-mcp/dist/index.js"],
      "env": { "AGNES_API_KEY": "sk-..." }
    }
  }
}
```

Because Agnes AI is OpenAI-compatible, you can also use it directly as a model provider (Base URL `https://apihub.agnes-ai.com/v1`, model `agnes-2.0-flash`).

## Tests

Every capability is verified against the live API (the key in `.env` must be valid):

```bash
npm test                 # all tests
npm run test:chat        # chat: basic, multi-turn, streaming, tools, thinking, 1.5-flash
npm run test:vision      # multimodal understanding
npm run test:image       # text-to-image (url + base64), image-to-image, 2.0-flash
npm run test:video       # create, query, wait-for-completion (slow)
npm run test:models      # model listing
```

The video `wait` test polls until the task completes and asserts the final MP4 URL is returned.

## API quirks handled

- **Image base64**: the documented top-level `return_base64: true` does not actually populate `b64_json`. This server normalizes it to `extra_body.response_format = "b64_json"`, which is the working path for both text-to-image and image-to-image.
- **Image-to-image**: input images are placed in `extra_body.image` (not top-level) per the 2.1 docs.
- **Video query**: uses the recommended `GET /agnesapi?video_id=` (host root, not `/v1`) and falls back to the legacy `GET /v1/videos/{task_id}`.

## Project layout

```
agnes-mcp/
├── src/
│   ├── client.ts   # Agnes API client (4 capabilities, all params, retry)
│   ├── tools.ts    # MCP tool definitions & handlers
│   └── index.ts    # stdio MCP server entry
├── tests/          # live-API tests (models, chat, vision, image, video)
├── .env            # AGNES_API_KEY (and optional overrides)
└── package.json
```

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation4/5

Each tool targets a distinct capability (chat, image, video creation, video query, video wait, vision, model listing). Slight overlap between agnes_chat and agnes_vision regarding vision tasks is clarified in descriptions, so agents can disambiguate.

Naming Consistency3/5

All tools use 'agnes_' prefix, but naming patterns vary: some are single nouns (chat, image, models, vision) while others use verb_noun compounds (video_create, video_query, video_wait). The convention is not fully consistent but still readable.

Tool Count5/5

7 tools is well-scoped for an AI API server covering text, image, video generation, and model discovery. Each tool serves a clear purpose without unnecessary overlap or missing essential operations.

Completeness4/5

Core workflows for text generation, image generation/editing, video generation (async with status polling), and vision understanding are covered. Minor gaps include no explicit tool for deleting or updating generated content, but these are typical for generation APIs.

Maintenance

ActivityInactive
ResponsivenessNo issues