Skip to main content

MCP server for TuringMind cloud - provides type-safe tools for authentication, code reviews, and feedback

Project description

TuringMind MCP Server

PyPI version Python 3.10+ License: MIT

Model Context Protocol (MCP) server for TuringMind cloud integration. Provides type-safe tools for Claude to authenticate, upload code reviews, fetch repository context, and submit feedback.

Requires Python 3.10+ (MCP SDK requirement)

Why MCP?

Instead of Claude generating raw JSON and curl commands (which can fail silently due to field name mismatches or malformed data), MCP provides:

  • Type-safe tool definitions — Claude sees the exact schema
  • Validated input — Errors caught before sending
  • No endpoint guessing — Correct URLs hardcoded
  • Better error messages — Clear feedback on failures
  • Simplified login — Device code flow handled by the server

Installation

From PyPI

pip install turingmind-mcp

With pipx (recommended for CLI tools)

pipx install turingmind-mcp

From Source

git clone https://github.com/turingmindai/turingmind-mcp.git
cd turingmind-mcp
pip install -e .

Verify Installation

turingmind-mcp --help

Quick Start

1. Configure Claude Desktop

Add to your Claude Desktop config file:

Platform Path
macOS ~/Library/Application Support/Claude/claude_desktop_config.json
Windows %APPDATA%\Claude\claude_desktop_config.json
Linux ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "turingmind": {
      "command": "turingmind-mcp"
    }
  }
}

2. Restart Claude Desktop

3. Login to TuringMind

In Claude, say: "Log me into TuringMind"

Claude will guide you through the device code flow.

Available Tools

Authentication

Tool Description
turingmind_initiate_login Start device code auth flow (no API key needed)
turingmind_poll_login Complete login and save API key
turingmind_validate_auth Check API key and account status

Code Review

Tool Description
turingmind_upload_review Upload review results to cloud
turingmind_get_context Get memory context for a repository
turingmind_submit_feedback Mark issues as fixed, dismissed, or false positive

Tool Reference

turingmind_initiate_login

Start device code authentication flow. No API key required.

Parameters: None

Returns:

  • verification_url — URL to open in browser
  • user_code — Code to enter when prompted
  • device_code — Use with turingmind_poll_login

turingmind_poll_login

Poll for authentication completion.

Parameters:

Name Type Required Description
device_code string Device code from turingmind_initiate_login

Returns:

  • On success: API key (automatically saved to ~/.turingmind/config)
  • On pending: Status message to wait and retry
  • On expired: Error message to restart flow

turingmind_validate_auth

Validate API key and get account info.

Parameters: None

Returns:

  • Tier (free, pro, team, enterprise)
  • Quota remaining
  • User ID

turingmind_upload_review

Upload code review results to TuringMind cloud.

Parameters:

Name Type Required Description
repo string Repository (owner/repo)
branch string Git branch name
commit string Git commit SHA
review_type "quick" | "deep" Review type (default: quick)
issues array List of issues found
raw_content string Full review as markdown
summary object {critical, high, medium, low} counts
files_reviewed array Files that were reviewed

Issue Schema:

{
  "title": "SQL Injection vulnerability",
  "severity": "critical",
  "category": "security",
  "file": "src/db.py",
  "line": 42,
  "description": "User input passed directly to query",
  "cwe": "CWE-89",
  "confidence": 95
}

turingmind_get_context

Get memory context for a repository.

Parameters:

Name Type Required Description
repo string Repository (owner/repo)

Returns:

  • Recent open issues
  • Hotspot files (frequent issues)
  • Team conventions
  • Known false positive patterns

turingmind_submit_feedback

Submit feedback on a code review issue.

Parameters:

Name Type Required Description
issue_id string Issue ID (e.g., iss_abc123)
action string One of: fixed, dismissed, false_positive
repo string Repository (owner/repo)
file string File path where issue was found
line integer Line number of the issue
pattern string For false_positive: pattern to skip in future
reason string Explanation for the feedback

Actions:

  • fixed — Issue was resolved (tracks time-to-fix metrics)
  • dismissed — Issue isn't important (lowers future priority)
  • false_positive — Not a real issue (adds pattern to memory)

Usage Examples

Login Flow

User: Log me into TuringMind

Claude: I'll start the authentication flow.

[Calls turingmind_initiate_login]

🧠 TuringMind Login Started

Step 1: Open this URL in your browser:
https://app.turingmind.ai/cli-auth?device_code=...

Step 2: Sign in with Google or GitHub

User: Done!

Claude: [Calls turingmind_poll_login with device_code]

✅ Login Successful!
API key has been saved to ~/.turingmind/config

Review with Upload

User: Review my code changes and upload to TuringMind

Claude: [Calls turingmind_validate_auth]
✅ TuringMind Authentication Valid
- Tier: team
- Quota: 495/500 reviews remaining

[Reviews code...]

[Calls turingmind_upload_review]
🧠 Review Uploaded to TuringMind
- Review ID: rev_abc123
- Issues: 3

False Positive Feedback

User: That SQL injection issue was a false positive, we use parameterized queries

Claude: [Calls turingmind_submit_feedback]
🚫 Feedback Submitted
Issue iss_abc123 has been marked as false positive.
Pattern saved: `db.query(sql, params)`
This pattern will be skipped in future reviews.

Configuration

Environment Variables

Variable Description Default
TURINGMIND_API_URL API server URL https://api.turingmind.ai
TURINGMIND_API_KEY API key Read from ~/.turingmind/config
TURINGMIND_DEBUG Enable debug logging 0

Config File

API credentials are stored in ~/.turingmind/config:

export TURINGMIND_API_KEY=tmk_your_key_here
export TURINGMIND_API_URL=https://api.turingmind.ai

Claude Desktop with Custom API URL

{
  "mcpServers": {
    "turingmind": {
      "command": "turingmind-mcp",
      "env": {
        "TURINGMIND_API_URL": "https://api.turingmind.ai"
      }
    }
  }
}

Development

Setup

git clone https://github.com/turingmindai/turingmind-mcp.git
cd turingmind-mcp
pip install -e ".[dev]"

Run Locally

python -m turingmind_mcp.server

Test with MCP Inspector

npx @modelcontextprotocol/inspector turingmind-mcp

Run Tests

pytest

Lint & Format

ruff check .
black .
mypy src/

Troubleshooting

"TURINGMIND_API_KEY not configured"

Run the login flow in Claude, or set the environment variable:

export TURINGMIND_API_KEY=tmk_your_key_here

"Permission Denied"

API key lacks required permission. Re-run login to create a new key with proper permissions.

"Connection Error"

  1. Check that TURINGMIND_API_URL is correct
  2. Verify network connectivity
  3. For local development, ensure backend is running

Claude doesn't see the tools

  1. Verify turingmind-mcp is in your PATH: which turingmind-mcp
  2. Check Claude Desktop config is valid JSON
  3. Restart Claude Desktop completely (Cmd+Q / close from tray)

License

MIT — see LICENSE for details.

Links

Project details


Download files

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

Source Distribution

turingmind_mcp-0.2.0.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

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

turingmind_mcp-0.2.0-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file turingmind_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: turingmind_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for turingmind_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 bbbae566bc1ff91cccbdb5949560da65e98ea2bc7c1beaefd6f16f26d1a01a1f
MD5 c279a0c57a97da1c77d96e09875f8c57
BLAKE2b-256 e85db74117dac2925547e36e28198f96b5cbb4fd656e7817d05302cd42a56a91

See more details on using hashes here.

Provenance

The following attestation bundles were made for turingmind_mcp-0.2.0.tar.gz:

Publisher: publish.yml on turingmindai/turingmind-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file turingmind_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: turingmind_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 14.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for turingmind_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 64dde5c02b106b05a21c87addb3999b44132db44c92ec743547471477d44def2
MD5 50510e06c76ceaeb98413f5aa73b94f0
BLAKE2b-256 7c1312e58e0a5179367adeec12aa4e0a0cc6b9020cab29058e7cd007982ccc9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for turingmind_mcp-0.2.0-py3-none-any.whl:

Publisher: publish.yml on turingmindai/turingmind-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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