🚀 Harvestr MCP Server
Harvestr.io は、顧客のフィードバック、発見、コンポーネントを管理するための製品管理プラットフォームです。このサーバーは、そのための Model Context Protocol (MCP) サーバーです。
FastMCP を使用して構築されており、クリーンで Python らしい MCP 開発が可能です。
✨ 主な機能
- 企業: 企業とその属性を一覧表示、作成、更新、管理します。
- コンポーネント: 製品コンポーネントとその階層を閲覧します。
- 発見: 機能要求、バグ、洞察を状態追跡付きでアクセスします。
- フィードバック: メッセージと発見に関連付けられた顧客のフィードバックを管理します。
- メッセージ: 顧客との通信内容にアクセスします。
- ユーザー: ユーザーを一覧表示し、その属性を管理します。
- 属性: ユーザーと企業のカスタムフィールド定義にアクセスします。
🚀 クイックスタート
前提条件
- Python 3.10 以上
- uv (推奨) または pip
- API アクセス権限のある Harvestr.io アカウント
1. リポジトリのクローンとインストール
git clone https://github.com/your-org/harvestr-mcp.git
cd harvestr-mcp
uv pip install -e .
pip install -e .
2. Harvestr API トークンの取得
- Harvestr.io アカウントにログインします。
- 設定 > 統合 > API アクセストークン に移動します。
- 新しいトークンを作成 をクリックし、生成されたトークンをコピーします。
3. API トークンの設定
API トークンを環境変数として設定します。
export HARVESTR_API_TOKEN="your-api-token-here"
$env:HARVESTR_API_TOKEN="your-api-token-here"
set HARVESTR_API_TOKEN=your-api-token-here
永続的な設定を行うには、シェルプロファイル (~/.bashrc, ~/.zshrc など) にエクスポートを追加します。
echo 'export HARVESTR_API_TOKEN="your-api-token-here"' >> ~/.bashrc
source ~/.bashrc
⚠️ 重要提示
API トークンはパスワードと同じように扱ってください。バージョン管理システムにコミットしたり、公開したりしないでください。
4. サーバーの起動
fastmcp run src/harvestr_mcp/server.py:mcp
python -m harvestr_mcp.server
5. MCP Inspector でのテスト (オプション)
サーバーのツールを対話的にテストするには、次のコマンドを実行します。
npx @modelcontextprotocol/inspector fastmcp run src/harvestr_mcp/server.py:mcp
これにより、利用可能なすべてのツールを探索およびテストできる Web インターフェイスが開きます。
📦 インストール
uv を使用する (推奨)
uv pip install -e .
pip を使用する
pip install -e .
💻 使用例
サーバーの起動
Stdio トランスポート (MCP クライアントとのローカル使用)
fastmcp run src/harvestr_mcp/server.py:mcp
python -m harvestr_mcp.server
HTTP トランスポート (リモートアクセス用)
fastmcp run src/harvestr_mcp/server.py:mcp --transport http --port 8000
Claude Desktop での使用
Claude Desktop の設定ファイル (Linux/Mac では ~/.config/claude/claude_desktop_config.json、Windows では %APPDATA%\Claude\claude_desktop_config.json) に以下を追加します。
{
"mcpServers": {
"harvestr": {
"command": "uv",
"args": ["run", "fastmcp", "run", "/path/to/harvestr-mcp/src/harvestr_mcp/server.py:mcp"],
"env": {
"HARVESTR_API_TOKEN": "your-api-token-here"
}
}
}
}
FastMCP クライアントでの使用
import asyncio
from fastmcp import Client
async def main():
async with Client("http://localhost:8000/mcp") as client:
companies = await client.call_tool("harvestr_list_companies")
print(companies)
discovery = await client.call_tool(
"harvestr_get_discovery",
{"discovery_id": "abc123", "include_fields": True}
)
print(discovery)
asyncio.run(main())
利用可能なツール
ユーザー
| ツール |
説明 |
harvestr_list_users |
すべてのユーザーを一覧表示 |
harvestr_get_user |
ID で特定のユーザーを取得 |
harvestr_list_user_attribute_values |
ユーザーの属性値を一覧表示 |
harvestr_update_user_attribute_values |
ユーザーの属性値を更新 |
企業
| ツール |
説明 |
harvestr_list_companies |
すべての企業を一覧表示 (オプション: externalUid でフィルタリング) |
harvestr_create_company |
新しい企業を作成 |
harvestr_get_company |
ID で特定の企業を取得 |
harvestr_update_company |
企業を更新 |
harvestr_list_company_attribute_values |
企業の属性値を一覧表示 |
harvestr_update_company_attribute_values |
企業の属性値を更新 |
コンポーネント
| ツール |
説明 |
harvestr_list_components |
すべてのコンポーネントを一覧表示 (オプション: parentId でフィルタリング) |
harvestr_get_component |
ID で特定のコンポーネントを取得 |
発見
| ツール |
説明 |
harvestr_list_discoveries |
すべての発見を一覧表示 (オプション: parentId、include fields でフィルタリング) |
harvestr_get_discovery |
ID で特定の発見を取得 |
harvestr_get_discovery_state |
発見の現在の状態を取得 |
harvestr_list_discovery_feedback |
発見に関するすべてのフィードバックを一覧表示 |
発見の状態
| ツール |
説明 |
harvestr_list_discovery_states |
すべての発見の状態を一覧表示 |
harvestr_get_discovery_state_by_id |
ID で特定の発見の状態を取得 |
メッセージ
| ツール |
説明 |
harvestr_list_messages |
すべてのメッセージを一覧表示 |
harvestr_get_message |
ID で特定のメッセージを取得 |
harvestr_list_message_feedback |
メッセージに関するすべてのフィードバックを一覧表示 |
フィードバック
| ツール |
説明 |
harvestr_list_feedback |
すべてのフィードバックを一覧表示 (オプション: messageId、discoveryId でフィルタリング) |
harvestr_get_feedback |
ID で特定のフィードバックを取得 |
属性
| ツール |
説明 |
harvestr_list_user_attributes |
すべてのユーザー属性定義を一覧表示 |
harvestr_list_company_attributes |
すべての企業属性定義を一覧表示 |
🔧 開発
開発環境のセットアップ
git clone https://github.com/your-org/harvestr-mcp.git
cd harvestr-mcp
uv pip install -e ".[dev]"
pip install -e ".[dev]"
テストの実行
テストスイートは pytest と pytest-asyncio を使用して非同期テストをサポートしています。
pytest
pytest -v
pytest tests/test_client.py
pytest tests/test_server.py::TestUserTools
pytest --cov=harvestr_mcp
テスト構造
tests/
├── __init__.py
├── conftest.py # 共有フィクスチャとテスト設定
├── test_client.py # Harvestr API クライアントのテスト
├── test_types.py # Pydantic モデルのテスト
└── test_server.py # MCP サーバーツールのテスト
MCP Inspector でのテスト
サーバーの対話的なテストを行うには、次のコマンドを実行します。
npx @modelcontextprotocol/inspector fastmcp run src/harvestr_mcp/server.py:mcp
コードフォーマット
このプロジェクトは Ruff を使用してリントとフォーマットを行っています。
ruff check .
ruff check --fix .
ruff format .
📚 ドキュメント
詳細な API ドキュメントについては、Harvestr API Docs を参照してください。
📄 ライセンス
MIT ライセンス - 詳細は LICENSE を参照してください。