OmniPlan MCP Server

OmniPlan MCP Server

Enables Claude to read and analyze project schedule files in OmniPlan (.oplx) and Microsoft Project (.mpp) formats, answering questions about tasks, milestones, resources, and progress.

Category
Visit Server

README

<p align="center"> <img src="https://img.shields.io/badge/macOS-required-blue" alt="macOS"> <img src="https://img.shields.io/badge/python-โ‰ฅ3.10-blue" alt="Python"> <img src="https://img.shields.io/badge/license-MIT-green" alt="License"> <img src="https://img.shields.io/github/v/release/cygnusyang/omniplan-mcp" alt="Release"> </p>

OmniPlan MCP Server

A Model Context Protocol (MCP) server that lets Claude read and analyze project schedule files โ€” OmniPlan (.oplx) and Microsoft Project (.mpp) formats.

Ask Claude questions like:

  • "What's the current project schedule?"
  • "List all milestones and their dates"
  • "Show me tasks related to the robotic arm"
  • "What's the overall progress percentage?"

Features

Feature Description
๐Ÿ“‚ Read .mpp Parse Microsoft Project files via OmniPlan bridge
๐Ÿ“‚ Read .oplx Direct XML parsing (no OmniPlan needed)
๐Ÿ›๏ธ Full hierarchy Groups, tasks, milestones with dates and progress
๐Ÿ” Search Find tasks by keyword across the entire schedule
๐Ÿ‘ค Resources List all human resources and assignments
๐Ÿ“Š Summary Phase overview, progress statistics, timeline
๐Ÿ”’ Safe concurrency Direct AppleScript reading avoids temp-file conflicts when multiple sessions run

Prerequisites

Requirement Notes
macOS Required (for AppleScript/OmniPlan bridge)
Python 3.10+ For running the MCP server
OmniPlan Only needed for .mpp files; .oplx works without it

Install OmniPlan (optional โ€” only for .mpp files)

brew install --cask omniplan

First run: macOS may prompt for Accessibility/Automation permissions when OmniPlan is called via AppleScript. Grant them in System Settings โ†’ Privacy & Security โ†’ Automation.

Quick Start

1. Install

# Option A: One-line installer (recommended)
curl -fsSL https://raw.githubusercontent.com/cygnusyang/omniplan-mcp/main/install.sh | bash

# Option B: Manual clone
git clone https://github.com/cygnusyang/omniplan-mcp.git
cd omniplan-mcp
pip install -e .

2. Configure Claude Code

Add to your ~/.claude/settings.json:

<details> <summary><b>uv run (recommended)</b></summary>

{
  "mcpServers": {
    "omniplan": {
      "command": "uv",
      "args": [
        "run",
        "--directory", "/Users/yourusername/.local/share/omniplan-mcp",
        "omniplan-mcp"
      ],
      "env": {}
    }
  }
}

</details>

<details> <summary><b>pip install (after PyPI publish)</b></summary>

{
  "mcpServers": {
    "omniplan": {
      "command": "uvx",
      "args": ["omniplan-mcp"],
      "env": {}
    }
  }
}

</details>

<details> <summary><b>Direct Python</b></summary>

{
  "mcpServers": {
    "omniplan": {
      "command": "/path/to/python3",
      "args": ["-m", "omniplan_mcp"],
      "env": {
        "PYTHONPATH": "/path/to/omniplan-mcp/src"
      }
    }
  }
}

</details>

3. Restart Claude Code

The MCP server will start automatically. You can now ask Claude about your project files!

Usage Examples

Read a project schedule

ไฝ ๏ผšๅธฎๆˆ‘่ฏปๅ– PLB1011 ้กน็›ฎ่ฎกๅˆ’๏ผŒ็œ‹็œ‹ๆœ‰ๅ“ชไบ›้˜ถๆฎต
Claude๏ผš่ฐƒ็”จ read_schedule โ†’ ๆ˜พ็คบๅฎŒๆ•ดไปปๅŠกๆ ‘

List milestones

ไฝ ๏ผšๅˆ—ๅ‡บๆ‰€ๆœ‰้‡Œ็จ‹็ข‘่Š‚็‚น
Claude๏ผš่ฐƒ็”จ list_milestones โ†’ ๆ˜พ็คบๆ‰€ๆœ‰ โ—‡ ้‡Œ็จ‹็ข‘

Search for tasks

ไฝ ๏ผšๆœ็ดขๆ‰€ๆœ‰ๅ…ณไบŽ"ๆœบๆขฐ่‡‚"็š„ไปปๅŠก
Claude๏ผš่ฐƒ็”จ search_tasks โ†’ ๆ˜พ็คบๅŒน้…็š„ไปปๅŠกๅˆ—่กจ

Project summary

ไฝ ๏ผš่ฟ™ไธช้กน็›ฎ็š„ๆ•ดไฝ“่ฟ›ๅบฆๆ€Žไนˆๆ ท๏ผŸ
Claude๏ผš่ฐƒ็”จ schedule_summary โ†’ ๆ˜พ็คบ้˜ถๆฎตๆฆ‚่งˆๅ’Œ่ฟ›ๅบฆ็ปŸ่ฎก

Tools Reference

Tool Description Parameters
read_schedule Full task hierarchy with dates and progress filepath (required), format: tree/flat/json
list_milestones All milestone tasks filepath
list_resources All human resources filepath, detail: simple/full
search_tasks Search tasks by keyword filepath, keyword
schedule_summary Phase overview and progress stats filepath
get_task_detail Detailed info about a specific task filepath, task_id or task_name
get_resource_detail Detailed info about a specific resource filepath, resource_name
list_violations All scheduling conflicts/violations filepath
list_assignments All resource-to-task assignments filepath
list_dependencies All task dependency relationships filepath
get_schedule_settings Scheduling granularity & working hours (reads active OmniPlan document)
evaluate_omniplan_script Run Omni Automation JS in OmniPlan script (JavaScript code)
export_schedule Export schedule to various formats filepath, format (optional), output_path (optional)
lookup_task Find task by name, get its numeric ID search_name
set_task_completed Set task to 100% complete task_id, include_subtree
set_task_completed_by_name Set task to 100% complete by name task_name, include_subtree
add_dependency Add finish-to-start dependency dependent_task_id, prerequisite_task_id
remove_dependency Remove a dependency dependent_task_id, prerequisite_task_id
set_task_duration Change task duration task_id, duration_seconds
clear_constraint_date Remove locked start date task_id
rename_task Rename a task task_id, new_name
delete_task Delete a task and its children task_id
add_task Add a new task under a parent parent_task_id, task_name, duration_seconds (optional)
save_document Save the OmniPlan document (none)

New in v0.4.0

  • 12 new write-operation tools โ€” Now you can modify schedules directly from Claude:
    • lookup_task โ€” Find any task by name to get its numeric ID
    • set_task_completed / set_task_completed_by_name โ€” Mark tasks as 100% complete
    • add_dependency / remove_dependency โ€” Manage task dependencies (prerequisites)
    • set_task_duration โ€” Adjust task durations
    • clear_constraint_date โ€” Remove locked/constraint dates
    • rename_task / delete_task / add_task โ€” Structure editing
    • save_document โ€” Persist changes to disk
  • Bug fixes: .oplx parsing now prefers Actual.xml (fixes stale backup reads), outline_depth computed from hierarchy, percent-complete derived from effort-done/effort ratio, task_status computed for .oplx tasks, evaluate_javascript quotes properly escaped
  • Parser robustness: build_task_tree handles both string and integer parent_ids

How It Works

.mpp file โ”€โ”€โ†’ OmniPlan (AppleScript direct read) โ”€โ”€โ†’ pipe-delimited records โ”€โ”€โ†’ Claude
                          โ†‘
.oplx file โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€ direct XML parsing โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

For .oplx files

Direct XML parsing โ€” fast, no external dependencies.

For .mpp files

  1. MCP server opens the .mpp file in OmniPlan via the macOS open command
  2. Reads all project data (tasks, resources, dates, progress) directly from OmniPlan's in-memory object model via AppleScript
  3. Parses the pipe-delimited output into structured records
  4. Closes the document

No temporary files are created โ€” data is read directly from OmniPlan's in-memory model.

Project Structure

omniplan-mcp/
โ”œโ”€โ”€ install.sh                  # One-click installer
โ”œโ”€โ”€ pyproject.toml              # Package metadata (PyPI-ready)
โ”œโ”€โ”€ README.md                   # This file
โ”œโ”€โ”€ LICENSE                     # MIT license
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ omniplan_mcp/
โ”‚       โ”œโ”€โ”€ __init__.py         # Package version
โ”‚       โ”œโ”€โ”€ __main__.py         # CLI entry point
โ”‚       โ”œโ”€โ”€ server.py           # MCP server (tools & handlers)
โ”‚       โ””โ”€โ”€ parser.py           # .mpp (AppleScript) / .oplx (XML) parsing
โ””โ”€โ”€ tests/
    โ””โ”€โ”€ test_parser.py          # Unit tests

Development

# Clone
git clone https://github.com/cygnusyang/omniplan-mcp.git
cd omniplan-mcp

# Install in editable mode
pip install -e .

# Run tests
python -m pytest tests/

# Run the server directly (stdio)
python -m omniplan_mcp

Publishing to PyPI

Published automatically via GitHub Actions (Trusted Publisher) when a tag is pushed:

git tag v0.1.0
git push origin v0.1.0

Manual build (for testing):

pip install build
python -m build

Requirements

  • Python 3.10+
  • macOS (for OmniPlan AppleScript bridge)
  • OmniPlan (only for .mpp files; optional for .oplx)

Limitations

  • .mpp parsing requires OmniPlan to be installed
  • Only supports macOS (AppleScript dependency)
  • Does not modify .mpp files โ€” read-only

License

MIT License โ€” see LICENSE for details.

Related

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured