This project provides two frontends for the Sentiary REST API.
sentiary-cliprovides direct terminal commands.sentiary-mcpprovides a hosted streamable HTTP MCP service.
Both frontends use the API contract and client in internal/sentiary.
Install the latest release:
curl -fsSL https://raw.githubusercontent.com/MateeDevs/sentiary-mcp-server/main/install.sh | shOn Windows, run this command in PowerShell:
irm https://raw.githubusercontent.com/MateeDevs/sentiary-mcp-server/main/install.ps1 | iexThe installers support AMD64 and ARM64 on macOS, Linux, and Windows.
You can also install the CLI from source:
git clone https://github.com/MateeDevs/sentiary-mcp-server.git
cd sentiary-mcp-server
go install ./cmd/sentiary-cliSet the user API key before you run a command:
export SENTIARY_USER_API_KEY="user-api-key"You can set SENTIARY_PROJECT_ID as the default project ID. A command-level --project-id value takes precedence.
Export Czech strings as JSON to standard output:
sentiary-cli export \
--project-id="asdf" \
--format="json" \
--language="cs_CZ"Write the export to a file:
sentiary-cli export \
--project-id="asdf" \
--format="json" \
--language="cs_CZ" \
--output="strings.json"Import a file:
sentiary-cli import \
--project-id="asdf" \
--format="json" \
--language="cs_CZ" \
--input="strings.json"Use - as the input or output path for a standard stream.
Available commands:
- Projects:
list-projects,get-project,create-project,edit-project,remove-project - Languages:
list-languages,list-project-languages,add-project-language,remove-project-language - Members:
list-project-members,set-project-member-role,remove-project-member - Invitations:
list-invitations,create-invitation,accept-invitation,decline-invitation,list-project-invitations,remove-project-invitation listsearchgetaddeditremoveset-translationremove-translationinfoexportimport
Run sentiary-cli <command> --help to see the command options.
Create a project and add Czech:
sentiary-cli create-project --name="Mobile app"
sentiary-cli add-project-language \
--project-id="asdf" \
--language="cs_CZ"Invite a developer:
sentiary-cli create-invitation \
--project-id="asdf" \
--user-email="developer@example.com" \
--role="developer"Member and invitation roles are administrator, developer, and translator.
Search keys, translations, descriptions, and context:
sentiary-cli search \
--project-id="asdf" \
--query="Ahoj"The hosted frontend reads the user API key when it creates an MCP session. Each session gets a separate API client.
The hosted frontend reads the key from the first available source:
X-Sentiary-User-Api-Key: <key>Authorization: Bearer <key>Authorization: Ribbon <key>SENTIARY_USER_API_KEYin the service environment
The Authorization header can also contain a bare API key.
Example MCP client configuration:
{
"mcpServers": {
"sentiary": {
"type": "http",
"url": "https://mcp.example.com/",
"headers": {
"Authorization": "Bearer user-api-key"
}
}
}
}The hosted frontend uses port 8080 by default. Set PORT to use a different port.
The service exposes MCP at / and its health check at /healthz.
Build both frontends:
mkdir -p bin
go build -o bin/sentiary-cli ./cmd/sentiary-cli
go build -o bin/sentiary-mcp ./cmd/sentiary-mcpBuild and run the hosted frontend:
docker build -t sentiary-mcp .
docker run --rm -p 8080:8080 sentiary-mcpClients can send their own API keys. The container does not need a shared API key.
Project tools:
list_projectsget_projectcreate_projectedit_projectremove_project
Language tools:
list_supported_languageslist_project_languagesadd_project_languageremove_project_language
Member tools:
list_project_membersset_project_member_roleremove_project_member
Invitation tools:
list_invitationscreate_invitationaccept_invitationdecline_invitationlist_project_invitationsremove_project_invitation
String tools:
list_project_stringssearch_project_stringsget_project_stringget_project_string_by_keyadd_project_stringedit_project_stringremove_project_stringset_project_string_translationremove_project_string_translation
Batch tools:
get_project_strings_infoexport_project_stringsimport_project_strings
The batch tools support json, android, apple, and compose formats.
The repository includes two agent skills:
sentiary-climanages Sentiary through the CLI.sentiary-mcpmanages Sentiary through MCP.