Case Study · UnlockLive IT (internal project)

Connecting Claude to Our Task Manager with a Remote MCP Server (OAuth, Python, Django)

How we built a remote MCP server so our team can ask Claude about projects and tasks, and create or update them, as themselves: personal OAuth sign-in, read and write scopes, 11 tools and a full change history.

  • IndustrySoftware / Internal tools
  • Year2026
  • CountryCanada
Connecting Claude to Our Task Manager with a Remote MCP Server (OAuth, Python, Django) hero screenshot

At-a-glance results

  • 11MCP tools for reading and changing tasks
  • 9,700+tasks across 165 projects reachable from Claude at launch, within each person's permissions
  • 63automated tests across the MCP server and the app side
  • 0user tokens forwarded to the internal system

The challenge

Our team manages thousands of tasks across many client projects in our own task manager. Standups, weekly reports and turning meeting notes into tasks meant a lot of copying between the task manager and AI chats, and every copy-paste risked mistakes or leaking client data into the wrong place. We wanted people to simply ask Claude "What is overdue on my projects?" or "Turn these notes into tasks", with the AI working inside each person's own permissions.

Our solution

We built a remote MCP server in Python and connected it to our Django task manager. The task manager acts as the OAuth authorization server, so each person signs in with their existing account and approves access; the MCP server checks every token before a tool runs. It never forwards the user's token to the app: it calls an internal API with its own service credentials, on behalf of the signed-in person, and the app enforces that person's permissions and records every change in the task history.

  • 11 MCP tools: whoami, workspace metadata, projects, team members, sprints, search, task details, summaries, activity, create, update and comment
  • Personal OAuth sign-in: Claude acts as the signed-in person, never as a shared account
  • Separate read and write scopes; read-only tools are marked as read-only
  • Batch create and update (1 to 50 tasks per call) with an optional comment per change
  • Every change recorded in the task history with who made it
  • User tokens are never forwarded to the internal API
  • Works from Claude as a custom connector and from Claude Code
  • Docker deployment behind HTTPS with a health check

How we built it

  1. 01

    Tool design first

    We listed the jobs people do every day (find tasks, summarise a project, see what changed, create and update tasks, comment) and turned them into 11 specific tools with clear descriptions, compact results and batch limits.

  2. 02

    Personal sign-in with OAuth

    django-oauth-toolkit issues tokens and answers token introspection. The MCP server publishes protected-resource metadata, so Claude finds the login by itself when a person clicks Connect.

  3. 03

    Read and write scopes

    Reading uses one scope and changing data another, so a person can connect with read-only access. Write tools refuse to run without the write scope.

  4. 04

    Safe internal API

    A dedicated internal API for the MCP server applies the acting person's permissions and logs each change to the task history, and only accepts calls from the MCP server itself.

  5. 05

    Tests, then production

    Automated tests cover the MCP server against a fake app and the app side's OAuth, permissions and API. We then deployed the server in Docker behind HTTPS and tested it end to end with a real token before opening it to the team.

Tech stack

  • Model Context Protocol (MCP)
  • Python
  • MCP Python SDK
  • Django
  • django-oauth-toolkit
  • PostgreSQL
  • Docker
  • nginx
  • Claude
  • Claude Code
  • MCP Server Development
  • AI Agent Development
  • Python & FastAPI

Frequently asked questions

Can Claude change data in our system through MCP?

Only if you allow it. In our setup, changing tasks needs a separate write scope, and every change is made as the signed-in person and recorded in the history.

Does every person need their own login?

Yes. Each person signs in with their existing account, so the AI only sees what that person can see. There is no shared key.

Can you build the same for our CRM, ERP or database?

Yes. The same pattern (OAuth sign-in, scoped tools, an internal API that enforces permissions, logging and tests) works for CRMs, ERPs, databases and other internal systems.

Want a result like this?

Talk to the same team that built Connecting Claude to Our Task Manager with a Remote MCP Server (OAuth, Python, Django). We’ll scope your project, give you a fixed-price proposal, and show you the closest analog from our portfolio.

Book a strategy call