Skip to main content

PyPI License: MIT Python 3.10+

linkedin-scheduler-remote

Remote MCP server wrapping linkedin-mcp-scheduler with LinkedIn OAuth 2.0 and Streamable HTTP transport — designed for Claude.ai connectors.

How it works

Claude.ai ──HTTP+Bearer──> linkedin-scheduler-remote ──LinkedIn API──> LinkedIn
                                      │
                                imports linkedin-mcp-scheduler's FastMCP (all 8 tools)
                                patches get_client() with per-request ContextVar
                                adds LinkedIn OAuth + /health + /oauth/callback

Three-party OAuth: Claude <-> this server <-> LinkedIn. Each user authorizes their own LinkedIn account via OAuth. The server stores per-user LinkedIn access tokens (encrypted at rest).

Prerequisites

  1. A LinkedIn Developer App at LinkedIn Developer Portal:
    • Create an app (or use existing)
    • Under Auth settings, add authorized redirect URL: {BASE_URL}/oauth/callback
    • Note the Client ID and Client Secret
    • Ensure the app has the products: "Share on LinkedIn" and "Sign In with LinkedIn using OpenID Connect"
  2. Scopes required: openid, profile, email, w_member_social

Setup

git clone https://github.com/ldraney/linkedin-scheduler-remote.git
cd linkedin-scheduler-remote
cp .env.example .env
# Edit .env with your LinkedIn OAuth credentials, BASE_URL, and SESSION_SECRET
make install
make run

Environment Variables

Variable Description
LINKEDIN_OAUTH_CLIENT_ID LinkedIn app Client ID
LINKEDIN_OAUTH_CLIENT_SECRET LinkedIn app Client Secret
SESSION_SECRET Random secret for encrypting token store
BASE_URL Public HTTPS URL where this server is reachable
HOST Bind address (default: 127.0.0.1)
PORT Listen port (default: 8002)

Verification

curl http://127.0.0.1:8002/health                                    # {"status": "ok"}
curl http://127.0.0.1:8002/.well-known/oauth-authorization-server    # OAuth metadata
curl -X POST http://127.0.0.1:8002/mcp                               # 401 (auth required)

Tools (8)

All scheduling tools from linkedin-mcp-scheduler are exposed:

  • schedule_post — Schedule a LinkedIn post for future publication
  • list_scheduled_posts — List posts with optional status filter
  • get_scheduled_post — Get details of a scheduled post
  • cancel_scheduled_post — Cancel a pending post
  • update_scheduled_post — Edit pending post fields
  • reschedule_post — Change the scheduled time
  • retry_failed_post — Reset failed posts to pending
  • queue_summary — Get queue statistics

Deploying

Standalone

Use any HTTPS tunnel (Tailscale Funnel, ngrok, Cloudflare Tunnel) to expose the server publicly, then add the URL as a Claude.ai connector.

A systemd service file is provided in systemd/linkedin-scheduler-mcp-remote.service.

Kubernetes (production)

Production deployment is managed by mcp-gateway-k8s, which runs this server as a pod with Tailscale Funnel ingress.

Design Notes

The scheduler-remote differs from gcal/notion remotes in one key way: there's a daemon (linkedin-mcp-scheduler-daemon) that publishes posts to LinkedIn. Currently operates in single-user mode — the daemon uses its own env-var credentials. Multi-user daemon support (per-user credentials stored with each post) is a future enhancement.

Privacy

See PRIVACY.md for our privacy policy.

License

MIT

Metadata

Release files for linkedin-scheduler-remote-ldraney 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for linkedin-scheduler-remote-ldraney 0.2.0
File Size Uploaded
linkedin_scheduler_remote_ldraney-0.2.0.tar.gz 6.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for linkedin-scheduler-remote-ldraney 0.2.0
File Interpreter ABI Platform
linkedin_scheduler_remote_ldraney-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.1 kB

Release files / linkedin_scheduler_remote_ldraney-0.2.0.tar.gz

Download URL linkedin_scheduler_remote_ldraney-0.2.0.tar.gz
Size 6.0 kB
Tags Source
SHA-256 checksum
How to use checksums
ccfb5eda174327e156e91f9ac3c3aad1d011a0169b7e9699c54955910f3df73a
BLAKE2b-256 checksum
How to use checksums
55f294cb9dadfd055239d20e7d6d25ad3bd12dfaf7bbd76e3b757a732eda7a4a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 20, 2026.

Transparency log

Release files / linkedin_scheduler_remote_ldraney-0.2.0-py3-none-any.whl

Download URL linkedin_scheduler_remote_ldraney-0.2.0-py3-none-any.whl
Size 7.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
298a776a98a12914df93e58fad7cbda929b565eb6ede0b3d76fd91f8d3d609c1
BLAKE2b-256 checksum
How to use checksums
ee4becadd6619e48e75d2af3a552a82865af5dfc00f0d8de990370dd7d766f78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 20, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page