みらい翻訳APIを活用した翻訳MCPサーバーの構築
Mirai Translate Tech Blog は、MCP(Model Context Protocol)標準規格を活用し、高精度なビジネス・法務翻訳機能を持つカスタム MCP サーバを構築する具体的な実装手順とコード例を公開した。
キーポイント
MCP サーバの役割と構成
LLM アプリケーションが外部システム(DB や API)と連携するための標準プロトコルとして MCP が定義され、本記事では翻訳機能をこのアーキテクチャに統合する構成図を示している。
みらい翻訳API の特徴
高精度な汎用翻訳に加え、特許・法務分野に特化した AI や用語集制御機能を持つ API を利用し、業務文書向けの高品質翻訳を実現する仕組みを解説している。
実装手順と SDK 活用
uv コマンドによるプロジェクト作成から、MCP Python SDK と requests ライブラリの導入、そしてみらい翻訳 API を呼び出すクライアントクラスの具体的なコード実装までを段階的に示している。
詳細な API クライアント設計
UserOption データクラスを用いて翻訳オプション(用語集適応やスタイル制御)を設定し、サブスクリプションキーや言語コードなどを安全に管理する Python コードの構造を提示している。
みらい翻訳APIクライアントの設計
UserOption データクラスを用いて、文章結合や語彙適応などの詳細な翻訳オプションを構造化し、API リクエストに柔軟に適用可能にしています。
多様な機能パラメータのサポート
ユーザー辞書 (UD)、翻訳メモリ (TM)、カスタムログ、アプリID などの追加パラメータをリクエストペイロードに動的に含めることで、高度な翻訳制御を実現しています。
MCP サーバ連携のための実装基盤
JSON ペイロードの構築ロジックと HTTP リクエスト処理を完結させることで、外部 MCP サーバからみらい翻訳 API を呼び出すための堅牢なクライアントクラスを提供しています。
影響分析・編集コメントを表示
影響分析
本記事は、LLM の汎用的な能力を補完するために、ドメイン特化型 API を MCP 標準経由で統合する実用的なパターンを提供しています。これにより、開発者は複雑な独自実装なしに、高精度な翻訳機能を ChatGPT や Claude Desktop などのアプリケーションに組み込むことが可能になり、業務効率化のスピードが向上します。
編集コメント
MCP という新しい標準規格の普及に伴い、特定のドメイン(翻訳など)に特化した API をどう組み込むかという実装事例は非常に貴重です。特に法務や技術文書といった高精度が求められる領域での活用事例として注目されます。

MCP(Model Context Protocol)サーバとは、ChatGPTやClaude Desktop等のLLMを組み込んだアプリケーションが、外部のコンピュータシステムの機能(データベースや、REST APIサーバやOSのAPI等)と接続するために使用するサーバです。
一般的には、下図のように、LLMアプリケーションとMCPサーバが接続され、MCPサーバがデータベースやAPIサーバ等の外部システムと接続されます。

みらい翻訳APIサービスについて
本記事では、みらい翻訳APIサービスを利用した翻訳MCPサーバの構築方法について説明します。
みらい翻訳APIサービスは、高精度翻訳AIに加えて、特許・法務に特化した翻訳AIを提供するAPIサービスです。多言語対応の翻訳APIを提供しており、ビジネス文書や技術文書の翻訳に適しています。また、用語集などで翻訳結果をコントロールすることで自社の社内用語に合わせた翻訳を行うこともできます。
構築するシステムの構成は以下の通りになります。

これによりLLMのアプリケーションの中でも、ビジネスや技術文書に特化した高精度な翻訳を実現することが可能になります。
MCPの公式SDKを使った翻訳MCPサーバの構築
では、ここからみらい翻訳APIを使った翻訳MCPサーバの構築方法について説明します。本記事では、MCPの公式のMCP Python SDKを使って、みらい翻訳APIを呼び出すMCPサーバを構築します。
最初に、MCPサーバのプロジェクトを作成します。以下のuvコマンドを実行して、プロジェクトを作成します。
uv init --package miraitranslate-mcp-server
次に、プロジェクトのディレクトリに移動して、必要なパッケージを追加します。
cd miraitranslate-mcp-server uv add "mcp[cli]" "requests"
みらい翻訳APIクライアントの実装
開発の準備が完了したので、みらい翻訳APIを呼び出すクライアントを実装します。みらい翻訳APIの仕様書を参照しながら、src/miraitranslate_mcp_server/client.py
from dataclasses import dataclass
from typing import List, Optional, Dict, Any
import requests
from urllib.parse import urljoin
@dataclass
class UserOption:
concat: bool = True
adapt_phrases: Optional[List[Dict[str, str]]] = None
jastyle: Optional[str] = None
class MiraiTranslateClient:
def __init__(
self,
base_url: str,
subscription_key: str,
lang_from: str,
lang_to: str,
profile: str = "default",
):
"""
みらいPFテキスト翻訳APIクライアント
Args:
base_url: APIのベースURL
subscription_key: 認証用のサブスクリプションキー
lang_from: 原文言語コード
lang_to: 訳文言語コード
profile: プロファイル名
"""
self.base_url = base_url
self.subscription_key = subscription_key
self.lang_from = lang_from
self.lang_to = lang_to
self.profile = profile
def translate(
self,
sources: List[str],
user_options: Optional[UserOption] = None,
ud_ids: Optional[List[str]] = None,
tm_ids: Optional[List[str]] = None,
user_log: Optional[str] = None,
app_id: Optional[str] = None,
) -> Dict[str, Any]:
"""
テキストを翻訳する
Args:
sources: 翻訳する原文のリスト
user_options: 翻訳オプション
ud_ids: ユーザ辞書IDのリスト
tm_ids: 翻訳メモリIDのリスト
user_log: サーバログに記載される任意の文字列
app_id: サーバログに記載される任意の文字列
Returns:
原文・訳文などのデータを含む翻訳処理結果
"""
if not user_options:
user_options = UserOption()
url = urljoin(self.base_url, "/mt/v2/translate")
params = {
"subscription-key": self.subscription_key,
"langFrom": self.lang_from,
"langTo": self.lang_to,
"profile": self.profile,
}
payload = {
"sources": sources,
"user-options": {
"concat": user_options.concat,
}
}
if user_options.adapt_phrases:
payload["user-options"]["adaptPhrases"] = user_options.adapt_phrases
if user_options.jastyle:
payload["user-options"]["jastyle"] = user_options.jastyle
if ud_ids:
payload["udIds"] = ud_ids
if tm_ids:
payload["tmIds"] = tm_ids
if user_log:
payload["userLog"] = user_log
if app_id:
payload["appId"] = app_id
response = requests.post(url, params=params, json=payload)
response.raise_for_status()
return response.json()
MCPサーバからみらい翻訳APIクライアントの呼び出しの実装
MCPサーバ内のクライアントクラスからみらい翻訳APIを呼び出す部分の実装は完了しました。次に、このクライアントを使ったMCPサーバの実装を行います。src/miraitranslate_mcp_server/server.py
from mcp.server.fastmcp import FastMCP
import os
from miraitranslate_mcp_server.client import MiraiTranslateClient
みらい翻訳APIのベースURLとサブスクリプションキーは環境変数から取得します。
base_url = os.getenv("MIRAITRANSLATE_API_BASE_URL")
subscription_key = os.getenv("MIRAITRANSLATE_SUBSCRIPTION_KEY")
mcp = FastMCP("Translation MCP Server") # 1. MCPサーバのインスタンスを作成
2. MCPのツールの定義。Docstringを使って、ツールの説明を記述します。この説明は、MCPクライアントのLLMが読み取って呼び出しを判断しますので、過不足のない厳密な仕様を記述してください。
@mcp.tool()
def translate(text: str, source_language: str, target_language: str) -> str:
"""
指定された言語ペアでテキストを翻訳します。
Args:
text: 翻訳するテキスト
source_language: 原文言語コード。以下のいずれかを指定します。
- en: 英語
- ja: 日本語
- zh: 中国語
target_language: 訳文言語コード。以下のいずれかを指定します。
- en: 英語
- ja: 日本語
- zh: 中国語
Returns:
翻訳結果
"""
client = MiraiTranslateClient(
base_url=base_url,
subscription_key=subscription_key,
lang_from=source_language,
lang_to=target_language,
profile="default"
)
logging.info(f"base_url: {base_url}, subscription_key: {subscription_key}, source_language: {source_language}, target_language: {target_language}, text: {text}")
result = client.translate(sources=[text])
return result["translations"][0]
def main() -> None:
mcp.run()
1.では、MCPサーバのインスタンスを作成しています。FastMCP
2.では、MCPのツールを定義しています。このツールは、指定された言語ペアでテキストを翻訳する機能を提供します。MiraiTranslateClient
MCPのサーバ(今回作成するサーバ)とMCPのクライアント(Cursor等のLLMアプリケーション)は、最初に下図のようなやり取りを行います。

上記のレスポンスの初期化では、MCPサーバが提供するツール(@mcp.tool()
MCPサーバが提供する機能には以下のようなものがあります。
tools: @mcp.tool()
resources: @mcp.resource()
prompts: @mcp.prompt()
最後にsrc/miraitranslate_mcp_server/__init__.py
import miraitranslate_mcp_server.server as server
def main() -> None:
server.main()
翻訳MCPサーバの実装が完了したので、次にLLMアプリケーションと接続します。ここでは、Cursorを使った接続方法を説明します。
Cursorを起動して、右上の歯車のアイコンをクリックしCursor Settings

{
"mcpServers": {
"みらい翻訳": {
"command": "uv",
"args": [
"run",
"--directory",
"/<MCPサーバのパス>/miraitranslate-mcp-server",
"miraitranslate-mcp-server"
],
"env": {
"MIRAITRANSLATE_API_BASE_URL": "<みらい翻訳APIのベースURL>",
"MIRAITRANSLATE_SUBSCRIPTION_KEY": "<みらい翻訳APIのサブスクリプションキー>"
}
}
}
}
<みらい翻訳APIのベースURL>
<みらい翻訳APIのサブスクリプションキー>
Windows環境でCursorを使用していて、みらい翻訳MCPサーバをWSL上で実行している場合は、以下のように設定します。
{
"mcpServers": {
"みらい翻訳": {
"command": "wsl.exe",
"args": [
"bash -c 'UV_ENV_FILE=/<MCPサーバのパス>/miraitranslate-mcp-server/.env /<uvコマンドへのパス>/uv run --directory /<MCPサーバのパス>/miraitranslate-mcp-server miraitranslate-mcp-server'"
]
}
}
}
MIRAITRANSLATE_API_BASE_URL=<みらい翻訳APIのベースURL>
MIRAITRANSLATE_SUBSCRIPTION_KEY=<みらい翻訳APIのサブスクリプションキー>
設定が完了したら、CursorのChat画面で以下のように入力して翻訳MCPサーバを呼び出します。(この文章は弊社のVISONです。)
みらい翻訳で以下を英語に翻訳してください。
言語の壁を超え、新しい生活と仕事の様式をもたらす共通語の機能を機械翻訳として2028年までに作る。
以下の画面のように、翻訳結果が表示されます。

ちなみに、Mirai TranslatorのWeb版でも同じ翻訳結果が得られます。

本記事では、みらい翻訳APIを使った翻訳MCPサーバの構築方法について説明しました。MCPサーバを使うことで、LLMアプリケーションから外部システムの機能を簡単に呼び出すことができ、ビジネスや技術文書の翻訳に特化した高精度な翻訳を実現することが可能になります。
原文を表示

MCP(Model Context Protocol)サーバとは、ChatGPTやClaude Desktop等のLLMを組み込んだアプリケーションが、外部のコンピュータシステムの機能(データベースや、REST APIサーバやOSのAPI等)と接続するために使用するサーバです。
一般的には、下図のように、LLMアプリケーションとMCPサーバが接続され、MCPサーバがデータベースやAPIサーバ等の外部システムと接続されます。

みらい翻訳APIサービスについて
本記事では、みらい翻訳APIサービスを利用した翻訳MCPサーバの構築方法について説明します。
みらい翻訳APIサービスは、高精度翻訳AIに加えて、特許・法務に特化した翻訳AIを提供するAPIサービスです。多言語対応の翻訳APIを提供しており、ビジネス文書や技術文書の翻訳に適しています。また、用語集などで翻訳結果をコントロールすることで自社の社内用語に合わせた翻訳を行うこともできます。
構築するシステムの構成は以下の通りになります。

これによりLLMのアプリケーションの中でも、ビジネスや技術文書に特化した高精度な翻訳を実現することが可能になります。
MCPの公式SDKを使った翻訳MCPサーバの構築
では、ここからみらい翻訳APIを使った翻訳MCPサーバの構築方法について説明します。本記事では、MCPの公式のMCP Python SDKを使って、みらい翻訳APIを呼び出すMCPサーバを構築します。
最初に、MCPサーバのプロジェクトを作成します。以下のuvコマンドを実行して、プロジェクトを作成します。
uv init --package miraitranslate-mcp-server
次に、プロジェクトのディレクトリに移動して、必要なパッケージを追加します。
cd miraitranslate-mcp-server uv add "mcp[cli]" "requests"
みらい翻訳APIクライアントの実装
開発の準備が完了したので、みらい翻訳APIを呼び出すクライアントを実装します。みらい翻訳APIの仕様書を参照しながら、src/miraitranslate_mcp_server/client.py
from dataclasses import dataclass from typing import List, Optional, Dict, Any import requests from urllib.parse import urljoin @dataclass class UserOption: concat: bool = True adapt_phrases: Optional[List[Dict[str, str]]] = None jastyle: Optional[str] = None class MiraiTranslateClient: def __init__( self, base_url: str, subscription_key: str, lang_from: str, lang_to: str, profile: str = "default", ): """ みらいPFテキスト翻訳APIクライアント Args: base_url: APIのベースURL subscription_key: 認証用のサブスクリプションキー lang_from: 原文言語コード lang_to: 訳文言語コード profile: プロファイル名 """ self.base_url = base_url self.subscription_key = subscription_key self.lang_from = lang_from self.lang_to = lang_to self.profile = profile def translate( self, sources: List[str], user_options: Optional[UserOption] = None, ud_ids: Optional[List[str]] = None, tm_ids: Optional[List[str]] = None, user_log: Optional[str] = None, app_id: Optional[str] = None, ) -> Dict[str, Any]: """ テキストを翻訳する Args: sources: 翻訳する原文のリスト user_options: 翻訳オプション ud_ids: ユーザ辞書IDのリスト tm_ids: 翻訳メモリIDのリスト user_log: サーバログに記載される任意の文字列 app_id: サーバログに記載される任意の文字列 Returns: 原文・訳文などのデータを含む翻訳処理結果 """ if not user_options: user_options = UserOption() url = urljoin(self.base_url, "/mt/v2/translate") params = { "subscription-key": self.subscription_key, "langFrom": self.lang_from, "langTo": self.lang_to, "profile": self.profile, } payload = { "sources": sources, "user-options": { "concat": user_options.concat, } } if user_options.adapt_phrases: payload["user-options"]["adaptPhrases"] = user_options.adapt_phrases if user_options.jastyle: payload["user-options"]["jastyle"] = user_options.jastyle if ud_ids: payload["udIds"] = ud_ids if tm_ids: payload["tmIds"] = tm_ids if user_log: payload["userLog"] = user_log if app_id: payload["appId"] = app_id response = requests.post(url, params=params, json=payload) response.raise_for_status() return response.json()
MCPサーバからみらい翻訳APIクライアントの呼び出しの実装
MCPサーバ内のクライアントクラスからみらい翻訳APIを呼び出す部分の実装は完了しました。次に、このクライアントを使ったMCPサーバの実装を行います。src/miraitranslate_mcp_server/server.py
from mcp.server.fastmcp import FastMCP import os from miraitranslate_mcp_server.client import MiraiTranslateClient # みらい翻訳APIのベースURLとサブスクリプションキーは環境変数から取得します。 base_url = os.getenv("MIRAITRANSLATE_API_BASE_URL") subscription_key = os.getenv("MIRAITRANSLATE_SUBSCRIPTION_KEY") mcp = FastMCP("Translation MCP Server") # 1. MCPサーバのインスタンスを作成 # 2. MCPのツールの定義。Docstringを使って、ツールの説明を記述します。この説明は、MCPクライアントのLLMが読み取って呼び出しを判断しますので、過不足のない厳密な仕様を記述してください。 @mcp.tool() def translate(text: str, source_language: str, target_language: str) -> str: """ 指定された言語ペアでテキストを翻訳します。 Args: text: 翻訳するテキスト source_language: 原文言語コード。以下のいずれかを指定します。 - en: 英語 - ja: 日本語 - zh: 中国語 target_language: 訳文言語コード。以下のいずれかを指定します。 - en: 英語 - ja: 日本語 - zh: 中国語 Returns: 翻訳結果 """ client = MiraiTranslateClient( base_url=base_url, subscription_key=subscription_key, lang_from=source_language, lang_to=target_language, profile="default" ) logging.info(f"base_url: {base_url}, subscription_key: {subscription_key}, source_language: {source_language}, target_language: {target_language}, text: {text}") result = client.translate(sources=[text]) return result["translations"][0] def main() -> None: mcp.run()
1.では、MCPサーバのインスタンスを作成しています。FastMCP
2.では、MCPのツールを定義しています。このツールは、指定された言語ペアでテキストを翻訳する機能を提供します。MiraiTranslateClient
MCPのサーバ(今回作成するサーバ)とMCPのクライアント(Cursor等のLLMアプリケーション)は、最初に下図のようなやり取りを行います。

上記のレスポンスの初期化では、MCPサーバが提供するツール(@mcp.tool()
MCPサーバが提供する機能には以下のようなものがあります。
tools: @mcp.tool()
resources: @mcp.resource()
prompts: @mcp.prompt()
最後にsrc/miraitranslate_mcp_server/__init__.py
import miraitranslate_mcp_server.server as server def main() -> None: server.main()
翻訳MCPサーバの実装が完了したので、次にLLMアプリケーションと接続します。ここでは、Cursorを使った接続方法を説明します。
Cursorを起動して、右上の歯車のアイコンをクリックしCursor Settings

{ "mcpServers": { "みらい翻訳": { "command": "uv", "args": [ "run", "--directory", "/<MCPサーバのパス>/miraitranslate-mcp-server", "miraitranslate-mcp-server" ], "env": { "MIRAITRANSLATE_API_BASE_URL": "<みらい翻訳APIのベースURL>", "MIRAITRANSLATE_SUBSCRIPTION_KEY": "<みらい翻訳APIのサブスクリプションキー>" } } } }
<みらい翻訳APIのベースURL>
<みらい翻訳APIのサブスクリプションキー>
Windows環境でCursorを使用していて、みらい翻訳MCPサーバをWSL上で実行している場合は、以下のように設定します。
{ "mcpServers": { "みらい翻訳": { "command": "wsl.exe", "args": [ "bash -c 'UV_ENV_FILE=/<MCPサーバのパス>/miraitranslate-mcp-server/.env /<uvコマンドへのパス>/uv run --directory /<MCPサーバのパス>/miraitranslate-mcp-server miraitranslate-mcp-server'" ] } } }
MIRAITRANSLATE_API_BASE_URL=<みらい翻訳APIのベースURL> MIRAITRANSLATE_SUBSCRIPTION_KEY=<みらい翻訳APIのサブスクリプションキー>
設定が完了したら、CursorのChat画面で以下のように入力して翻訳MCPサーバを呼び出します。(この文章は弊社のVISONです。)
みらい翻訳で以下を英語に翻訳してください。 --- 言語の壁を超え、新しい生活と仕事の様式をもたらす共通語の機能を機械翻訳として2028年までに作る。
以下の画面のように、翻訳結果が表示されます。

ちなみに、Mirai TranslatorのWeb版でも同じ翻訳結果が得られます。

本記事では、みらい翻訳APIを使った翻訳MCPサーバの構築方法について説明しました。MCPサーバを使うことで、LLMアプリケーションから外部システムの機能を簡単に呼び出すことができ、ビジネスや技術文書の翻訳に特化した高精度な翻訳を実現することが可能になります。
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み