Para について
Paraは、オブジェクトの保存と検索を必要とするアプリ開発者向けのマルチテナント型バックエンドサーバー/フレームワークです。JVMアプリへの組み込みと単独のAPIサーバー運用に対応し、AIエージェント用のMCPサーバーも備えています。
主な機能
- 01マルチテナントのオブジェクト保存と検索
- 02データベースに依存しないデータ保存
- 03全文検索とオブジェクトキャッシュ
- 04権限管理とJWT認証
- 05プラグイン構成とWebコンソール
活用シーン
- 01Web・モバイルアプリのバックエンド構築
- 02複数アプリ間のデータ分離
- 03MCP経由でのAIエージェントによるバックエンド操作
MCP 対応
Paraは、AIエージェントがバックエンドと対話するためのMCPサーバーを備えています。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
http://localhost:8080/v1/_mcpclaude mcp add --transport http para http://localhost:8080/v1/_mcp{"mcpServers":{"para":{"type":"http","url":"http://localhost:8080/v1/_mcp"}}}Cursor で開く{"servers":{"para":{"type":"http","url":"http://localhost:8080/v1/_mcp"}}}VS Code で開く{"mcpServers":{"para":{"type":"http","url":"http://localhost:8080/v1/_mcp"}}}{"mcpServers":{"para":{"serverUrl":"http://localhost:8080/v1/_mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
http://localhost:8080/v1/_mcp認証が必要ツール
詳細

クラウド向けのスケーラブルなマルチテナント型バックエンド。
Para は、オブジェクトの永続化と取得のための、スケーラブルなマルチテナント型バックエンドサーバー/フレームワークです。 バックエンドの操作を担うことで、アプリケーションの構築やプロトタイプの作成を迅速化できます。 JVM ベースのアプリケーションの一部として利用することも、複数のアプリケーションやクライアントが接続する、スタンドアロンのマルチテナント型 API サーバーとしてデプロイすることもできます。
「pára」はブルガリア語で「蒸気」を意味します。蒸気がさまざまなものを動かすために使われるように、 Para を使ってモバイルアプリや Web アプリのバックエンドを動かすことができます。
Para とほかのオープンソースのバックエンドフレームワークとの比較をご覧ください。
このプロジェクトは、独立したブートストラップ企業である Erudika によって全面的に資金提供され、サポートされています。
機能
- Amazon の Signature V4 アルゴリズムで保護された RESTful JSON API
- データベースに依存せず、スケーラブルなデータストア(DynamoDB、Cassandra、MongoDB など)向けに設計
- 全文検索(Lucene、Elasticsearch)
- 分散オブジェクトキャッシュとローカルオブジェクトキャッシュ(Hazelcast、Caffeine)
- マルチテナント:各アプリが独自のテーブル、インデックス、キャッシュを持ちます
- 署名付きペイロードを使用する Webhook
- Spring Security に基づく柔軟なセキュリティ(LDAP、SAML、ソーシャルログイン、CSRF 保護など)
- JSON Web Token(JWT)によるステートレスなクライアント認証
- クライアントアクセス制御のための、シンプルで効果的なリソース権限
- JSR-303 と Hibernate Validator に基づく堅牢な制約検証メカニズム
- オブジェクトごとに永続化、インデックス、キャッシュ操作を制御
- 楽観的ロックとトランザクションをサポート(各
DAOがネイティブに実装) - 高度なシリアライズおよびデシリアライズ機能(Jackson)
- 監視と診断のための包括的なメトリクス(Dropwizard)
- Google Guice を活用したモジュール設計とプラグインのサポート
- 言語パックの翻訳や通貨の処理に使える I18n ユーティリティ
- Jetty を組み込んだスタンドアロンの実行可能 JAR
multipart/form-dataリクエストを受け付ける公開エンドポイントによる HTML フォーム処理- MCP サーバー:AI エージェントがバックエンドとやり取りできるようにします
- Para Web Console - 管理ユーザーインターフェース
アーキテクチャ
+----------------------------------------------------------+
| ____ ___ _ ____ ___ _ |
| / __ \/ __` / ___/ __` / |
| / /_/ / /_/ / / / /_/ / |
| / .___/\__,_/_/ \__,_/ +-------------+
| /_/ | Persistence |
+-------------------+ +-----------------+ +-------------+
| REST API | | Search |---| Cache |
+---------+---------+--+--------+--------+---+------+------+
| | |
+---------+---------+ +--------+--------+ +------+------+
| Signed Requests | | Search Index | | Data Store |
| and JWT Tokens | | (Any) | | (Any) |
+----+---------^----+ +-----------------+ +-------------+
| |
+----v---------+-------------------------------------------+
| Clients: JavaScript, PHP, Java, C#, Android, iOS, et al. |
+----------------------------------------------------------+
ドキュメント
ドキュメントを読む
ブログ
ブログで Para について詳しく読む
ホスティング
paraio.com では、ホスティングとプレミアムサポートを提供しており、無料の開発者アカウントで Para をオンラインでお試しいただけます。ウェブコンソールでは、ユーザーやオブジェクトの閲覧・管理、バックアップ、権限の編集を数クリックで行えます。プレミアムアカウントにアップグレードすると、プロジェクトの規模を数秒で拡大・縮小したり、複数のアプリを管理したりできます。
その他のホスティングプロバイダー
クイックスタート
- 最新の実行可能 JAR をダウンロードします
- JAR パッケージと同じディレクトリに、設定ファイル
application.confを作成します。 java -jar -Dconfig.file=./application.conf para-*.jarで Para を起動します。npm install -g para-cliで Para CLI をインストールします。- プロジェクト用の専用アプリを新規作成し、アクセスキーを保存します。
# run setup and set endpoint to either 'http://localhost:8080' or 'https://paraio.com'
# the keys for the root app are inside application.conf
$ para-cli setup
$ para-cli new-app "myapp" --name "My App"
または、Para Web Console を使ってデータを管理するか、以下の API クライアントのいずれかを使って Para をプロジェクトに直接統合できます。
Docker
Para のタグ付き Docker イメージは、Docker Hub の erudikaltd/para にあります。
:latest タグは壊れていたり不安定だったりする可能性があるため、:1.51.0 や :latest_stable などのリリースイメージのみをプルすることを強くおすすめします。
まず、application.conf ファイルと data フォルダーを作成し、Para コンテナーを起動します。
$ touch application.conf && mkdir data
$ docker run -ti -p 8080:8080 --rm -v $(pwd)/data:/para/data \
-v $(pwd)/application.conf:/para/application.conf \
-e JAVA_OPTS="-Dconfig.file=/para/application.conf" erudikaltd/para:latest_stable
環境変数
JAVA_OPTS - Java システムプロパティ。デフォルトは -Dloader.path=lib です。
プラグイン
docker compose を使うと、必要なすべてのプラグインと JDBC ドライバーを含むカスタム Para コンテナーを作成できます。
以下は、para-dao-sql、para-search-lucene、およびデータベースとして PostgreSQL を使って Para をビルドする例です。
- まず、次のようなマルチステージビルドを行う
Dockerfile-pluginsを新規作成します。
-
Dockerfile-pluginsの内容を表示ARG PARA_VERSION="0.0.0" ARG SQL_DAO_VERSION="0.0.0" FROM erudikaltd/para:v${PARA_VERSION} AS base FROM erudikaltd/para-dao-sql:${SQL_DAO_VERSION} AS dao FROM erudikaltd/para-search-lucene:${SEARCH_VERSION} AS search FROM base AS final COPY --from=dao /para/lib/*.jar /para/lib COPY --from=search /para/lib/*.jar /para/lib # EXAMPLE: Add a PostgreSQL JDBC Driver ARG PG_JDBC_VERSION="0.0.0" ADD https://jdbc.postgresql.org/download/postgresql-${PG_JDBC_VERSION}.jar /para/lib/
- 次に、
docker-compose.ymlファイルを作成します。
-
docker-compose.ymlの内容を表示services: para: depends_on: - db build: context: . dockerfile: Dockerfile args: PARA_VERSION: "1.51.0" SQL_DAO_VERSION: "1.49.1" PG_JDBC_VERSION: "42.7.7" image: para-with-plugins pull_policy: never ports: - "8080:8080" volumes: - type: volume source: paraData target: /para/data - type: volume source: paraLib target: /para/lib - type: bind source: ./para-application.conf target: /para/application.conf restart: always environment: - JAVA_OPTS=-Dconfig.file=/para/application.conf -Dloader.path=/para/lib db: image: postgres:latest ports: - "5432:5432" volumes: - type: volume source: postgresData target: /var/lib/postgresql/data restart: always environment: - POSTGRES_PASSWORD=mysecretpassword - PGDATA=/var/lib/postgresql/data volumes: paraData: paraLib: postgresData:
- さらに、Para の設定ファイル
para-application.confを作成します。
-
para-application.confの内容を表示para.env = "production" para.dao = "SqlDAO" para.sql.driver = "org.postgresql.Driver" para.sql.url = "postgresql://db:5432/para" para.sql.user = "postgres" para.sql.password = "mysecretpassword"
- 最後に、
docker compose build para && docker compose upを実行します。
Kubernetes
helm/ フォルダーに Helm チャートがあります。まず helm/para/values.yaml を編集してから、単一のコマンドで Para を Kubernetes にデプロイできます。
cd helm; helm install para ./para
詳しくは、クイックスタートガイド helm/README.md をご覧ください。
Para のビルド
Para は JDK 8 以降でコンパイルできます。
コンパイルには Maven が必要です。準備ができたら、リポジトリをクローンしてビルドします。
$ git clone https://github.com/erudika/para.git && cd para
$ mvn install -DskipTests=true
実行可能な「fat-jar」を生成するには $ mvn package を実行します。生成先は ./para-server/target/para-x.y.z-SNAPSHOT.jar です。
合計で 2 つの JAR ファイルが生成されます。fat JAR のほうが少し大きくなります。
Para のネイティブイメージをビルドするには、次を実行します。
$ cd para-server && mvn -Pnative package
ネイティブイメージはプラットフォームに依存するため、たとえば x86-64 でビルドしたイメージは aarch64 では実行できないことに注意してください。
開発用に Para のローカルインスタンスを実行するには、次を使います。
$ mvn -Dconfig.file=./application.conf spring-boot:run
スタンドアロンサーバー
実行可能な JAR ファイルをダウンロードして実行するか、Para リポジトリをクローンした後にソースからビルドします。 「uber JAR」(fat JAR)ファイルをビルドするには、次の Maven プロファイルを有効にする必要があります。
mvn -Pfatjar,sql,lucene -DskipTests=true package
最後に、Para サーバーを実行します。
java -jar para-X.Y.Z.jar
その後、Para Web Console console.paraio.org でオブジェクトを閲覧できます。 API エンドポイントをローカルサーバーに変更し、アクセスキーを接続してください。 管理インターフェースはクライアント側のみで動作するため、シークレットキーがネットワーク経由で送信されることはありません。代わりに、JWT アクセストークンがローカルで生成され、リクエストごとにサーバーへ送信されます。
JAR をダウンロード
Maven の依存関係
Para を依存関係として追加することで、プロジェクトに統合することもできます。Para は Maven Central で公開されています。
pom.xml に追加する Maven の設定は次のとおりです。
<dependency>
<groupId>com.erudika</groupId>
<artifactId>para-server</artifactId>
<version>{see_green_version_badge_above}</version>
</dependency>
Para に接続する軽量なクライアント専用アプリケーションをビルドする場合は、クライアントモジュールのみを含めます。
<dependency>
<groupId>com.erudika</groupId>
<artifactId>para-client</artifactId>
<version>{see_green_version_badge_above}</version>
</dependency>
コマンドラインツール
- Para CLI:para-cli
$ npm install -g para-cli
API クライアント
これらのクライアントライブラリを使って、Para をプロジェクトにすばやく統合できます。
- Java:para-client
- JavaScript / Node.js:para-client-js
- PHP:para-client-php
- Python:para-client-python
- C# / .NET:para-client-csharp
- Android:para-client-android
- Swift / iOS:para-client-ios
データベース統合
次の DAO 実装を使って、さまざまなデータベースに接続できます。
- DynamoDB:para-dao-dynamodb
- MongoDB:para-dao-mongodb
- Cassandra:para-dao-cassandra
- SQL(H2/MySQL/SQL Server/PostgreSQL など):para-dao-sql
H2DAOはデフォルトのDAOであり、SQL プラグインの一部として JAR ファイルに同梱されています。
検索エンジン統合
Search インターフェースは、次の実装によって実装されています。
- Lucene:para-search-lucene
- Elasticsearch / OpenSearch:para-search-elasticsearch
Elasticsearch v5.x:para-search-elasticsearch-v5[DEPRECATED]ES 5.x のみと互換性があり、AWS Elasticsearch のサポートなど、最新機能の一部は含まれていません。
キャッシュ統合
Cache インターフェースは、次の実装によって実装されています。
- Caffeine:オブジェクトをローカルにキャッシュします(
para-serverに含まれています) - Hazelcast:para-cache-hazelcast(分散型)
キューの実装
Queue インターフェースは、次の実装によって実装されています。
- Amazon SQS:para-queue-sqs、Amazon SQS 用プラグイン
LocalQueue:単一ホストでのデプロイとローカル開発向け
ファイルストレージの実装
FileStore インターフェースは、次の実装によって実装されています。
- Amazon S3:para-storage-s3、Amazon S3 用プラグイン
LocalFileStore:ローカルファイルシステムへのファイル保存用です。
メール送信機能の実装
Emailer インターフェースは、次の実装によって実装されています。
- AWSEmailer:para-email-ses、Amazon SES 用プラグイン
JavaMailEmailer- トランザクションメールを処理するデフォルトの JavaMail 実装
Para を使用しているプロジェクト
- Scoold - オープンソースの Stack Overflow クローン
- ParaIO.com - Para のマネージドホスティング
- Erudika.com - 当社ウェブサイトの検索バーと問い合わせフォームで Para を使用しています
- Angular デモアプリ - Angular のサンプルプロジェクト
- React デモアプリ - React のサンプルプロジェクト
ウィッシュリスト/ロードマップ
- Para
2.0- Java 25 以降のみ、ネイティブイメージ - より使いやすい管理 UI
サポート
Issue を送信して、こちらでサポートを受けられます。また、Gitter チャットルームでもサポートを受けられます。 有償/優先サポートもご利用いただけます。
ヘルプを利用する
- 質問がありますか? - Gitter で質問してください
- バグを見つけましたか? - こちらからバグを報告してください
- Stack Overflow で
paraタグを使って質問してください - Scoold に関する質問は、Stack Overflow で
paraタグを使ってください
コントリビュート
- このリポジトリをフォークし、フォークしたリポジトリを自分のマシンにクローンします
- ブランチを作成します(
git checkout -b my-new-feature) - 新機能を実装するかバグを修正し、テストを追加します
- 変更をコミットします(
git commit -am 'Added a new feature') - GitHub の自分のフォークにブランチをプッシュします(
git push origin my-new-feature) - フォークから新しいプルリクエストを作成します
このプロジェクトのコードスタイルに沿うようにしてください。コードを確認するには、スタイルチェッカーにかけてください。
mvn validate
詳しくは、CONTRIBUTING.md をご覧ください。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。