planning-center-mcp

planning-center-mcp

Enables AI agents to access Planning Center Online data including worship plans, song library, teams, and volunteer information through natural language queries and direct tools.

Category
访问服务器

README

Planning Center MCP Server

An MCP (Model Context Protocol) server for Planning Center Online Services. Gives AI agents (Claude, etc.) direct access to your worship plans, song library, teams, and volunteer data.

Includes a built-in AI agent (ask_question) that accepts natural language questions and calls tools automatically using a local Ollama model.

Tools

AI Agent

Tool Description
ask_question Ask a natural language question about your PCO data. Uses a local Ollama model to call the appropriate tools and return a human-readable answer.

Services & Plans

Tool Description
get_service_types List all service types
get_plans Paginated plans for a service type (most recent first)
get_plan_items Get songs, headers, and media in a plan
get_plan_team_members Get volunteers assigned to a plan
get_plan_details Get items and team members in one call

Songs & Arrangements

Tool Description
get_songs Paginated song library listing
get_song Get a song by ID or search by title
get_song_schedules Schedule history for a song
get_arrangements List arrangements, or get a specific one by ID
get_keys_for_arrangement Available keys for an arrangement
get_arrangement_attachments List file attachments (PDFs, audio, etc.)
create_song Create a new song

Tags

Tool Description
get_song_tags List all available song tags by group
assign_tags_to_song Tag a song by tag name
find_songs_by_tags Find songs matching tags (AND logic)

File Visibility (Attachment Types)

Tool Description
get_attachment_types List org-level file classification types
create_attachment_type Create custom types (Lead Sheet, Guitar Tab, etc.)
get_team_positions Get teams, positions, and their attachment type mappings
map_positions_to_attachment_types Assign which file types a position can see
enable_attachment_types Toggle position-based file visibility on a service type

Reports (cached data)

Sync

Tool Description
sync_pco_data Sync PCO data (incremental by default, full=True for complete re-sync)
get_sync_status Check when the last sync occurred
get_team_names All team names from synced data

Song Library

Tool Description
song_usage_report Ranked song play counts with optional date range and service type filters
song_detail_report Full song details: arrangements, key-per-schedule history
song_key_usage_report Keys ranked by frequency across all songs in a time period
songs_by_key_report All songs ever played in a specific key (e.g. G, Bb), ranked by count
songs_not_played_report Songs not played in the last N months — sorted by most recently used before the cutoff
songs_played_together_report Songs most frequently paired with a given song in the same service
song_retirement_report Songs that were played frequently in an older window but have since dropped off
service_bpm_flow_report Tempo (BPM) and key progression across recent services, in song order

Service Plans

Tool Description
service_plan_report Recent plans with setlists (including key per song) and team rosters
upcoming_services_report Upcoming plans with confirmed / pending / declined team members
service_position_report Songs most commonly used in a given service position (intro, outro, middle)

Volunteers & People

Tool Description
volunteer_activity_report Volunteer frequency with optional team and date filters
volunteer_decline_report Volunteers with the most declined requests, including decline rate
person_song_keys_report Keys used in plans where a person served, optionally filtered by role
person_song_preferences_report Songs played when a person served, optionally filtered by role

AI Agent: ask_question

The ask_question tool runs a multi-step tool-calling loop using a local Ollama model. It selects and chains the appropriate tools automatically based on your question, then returns a concise, human-readable answer.

How It Works

  1. Your question is sent to the Ollama model along with the schemas for 30 curated read-only tools
  2. The model decides which tools to call and with what parameters
  3. Tool results are fed back to the model
  4. Steps 2–3 repeat (up to 10 iterations) until the model produces a final answer

Configuration

Environment Variable Default Description
OLLAMA_URL http://localhost:11434 Ollama instance URL
AGENT_MODEL mistral-small3.1 Model to use for tool calling

Any model with tool-calling support works. Larger models (24B+) are significantly more reliable at multi-step reasoning. Tested with mistral-small3.1.

Example Questions

Song Library

What are our top 10 most played songs over the last 6 months?
When did we last play "How Great Is Our God"?
What key do we usually play "Blessed Be Your Name" in?
What songs have we not played in the last 3 months?
What songs have we quietly dropped from rotation this year?

Keys & Setlist Planning

What are the most popular keys we use?
What songs can we do in G?
What songs pair well with "Cornerstone"?
What do we usually open with?
What's our typical tempo arc through a service?

Service Plans

What songs are in this Sunday's service?
Show me the last 3 Sunday morning setlists with keys.
Which upcoming services have open volunteer spots?
What did we play on Easter?

Volunteers & Teams

Who are our most active volunteers over the last 3 months?
Who has been declining a lot of service requests lately?
Who is on the worship team this Sunday?
Which team positions are unfilled for next week?

Person-Specific

What keys does [name] play in when on guitar?
What songs does [name] tend to pick when leading worship?
What teams does [name] serve on?

General

When was the data last synced from Planning Center?
What service types do we have?

Prompting Tips

  • Be specific with time ranges: "last 3 months" or "since January" works better than "recently"
  • Name songs directly: Use the song title as it appears in PCO for best results
  • Ask one thing at a time: Multi-part questions ("top songs AND who played last week") can confuse the model — ask them separately
  • For volunteers, specify the team: "Who is on the band this Sunday?" is clearer than "who is volunteering?"
  • Synced data vs live data: Reports (song usage, volunteer activity, upcoming services) query the local MongoDB cache — run a sync first if your data may be stale. Direct lookups (get_song, get_plans) hit PCO live.
  • The agent won't modify data: It only has access to read-only tools. Write operations (creating songs, assigning tags) must be called directly.

Setup

1. Get PCO API Credentials

Create a Personal Access Token at the PCO Developer Portal.

2. Configure

cp .env.example .env
# Edit .env with your PCO credentials, MongoDB password, and Ollama URL

3. Run with Docker (recommended)

docker compose up -d

The MCP endpoint will be available at http://localhost:8080/mcp.

4. Run Locally (alternative)

pip install .
planning-center-mcp

Requires a running MongoDB instance (set MONGO_URI in .env).


Connect to Claude

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "planning-center": {
      "type": "http",
      "url": "http://localhost:8080/mcp"
    }
  }
}

Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "planning-center": {
      "type": "http",
      "url": "http://localhost:8080/mcp"
    }
  }
}

Architecture

PCO API ← pypco ─┬─ services.py   (direct API tools)
                 └─ sync.py ──── MongoDB ─┬─ queries.py ─ reports.py (cached reports)
                                          └─ llm.py (embeddings, optional AI summaries)

agent.py  ─ Ollama (tool-calling loop) ─ dispatches to any registered tool
  • Direct tools (services.py): Hit the PCO API live. No cache needed.
  • Report tools (reports.py): Query local MongoDB for aggregated data. Run sync_pco_data to refresh.
  • Sync (sync.py): Incremental by default — only fetches records updated since the last sync.
  • Agent (agent.py): Accepts a natural language question, builds an Ollama tool-calling loop over 30 curated read-only tools, and returns a plain-text answer.
  • AI features (llm.py): Optional. Enables AI-generated summaries via Ollama.

Development

pip install -e ".[dev]"
pytest

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选