Architecture
Overview
Section titled “Overview”JiraMCP is built as a single-process MCP server that communicates with AI agents via stdio transport. It consists of 9 TypeScript source files totaling 8,313 lines of code.
Component Architecture
Section titled “Component Architecture”AI Agent (Claude, etc.) | | MCP Protocol (stdio) |MCP Server (index.ts - 3,936 lines) | |-- AccountManager (account-manager.ts - 287 lines) | |-- JiraClient (jira-client.ts - 1,948 lines) | |-- ConfluenceClient (confluence-client.ts - 663 lines) | |-- RateLimiter (rate-limiter.ts - 351 lines) |-- OperationVerifier (operation-verifier.ts - 350 lines) |-- Logger (logger.ts - 408 lines) |-- Types (types.ts + confluence-types.ts - 370 lines)Source Files
Section titled “Source Files”| File | Lines | Purpose |
|---|---|---|
index.ts | 3,936 | MCP server, tool definitions, request routing |
jira-client.ts | 1,948 | Jira REST API client (v3 + Agile v1) |
confluence-client.ts | 663 | Confluence REST API client (v2 + v1) |
logger.ts | 408 | Structured logging with metrics |
types.ts | 295 | Jira TypeScript interfaces |
rate-limiter.ts | 351 | Rate limiting with exponential backoff |
operation-verifier.ts | 350 | Post-operation verification |
account-manager.ts | 287 | Multi-account management |
confluence-types.ts | 75 | Confluence TypeScript interfaces |
Data Flow
Section titled “Data Flow”- AI agent sends a tool call via MCP protocol (stdio)
index.tsroutes the request to the appropriate handler- Handler validates input using Zod schemas
AccountManagerprovides the activeJiraClientorConfluenceClient- Client makes HTTP request through
RateLimiter - Rate limiter manages concurrency, retries, and backoff
- Response is parsed and typed
OperationVerifierconfirms mutations (create/update/transition)- Structured result returned to agent via MCP protocol
Loggerrecords metrics throughout the flow
Design Decisions
Section titled “Design Decisions”- Single process: No separate API server — direct stdio communication
- Zod validation: All tool inputs validated at schema level before processing
- Rate limiting as middleware: Wraps all HTTP requests transparently
- Verification by default: Mutations are verified to catch eventual consistency issues
- Multi-account singleton: One
AccountManagerinstance manages all accounts and clients