Skip to content

feat: implement Chorus.ai MCP server with full API coverage#1

Merged
Ompragash merged 2 commits intomainfrom
chorus-mcp-init
Feb 20, 2026
Merged

feat: implement Chorus.ai MCP server with full API coverage#1
Ompragash merged 2 commits intomainfrom
chorus-mcp-init

Conversation

@Ompragash
Copy link
Contributor

Introduce a complete Model Context Protocol server for the Chorus.ai (ZoomInfo) conversation intelligence platform. The server exposes 39 tools, 6 URI-based resources, and 6 workflow prompts that enable LLMs to interact with sales call data, transcripts, scorecards, and analytics through natural language.

Architecture decisions:

  • JSON:API normalization layer in the API client auto-flattens Chorus responses (data/attributes/id) into plain objects, keeping all 12 tool domain files decoupled from the wire format.
  • Annotation presets (READ_ONLY, CREATE, DELETE) defined as typed constants eliminate repetition across 39 tool registrations while preserving full MCP spec compliance.
  • Dual transport support: stdio (default) for CLI/desktop clients, Streamable HTTP for networked deployments. Transport selected via TRANSPORT env var at startup.

Tools by domain (39 total):
Conversations (5), Users (3), Teams (3), Scorecards (4), Playlists (3), Moments (4 incl. create/delete), Emails (2), Engagements (2), Reports (3), Saved Searches (3), Video Conferences (4 incl. upload/delete), Integrations/Session (3)

Workflow prompts:
chorus_call_analysis, chorus_deal_risk_assessment, chorus_competitive_intelligence, chorus_meeting_summary, chorus_rep_performance_review, chorus_customer_feedback_synthesis

Infrastructure:

  • Shared services: Axios-based API client with auth injection, HTTP error-to-actionable-message mapper, markdown/JSON formatters with CHARACTER_LIMIT truncation
  • Zod schemas with .strict() validation on all tool inputs
  • Pagination via page[size] and cursor on every list endpoint
  • Jest test suite: 125 tests across 9 suites (unit, integration) covering services, all tool domains, and tool registration integrity
  • CI: GitHub Actions matrix testing on Node 20/22/24
  • Release: tag-triggered npm publish with provenance to @opensourceops/chorus-mcp

Introduce a complete Model Context Protocol server for the Chorus.ai
(ZoomInfo) conversation intelligence platform. The server exposes 39
tools, 6 URI-based resources, and 6 workflow prompts that enable LLMs
to interact with sales call data, transcripts, scorecards, and
analytics through natural language.

Architecture decisions:

- JSON:API normalization layer in the API client auto-flattens Chorus
  responses (data/attributes/id) into plain objects, keeping all 12
  tool domain files decoupled from the wire format.
- Annotation presets (READ_ONLY, CREATE, DELETE) defined as typed
  constants eliminate repetition across 39 tool registrations while
  preserving full MCP spec compliance.
- Dual transport support: stdio (default) for CLI/desktop clients,
  Streamable HTTP for networked deployments. Transport selected via
  TRANSPORT env var at startup.

Tools by domain (39 total):
  Conversations (5), Users (3), Teams (3), Scorecards (4),
  Playlists (3), Moments (4 incl. create/delete), Emails (2),
  Engagements (2), Reports (3), Saved Searches (3),
  Video Conferences (4 incl. upload/delete), Integrations/Session (3)

Workflow prompts:
  chorus_call_analysis, chorus_deal_risk_assessment,
  chorus_competitive_intelligence, chorus_meeting_summary,
  chorus_rep_performance_review, chorus_customer_feedback_synthesis

Infrastructure:
- Shared services: Axios-based API client with auth injection, HTTP
  error-to-actionable-message mapper, markdown/JSON formatters with
  CHARACTER_LIMIT truncation
- Zod schemas with .strict() validation on all tool inputs
- Pagination via page[size] and cursor on every list endpoint
- Jest test suite: 125 tests across 9 suites (unit, integration)
  covering services, all tool domains, and tool registration integrity
- CI: GitHub Actions matrix testing on Node 20/22/24
- Release: tag-triggered npm publish with provenance to
  @opensourceops/chorus-mcp
Set isolatedModules, module commonjs, and moduleResolution node in
tsconfig.test.json to satisfy ts-jest's requirement when the base
tsconfig uses module Node16. Production tsconfig unchanged.
@Ompragash Ompragash merged commit 76a0906 into main Feb 20, 2026
3 checks passed
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