Skip to main content

ask-james

Get a second opinion from another LLM — without leaving your assistant.

ask-james is an MCP server that lets any AI assistant (Claude, Kiro, Cursor, etc.) call out to a different LLM for a critical review. Say "ask James what he thinks" and get structured feedback on your plan before you commit.

Example

Here's James in action during a Kiro CLI session:

> I need a list of POI in Paris using OpenStreetMap

Kiro: I'll create a Python script using the Overpass API...

    def get_paris_poi():
        query = """
        [out:json][timeout:25];
        (
          node["tourism"~"attraction|museum|monument|viewpoint"]["name"](area:3600071525);
          way["tourism"~"attraction|museum|monument|viewpoint"]["name"](area:3600071525);
        );
        out center meta;
        """
        # ... fetch and parse response

> Ask James for a second opinion

James:

  Your approach has solid foundations but several issues:

  Key concerns:
  - Filtering is too narrow — only tourism tags will miss landmarks
    tagged as historic, amenity, or leisure
  - Ways/relations don't have direct coordinates  you need out center;
  - "Top 50" is meaningless without defining how to rank POIs

  What looks solid:
  - Using Overpass API is the right approach
  - Querying nodes/ways/relations is correct

  Questions:
  - What exactly counts as a POI for your use case?
  - How should results be sorted  by name, importance, distance?
  - Paris city proper or greater metro area?

The assistant proposed code. James caught the gaps. Now you can decide with full context.

Think about your last implementation — would a second opinion have saved you time?

Quick start

Add this to your MCP host config:

{
  "command": "uvx",
  "args": ["ask-james"],
  "env": {
    "ASK_JAMES_API_KEY": "your-api-key",
    "ASK_JAMES_MODEL": "gpt-4o"
  }
}

That's it. uvx downloads and runs the package automatically.

How it works

┌─────────────┐     "ask James"     ┌─────────────┐
│   Claude    │ ──────────────────► │  ask-james  │
│   / Kiro    │                     │ (MCP server)│
│   / Cursor  │ ◄────────────────── │             │
└─────────────┘    critique back    └──────┬──────┘
                                           │
                                           ▼
                                    ┌─────────────┐
                                    │  Any LLM    │
                                    │ (via LiteLLM)│
                                    └─────────────┘
  • Your assistant sends the proposal to James via MCP
  • James (powered by any LLM you choose) reviews it critically
  • You get structured feedback: concerns, positives, questions, next steps
  • James never rewrites — he only critiques

Pro tip: Use two different frontier models for best results. For example, Claude Opus 4.5 as your primary assistant with GPT-5.2 as James — or vice versa. Different models catch different blind spots.

Configuration

Variable Description
ASK_JAMES_MODEL Model to use (e.g., gpt-4o, claude-3-5-sonnet-20241022)
ASK_JAMES_API_KEY Your API key (works with any provider)

Ask James supports any model supported by LiteLLM — OpenAI, Anthropic, Google, Azure, Ollama, and 100+ others.

Or omit ASK_JAMES_API_KEY and set the provider's native variable (OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.) — LiteLLM picks it up automatically.

When to use James

  • Implementation plans — Before blindly following an assistant's architecture
  • High-stakes changes — Deploys, refunds, irreversible operations
  • Decisions under uncertainty — When you want a dissenting view
  • Code review — Quick sanity check on proposed changes

Host configurations

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "ask-james": {
      "command": "uvx",
      "args": ["ask-james"],
      "env": {
        "ASK_JAMES_API_KEY": "your-api-key",
        "ASK_JAMES_MODEL": "gpt-4o"
      }
    }
  }
}

Kiro

Settings → MCP Tools:

{
  "id": "ask-james",
  "name": "Ask James",
  "command": "uvx",
  "args": ["ask-james"],
  "env": {
    "ASK_JAMES_API_KEY": "your-api-key",
    "ASK_JAMES_MODEL": "gpt-4o"
  }
}

Cursor / Windsurf

mcp-tools.json:

{
  "tools": [
    {
      "name": "Ask James",
      "command": "uvx",
      "args": ["ask-james"],
      "env": {
        "ASK_JAMES_API_KEY": "your-api-key",
        "ASK_JAMES_MODEL": "gpt-4o"
      }
    }
  ]
}

Prompting tips

Just tell your assistant to ask James:

  • "Ask James to critique this plan"
  • "Get a second opinion from James before we proceed"
  • "Have James review this code"

Development

pip install -e .
python -m ask_james  # manual stdio testing

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ask_james-0.1.1.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ask_james-0.1.1-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file ask_james-0.1.1.tar.gz.

File metadata

  • Download URL: ask_james-0.1.1.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ask_james-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e1f98cbdd404e3051521dcd3ac1c66377fff15a744b39d82d68e29ff22c006fd
MD5 18e22a8e11b8ea34020897c8af71a624
BLAKE2b-256 27aac523aef30d518a31f8e85c70ad427e71f5475496d9c355e632d786618a77

See more details on using hashes here.

File details

Details for the file ask_james-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: ask_james-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ask_james-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 668b2ff5874c971a67572e82942893eb4c9c80d87f0e86893f3a0913891c13ab
MD5 6487387eca945664300c1a93e5faa7a7
BLAKE2b-256 aeb6050643c0cd815369ede5e06a44c04ab80fc04a473525ec89de48de3a90c9

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page