Skip to content

feat(messaging): add inbox, conversation, search, and send tools#235

Draft
5queezer wants to merge 1 commit intostickerdaniel:mainfrom
5queezer:feature/234-messaging-tools
Draft

feat(messaging): add inbox, conversation, search, and send tools#235
5queezer wants to merge 1 commit intostickerdaniel:mainfrom
5queezer:feature/234-messaging-tools

Conversation

@5queezer
Copy link

Summary

Adds 4 new messaging tools to the LinkedIn MCP server (#234):

  • get_inbox — list recent conversations from messaging inbox
  • get_conversation — read a specific thread by username or thread_id
  • search_conversations — search messages by keyword
  • send_message — send a message to a LinkedIn user

Checklist

Code

  • Add extractor methods to LinkedInExtractor (scraping/extractor.py)
  • Add messaging.py tool registration (tools/messaging.py)
  • Register tools in create_mcp_server() (server.py)
  • Add "messaging" reference kind (scraping/link_metadata.py)

Tests

  • Add mock methods to _make_mock_extractor (tests/test_tools.py)
  • Add TestMessagingTools class (tests/test_tools.py)
  • Add TestMessaging class (tests/test_scraping.py)
  • Add messaging URL classification tests (tests/test_link_metadata.py)
  • Update TestToolTimeouts.tool_names tuple

Docs

  • Update tool table in README.md
  • Update features list in docs/docker-hub.md
  • Add tools to manifest.json

Verify

  • uv run pytest --cov — 297 passed, 74.32% coverage
  • uv run ruff check . && uv run ruff format .
  • uv run ty check
  • uv run pre-commit run --all-files
  • Live test get_inbox
  • Live test get_conversation
  • Live test search_conversations
  • Live test send_message

Test plan

  • Start server: uv run -m linkedin_mcp_server --transport streamable-http --log-level DEBUG
  • Verify get_inbox returns conversation list
  • Verify get_conversation with a known username returns messages
  • Verify search_conversations returns filtered results
  • Verify send_message sends to a test account (⚠️ destructive — first write tool)

Notes

  • send_message is the first write operation in the server. It uses readOnlyHint: false and openWorldHint: true to signal MCP clients to confirm before sending.
  • Messaging tools don't follow the section-config pattern in fields.py — each method navigates directly.
  • LinkedIn may restrict messaging to 1st-degree connections. The tool handles "Message" button absence with a clear error.

Generated with Claude Opus 4.6. Prompt: Implement the following plan: LinkedIn Messaging Tools

🤖 Generated with Claude Code

Closes stickerdaniel#234

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant