mcp-elm
Servidor MCP do IBM ELM — EWM (work items), DOORS Next (requisitos) e ETM (casos de teste) — para o
power sdd. Expõe operações: o servidor lê a configuração da project area no projeto (pa_<nome>.json) e a
LLM passa só ids e conteúdo. Manual: docs/manual-mcp-elm.md.
Instalação
Publicado no PyPI e já incluído no mcp.json do power sdd; requer o
uv. Em outro cliente MCP:
{
"mcpServers": {
"elm": {
"type": "stdio",
"command": "uvx",
"args": ["mcp-elm@latest"],
"env": { "UV_SYSTEM_CERTS": "true" }
}
}
}
Desenvolvimento:
uv sync
uv run mcp dev mcp_elm/server.py # depuração com o MCP Inspector
Credenciais
~/.config/mcp-elm/elm.properties (Windows: %APPDATA%\mcp-elm\elm.properties; outro caminho: MCP_ELM_CONFIG).
CA próprio: export REQUESTS_CA_BUNDLE=/caminho/ca.pem. Login pelo form Jazz, com Basic se o servidor pedir.
[DEFAULT]
server = https://elm.SEU-SERVIDOR
user = SEU_USUARIO
password = SUA_SENHA
Configuração do projeto
<projeto>/.kiro/config/sdd/pa_<nome>.json, um por project area, gravado pela skill sdd-setup. O schema é o do
power sdd (pa.schema.json); o pacote leva uma cópia
(mcp_elm/pa.schema.json) — mantenha as duas iguais.
Toda tool (menos elm_setup_descobrir) recebe projeto (caminho absoluto do workspace: o Kiro não inicia o MCP
de um power no workspace) e pa (o <nome>; omitido só quando há um arquivo).
Resposta
Um único TextContent, sem structuredContent:
{"ok":true,"dados":{...}}
{"ok":false,"erro":{"codigo":"precondicao","detalhe":"...","campo":"Estimativa"}}
elm_ler_wi e elm_ler_req devolvem Markdown (YAML + corpo); erro nelas sai no envelope. Códigos: config,
credencial, indisponivel (rede ou timeout: tente de novo), nao_encontrado, permissao, precondicao, conflito, entrada.
Tools
| Tool | Faz | dados |
|---|---|---|
elm_status |
confere conexão e pa | login, servidor, pas[], valido, faltando[] |
elm_ler_wi |
lê um work item | Markdown |
elm_listar_wi |
lista por iteração, dono, tipo, pai, prefixo, estado | itens[], truncado, total |
elm_criar_wi |
cria com padrões do pa | id, url, valores_usados |
elm_atualizar_wi |
atualiza um ou vários | atualizados[], falhas[] |
elm_transicao |
assumir · concluir · reabrir | id, estado, dono, ja_estava, pai? |
elm_comentar |
comenta | id |
elm_anexo |
listar · enviar · baixar | anexos[] · nome · caminho |
elm_horas |
horas do WI ou da iteração | lancamentos[], total_h · linhas[], total_h |
elm_lancar_horas |
lança horas (só o dono) | lancado, total_h |
elm_remover_horas |
remove os seus lançamentos numa data | id, data? |
elm_ligar |
implementa, rastreia, afeta, testado por, valida, depende, relacionado | ja_existia |
elm_buscar_req |
busca requisitos por texto | itens[], truncado |
elm_ler_req |
lê um requisito | Markdown |
elm_publicar_req |
cria ou atualiza requisito | id, url, acao |
elm_criar_ct |
cria caso de teste já ligado | id, url |
elm_iteracao |
acha ou cria iteração e planos do time | id, planos, criados[] |
elm_sync |
bundle do DOORS Next (plano, baixar, enviar) | baixar[], enviar[], conflitos[] · feitos[], conflitos[] |
elm_buscar_req_local |
busca no bundle baixado (sentido + palavra) | itens[], indexando?, restantes? |
elm_ler_req_local |
lê documento do bundle (id ou path) com links | path, markdown, links |
elm_listar_req_local |
inventário do bundle | itens[] |
elm_indexar_local |
indexa o bundle em segundo plano; responde na hora com o progresso | documentos, restantes, indexando |
elm_setup_descobrir |
dados para montar o pa | ccm, rm?, qm?, valores_de? |
As _local leem o bundle em <projeto>/<rm.download> (índice em <bundle>/sqlite3/okf.db); depois do
elm_sync baixar, indexe com elm_indexar_local. Sem nada baixado devolvem nao_encontrado com campo: "bundle": baixe com elm_sync ou pesquise no
ELM remoto (elm_buscar_req/elm_ler_req). Detalhes no manual.
Testes e paridade
uv run --with pytest python -m pytest -q
uv run python paridade/paridade.py <projeto> --pa <nome> --wi <id> --req <id> [--iteracao <nome>]
A paridade compara as leituras com o 1.0.43 (commit a73e925) contra o ELM real; veja o manual.
Metadata
Release files for mcp-elm 3.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mcp_elm-3.0.0.tar.gz | 83.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_elm-3.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 148.7 kB
Release files / mcp_elm-3.0.0.tar.gz
| Download URL | mcp_elm-3.0.0.tar.gz |
|---|---|
| Size | 83.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
da07cc3c07c518bf7faba8d2b120e551e2da2aa8eb2a76dee3f39afaa2c977ff
|
|
BLAKE2b-256 checksum How to use checksums |
d0e7fee33f787f3391efb8def0d9b33348dbb89bdc3493785aa87914b3b58e9b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / mcp_elm-3.0.0-py3-none-any.whl
| Download URL | mcp_elm-3.0.0-py3-none-any.whl |
|---|---|
| Size | 65.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cd158f937d55aaf3553180b22a1e90d754d599c90588c7ff2760aba0d9bf1d3b
|
|
BLAKE2b-256 checksum How to use checksums |
dca37649a0734829610986989787895e5ca5080daf5dbc25cdd59ab7daad1bcc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for mcp-elm 3.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.