MCP API Tokens
MCP (Model Context Protocol) lets you connect AI assistants to your church data. Ask Claude, Cursor, Perplexity, or any MCP-compatible client about your members, events, prayers, and more — in natural language.
What you can do
Once connected, you can ask your AI assistant things like:
- "How's our church doing this week?"
- "Who's waiting to join the church? Approve the new ones."
- "Create a prayer meeting for Friday at 7 PM."
- "What songs are in our worship library?"
- "Any flagged prayers that need moderation?"
- "Post an announcement about Sunday's service."
- "Who registered for the youth event?"
The AI pulls live data from your church — not a stale snapshot.
Prerequisites
- Kingdom Plan subscription (MCP is included on this plan)
- Node.js 18+ on the machine running your AI client
- MCP token — created in the Church Admin app
Step 1 — Create a token
In the Nlarj for Churches app:
- Settings → API Tokens → New Token
- Give it a label (e.g.
Claude Desktop,Cursor,Perplexity) - Pick an expiry: 1 day, 3 days, or 7 days
- Tap Generate Token
- Copy the token immediately — it starts with
ohlmcp_and is shown only once
Once you close the dialog, the full token is never shown again. Copy it now. Lose it and you'll need to create a new one.
Step 2 — Connect your AI client
Install and run the MCP server via npx — no global install needed.
Claude Desktop
Edit claude_desktop_config.json:
- macOS —
~/Library/Application Support/Claude/claude_desktop_config.json - Windows —
%APPDATA%\Claude\claude_desktop_config.json - Linux —
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"ourholylife": {
"command": "npx",
"args": ["-y", "@nlarj/mcp-server", "--token", "ohlmcp_YOUR_TOKEN"]
}
}
}
Restart Claude Desktop. Your church tools appear in the 🔧 menu.
Cursor IDE
Settings → MCP Servers → Add:
{
"ourholylife": {
"command": "npx",
"args": ["-y", "@nlarj/mcp-server", "--token", "ohlmcp_YOUR_TOKEN"]
}
}
Claude Code
Add to .claude/mcp.json:
{
"mcpServers": {
"ourholylife": {
"command": "npx",
"args": ["-y", "@nlarj/mcp-server", "--token", "ohlmcp_YOUR_TOKEN"]
}
}
}
Perplexity
Perplexity connects directly to the Nlarj MCP server over HTTPS — no local install needed. Custom connectors work inside Perplexity Spaces only (not regular chat).
Connectors → Add Custom Connector:
| Field | Value |
|---|---|
| Name | Nlarj |
| Description | Church management — members, events, prayers, analytics |
| MCP Server URL | https://mcp.nlarj.app/mcp |
Expand Advanced:
| Field | Value |
|---|---|
| Authentication | API Key (dropdown) |
| api-key | ohlmcp_YOUR_TOKEN (paste only the token, no prefix) |
| Transport | Streamable HTTP (dropdown) |
Check "I understand custom connectors can introduce risks" and click Add.
Then open a Space → Settings → Connectors and enable Nlarj. Chat inside that Space to use it.
Create a separate token labeled "Perplexity" in the admin app. Don't share the same token across multiple AI clients.
ChatGPT / OpenAI
ChatGPT custom connectors use the same remote MCP endpoint:
- MCP Server URL:
https://mcp.nlarj.app/mcp - Authentication: Bearer token —
ohlmcp_YOUR_TOKEN
Environment variable (alternative)
For local clients (Claude Desktop, Cursor), you can set the token as an env var instead of --token:
export OURHOLYLIFE_TOKEN=ohlmcp_YOUR_TOKEN
npx -y @nlarj/mcp-server
This is useful when you don't want the token in your config file on disk.
The 26 tools
MCP clients get 29 tools covering every major part of the church.
Dashboard
| Tool | Description |
|---|---|
get_dashboard | Church overview — members, events, plan |
Members
| Tool | Description |
|---|---|
list_members | All church members with contact info |
list_pending_members | Members waiting for approval |
approve_member | Approve a pending join request |
reject_member | Reject a pending request |
Announcements
| Tool | Description |
|---|---|
list_announcements | Recent announcements |
create_announcement | Post a new announcement (with optional push notification) |
delete_announcement | Remove an announcement |
Events
| Tool | Description |
|---|---|
list_events | Upcoming events |
create_event | Schedule a new event |
list_event_registrations | Who registered for an event |
Groups
| Tool | Description |
|---|---|
list_groups | Church groups (ministries, small groups, prayer circles) |
get_group | Details of a specific group |
list_group_members | Members in a group |
Prayer
| Tool | Description |
|---|---|
list_reported_prayers | Flagged or reported prayers |
prayer_stats | Prayer activity stats |
moderate_prayer | Remove an inappropriate prayer |
Worship & Giving
| Tool | Description |
|---|---|
list_worship_songs | Song library |
get_giving_config | Your configured payment methods |
Visitors & Volunteers
| Tool | Description |
|---|---|
list_connect_submissions | Visitor connect cards |
list_volunteer_submissions | Volunteer signups |
update_submission_status | Update visitor/volunteer status |
add_submission_note | Add a note to a submission |
Analytics
| Tool | Description |
|---|---|
analytics_chart | Generate a specific chart (21 available: members, events, prayers, groups, volunteers, sermons, streaming, Bible plans, trivia, health, predictions) |
analytics_report | Full analytics dashboard — all 21 charts and insights in one call (monthly, quarterly, or annual) |
analytics_alerts | Active alerts and anomalies detected across your church data |
Global Events
| Tool | Description |
|---|---|
list_global_events | Platform-wide events |
create_global_event | Create a global event |
list_global_event_attendees | Global event attendees |
Security
| Control | What it does |
|---|---|
| SHA-256 token hashing | Tokens are stored as hashes; the raw value only exists in your config file |
| Rate limiting | Max 60 requests per minute per token |
| Short expiry | 1-7 days maximum; tokens auto-expire and can be revoked anytime |
| Tenant isolation | Each token is scoped to one church; no cross-church access |
| E2E chat privacy | Group chat messages are encrypted — not exposed through MCP |
| Input sanitization | HTML is stripped, SSRF is blocked, only whitelisted fields accepted |
Token hygiene
- Create a separate token per AI client (one for Claude Desktop, another for Cursor, etc.)
- Use short expiry (1-3 days) unless you have a persistent setup
- Revoke tokens for clients you stop using — Settings → API Tokens → Delete
- If a device is lost or compromised, revoke every token on it immediately
- Never paste tokens in chat, email, tickets, or screenshots
See Phishing & Security for more.
REST API (alternative)
If you're integrating with a non-MCP tool (ChatGPT custom GPT, Zapier, an in-house script), use the REST API directly with the same ohlmcp_ token:
- Swagger UI: api.nlarj.app/api/v1/church/docs — paste your token into the Authorize dialog to explore interactively.
- OpenAPI spec: fetch with your token —
curl -H "Authorization: Bearer ohlmcp_YOUR_TOKEN" https://api.nlarj.app/api/v1/church/openapi.json(the endpoint requires auth; clicking the URL in a browser returns401).
Example:
curl -H "Authorization: Bearer ohlmcp_YOUR_TOKEN" \
https://api.nlarj.app/api/v1/church/dashboard
Every MCP tool has a matching REST endpoint.
Troubleshooting
"Invalid or expired token" — Token expired, was revoked, or was typed incorrectly. Tokens start with ohlmcp_. Create a new one.
"IP mismatch. Revoke and create a new token." — The token was auto-bound to a different IP on first use. Revoke this token and create a new one from the current machine.
"Rate limit exceeded. Max 60 calls per minute." — You (or the AI) are hammering the API. Wait a minute and retry, or split work across multiple tokens.
Tools don't appear in Claude Desktop — Fully quit and relaunch Claude Desktop. MCP servers are only loaded at startup, not on config reload.
npx hangs or fails — Check node --version is 18 or higher. On Windows, make sure Node is on your PATH.