novaposhta
MCP Server for Nova Poshta API integration with AI assistants
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"@shopana/novaposhta-mcp-server": {
"args": [
"@shopana/novaposhta-mcp-server@0.0.1-alpha.7"
],
"command": "npx"
}
}
}
可用工具 (5 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
tavily_search 14 个参数 需填 1 项
Search the web for current information on any topic. Use for news, facts, or data beyond your knowledge cutoff. Returns snippets and source URLs.
必填参数:query
tavily_extract 6 个参数 需填 1 项
Extract content from URLs. Returns raw page content in markdown or text format.
必填参数:urls
tavily_crawl 11 个参数 需填 1 项
Crawl a website starting from a URL. Extracts content from pages with configurable depth and breadth.
必填参数:url
tavily_map 8 个参数 需填 1 项
Map a website's structure. Returns a list of URLs found starting from the base URL.
必填参数:url
tavily_research 2 个参数 需填 1 项
Perform comprehensive research on a given topic or question. Use this tool when you need to gather information from multiple sources to answer a question or complete a task. Returns a detailed response based on the research findings.
必填参数:input
服务介绍
@shopana/carrier-api
Modern type-safe API clients for shipping carriers
Features 鈥� Packages 鈥� Quick Start 鈥� Documentation 鈥� Contributing
馃殌 Overview
A production-ready monorepo containing enterprise-grade TypeScript API clients for shipping carriers. Built with modern architecture patterns, each client features plugin-based design, full type safety, and transport-agnostic implementation.
馃幆 Why Carrier API?
- 鉁� Type-Safe: Complete TypeScript coverage with strict typing
- 馃攲 Plugin Architecture: Use only what you need, tree-shake the rest
- 馃寪 Universal: Works in Node.js, browsers, and edge runtimes
- 馃帹 Transport-Agnostic: Bring your own HTTP client
- 馃 AI-Ready: MCP server for Claude and other AI assistants
- 馃摝 Zero Config: Sensible defaults, works out of the box
馃摝 Packages
Carrier API Clients
@shopana/novaposhta-api-client
Nova Poshta API client with plugin architecture and complete type safety.
Features:
- 馃敡 Plugin-based services (Address, Reference, Tracking, Waybill, Counterparty, ContactPerson)
- 馃摏 Namespaced API:
client.address.*,client.reference.*,client.tracking.*,client.waybill.* - 馃幆 Full TypeScript support with strict typing
- 馃攧 Transport-agnostic design
- 馃尦 Tree-shakeable - only bundle what you use
- 馃摉 Comprehensive documentation with examples
npm i @shopana/novaposhta-api-client @shopana/novaposhta-transport-fetch
AI Integration
@shopana/novaposhta-mcp-server
Model Context Protocol (MCP) server for integrating Nova Poshta with AI assistants like Claude.
Features:
- 馃 Full MCP 1.22+ support
- 馃搷 Comprehensive tracking and address search
- 馃摑 Waybill creation and management
- 馃摎 Reference data access
- 馃攧 Dual transport (stdio + HTTP)
- 馃彚 Production-ready with enterprise-grade error handling
npx @shopana/novaposhta-mcp-server
Transport Implementations
@shopana/novaposhta-transport-fetch
Fetch-based HTTP transport for Nova Poshta API client.
Features:
- 馃寪 Cross-platform (Node.js, browsers, edge runtimes)
- 鈿欙笍 Configurable headers and fetch implementation
- 馃毇 AbortSignal support for request cancellation
- 馃摝 Minimal dependencies
- 鈿� Lightweight and fast
npm i @shopana/novaposhta-transport-fetch
馃殌 Quick Start
Nova Poshta API Client
import { createClient, AddressService, ReferenceService, TrackingService } from '@shopana/novaposhta-api-client';
import { createFetchHttpTransport } from '@shopana/novaposhta-transport-fetch';
// Create client with plugins
const client = createClient({
transport: createFetchHttpTransport(),
baseUrl: 'https://api.novaposhta.ua/v2.0/json/',
apiKey: process.env.NOVA_POSHTA_API_KEY,
})
.use(new AddressService())
.use(new ReferenceService())
.use(new TrackingService());
// Use the namespaced API
const cities = await client.address.searchCities({ FindByString: '袣懈褩胁', Limit: 10 });
const cargoTypes = await client.reference.getCargoTypes();
const tracking = await client.tracking.trackDocument({ Documents: ['20450123456789'] });
console.log('Found cities:', cities.data.length);
console.log('Package status:', tracking.data[0].Status);
MCP Server for AI Assistants
Add to your .mcp.json or Claude Desktop config:
{
"mcpServers": {
"novaposhta": {
"command": "npx",
"args": ["-y", "-p", "@shopana/novaposhta-mcp-server", "novaposhta-mcp"],
"env": {
"NOVA_POSHTA_API_KEY": "your_api_key_here"
}
}
}
}
Then ask Claude:
- "Track Nova Poshta package 20450123456789"
- "Find warehouses in Kyiv with POS terminals"
- "Calculate shipping cost from Kyiv to Lviv for 5kg parcel"
馃彈锔� Architecture
All carrier clients in this monorepo follow a consistent, battle-tested design pattern:
鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
鈹� Your Application 鈹�
鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
鈹�
鈻�
鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
鈹� Plugin-based API Client 鈹�
鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
鈹� 鈹� Address 鈹� 鈹俁eference 鈹� 鈹俆racking 鈹� 鈹�
鈹� 鈹� Service 鈹� 鈹� Service 鈹� 鈹� Service 鈹� 鈹�
鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹� 鈹�
鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
鈹�
鈻�
鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
鈹� Transport Layer (Injectable) 鈹�
鈹� fetch / axios / custom 鈹�
鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
Key Principles
- 馃攲 Plugin-based: Connect only the services you need
- 馃幆 Type-safe: Complete TypeScript coverage with inference
- 馃帹 Transport-agnostic: Use fetch, axios, or custom HTTP client
- 馃尦 Tree-shakeable: Optimal bundle size - only what you use
- 馃摏 Namespaced API: Clean, organized method calls
- 馃И Testable: Mock transport layer for unit tests
馃摎 Documentation
Package Documentation
Additional Resources
馃洜锔� Development
Prerequisites
- Node.js 18+ or 20+
- Yarn 3+ (Yarn Workspaces)
Setup
# Clone the repository
git clone https://github.com/shopanaio/carrier-api.git
cd carrier-api
# Install dependencies
yarn install
# Build all packages
yarn build
Available Scripts
# Development
yarn dev # Watch mode for API client
yarn dev:mcp:stdio # Run MCP server in stdio mode
yarn dev:mcp:http # Run MCP server in HTTP mode
# Building
yarn build # Build API client
yarn build:mcp # Build MCP server
# Testing
yarn test # Run all tests
yarn test:watch # Run tests in watch mode
yarn test:coverage # Generate coverage report
yarn test:mcp # Run MCP server tests
# Code Quality
yarn lint # Lint TypeScript files
yarn lint:fix # Fix linting issues
yarn format # Format code with Prettier
yarn format:check # Check code formatting
yarn type-check # Run TypeScript type checking
Project Structure
carrier-api/
鈹溾攢鈹� packages/
鈹� 鈹溾攢鈹� novaposhta-api-client/ # Core API client
鈹� 鈹� 鈹溾攢鈹� src/
鈹� 鈹� 鈹� 鈹溾攢鈹� core/ # Client core logic
鈹� 鈹� 鈹� 鈹溾攢鈹� services/ # Service plugins
鈹� 鈹� 鈹� 鈹溾攢鈹� types/ # TypeScript types
鈹� 鈹� 鈹� 鈹斺攢鈹� index.ts
鈹� 鈹� 鈹斺攢鈹� package.json
鈹� 鈹�
鈹� 鈹溾攢鈹� novaposhta-mcp-server/ # MCP server for AI
鈹� 鈹� 鈹溾攢鈹� src/
鈹� 鈹� 鈹� 鈹溾攢鈹� cli/ # CLI entry points
鈹� 鈹� 鈹� 鈹溾攢鈹� tools/ # MCP tools
鈹� 鈹� 鈹� 鈹溾攢鈹� server.ts # Server implementation
鈹� 鈹� 鈹� 鈹斺攢鈹� config.ts
鈹� 鈹� 鈹斺攢鈹� package.json
鈹� 鈹�
鈹� 鈹斺攢鈹� novaposhta-transport-fetch/ # Fetch transport
鈹� 鈹溾攢鈹� src/
鈹� 鈹斺攢鈹� package.json
鈹�
鈹溾攢鈹� e2e/ # End-to-end tests
鈹溾攢鈹� postman/ # Postman collections
鈹溾攢鈹� .mcp.json # MCP server config
鈹斺攢鈹� package.json # Root package.json
馃 Contributing
We welcome contributions from the community! Whether it's bug fixes, new features, documentation improvements, or examples - all contributions are appreciated.
How to Contribute
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes: Follow our coding standards
- Add tests: Ensure your changes are tested
- Run tests:
yarn test- make sure everything passes - Commit your changes:
git commit -m 'feat: add amazing feature' - Push to your fork:
git push origin feature/amazing-feature - Open a Pull Request
Development Guidelines
- Write clean, readable TypeScript code
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
- Use conventional commits (feat, fix, docs, chore, etc.)
Reporting Issues
Found a bug or have a feature request? Please open an issue with:
- Clear description of the issue
- Steps to reproduce (for bugs)
- Expected vs actual behavior
- Environment details (Node.js version, OS, etc.)
馃椇锔� Roadmap
Planned Features
- Additional carrier integrations
- GraphQL API layer
- React hooks package
- CLI tool for common operations
- Webhook handling utilities
- Rate limiting and retry strategies
- Caching layer with configurable adapters
Future Carriers
Eastern Europe:
- Ukrposhta
- Meest
- Justin
- Delivery
International:
- DHL
- FedEx
- UPS
- DPD
Want to help implement these? Contributions welcome!
馃搳 Status
| Package | Version | Build | Coverage | Downloads |
|---|---|---|---|---|
| @shopana/novaposhta-api-client | ||||
| @shopana/novaposhta-mcp-server | ||||
| @shopana/novaposhta-transport-fetch |
馃搫 License
Apache License 2.0 - see LICENSE for details.
This project is licensed under the Apache License 2.0, which means:
- 鉁� Commercial use allowed
- 鉁� Modification allowed
- 鉁� Distribution allowed
- 鉁� Patent use allowed
- 鉁� Private use allowed
馃挰 Support & Community
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@shopana.io
- Website: shopana.io
馃檹 Acknowledgments
- Nova Poshta for their comprehensive API
- Model Context Protocol team at Anthropic
- All contributors who help improve this project
Made with 鉂わ笍 by Shopana.io