该项目提供了一个模型上下文协议(MCP)服务器,该服务器暴露了与Jama Connect实例交互的只读工具。它作为官方Jama Software py-jama-rest-client库的MCP封装。
免责声明: 这是一个第三方开源项目,并未得到Jama Software的正式认可或支持。
注意: 当前此服务器仅支持只读操作。写入操作可能在未来更新中添加。
此MCP服务器故意不发布到PyPI或其他索引上。这一决定鼓励用户:
这种方法优先考虑安全意识和用户控制而非便利性,减轻了安装未经验证的第三方包所带来的风险。当前唯一支持的方法是通过克隆仓库进行本地执行。
克隆仓库:
git clone https://github.com/t-j-thomas/jama-mcp-server.git
cd jama-mcp-server
Docker构建:
sudo docker build -t jama-mcp-server .
这将使用项目的pyproject.tonl及uv.lock配置来构建Docker镜像。
由于Jama Rest Client仓库证书问题导致的构建问题:
如果您看到类似certificate verification failed: CAFile的错误,您可以选择
将https://github.com/jamasoftware-ps/py-jama-rest-client.git仓库克隆到此目录,并取消注释
# py-jama-rest-client = { path = "./py-jama-rest-client", editable = true }
从pyproject.toml文件中,并注释掉
py-jama-rest-client = { git = "https://github.com/jamasoftware-ps/py-jama-rest-client.git" }。
然后,
uv sync
sudo docker build -t jama-mcp-server .
克隆仓库:
git clone https://github.com/t-j-thomas/jama-mcp-server.git
cd jama-mcp-server
安装依赖项:
导航到服务器目录并使用uv创建虚拟环境并安装依赖项。
uv sync
这将安装所需的依赖项,包括如果您计划使用AWS参数存储来存储凭证,则需要安装boto3。
服务器需要环境变量来连接您的Jama Connect实例,使用OAuth 2.0。凭证可以直接提供或从AWS参数存储中安全地获取。
认证方法:
直接环境变量:
JAMA_URL(必需):您的Jama Connect实例的基本URL(例如,https://yourcompany.jamacloud.com)。JAMA_CLIENT_ID(如果使用此方法则必需):您的Jama API OAuth客户端ID。JAMA_CLIENT_SECRET(如果使用此方法则必需):您的Jama API OAuth客户端密钥。JAMA_CLIENT_ID和JAMA_CLIENT_SECRET,它们将被直接使用,而忽略AWS参数存储配置。AWS参数存储(不支持Docker):
JAMA_CLIENT_ID和JAMA_CLIENT_SECRET未直接设置在环境中时使用。JAMA_URL(必需):您的Jama Connect实例的基本URL。JAMA_AWS_SECRET_PATH(如果使用此方法则必需):包含您的Jama凭证的AWS参数存储中的完整名称/路径。
{"client_id": "YOUR_JAMA_CLIENT_ID", "client_secret": "YOUR_JAMA_CLIENT_SECRET"}。JAMA_AWS_PROFILE(可选):用于向AWS身份验证的AWS命名配置文件。如果没有设置,boto3将使用其默认凭证解析。您的当前AWS会话凭证需要有效(或过期后刷新)。boto3库(uv sync会处理这一点),并且服务器执行环境需要有适当的AWS权限以访问指定的参数存储密钥。服务器首先检查JAMA_CLIENT_ID和JAMA_CLIENT_SECRET。如果两者都存在,将使用它们。否则,它将检查JAMA_AWS_SECRET_PATH并尝试从AWS获取凭证。如果两种方法都无法提供必要的凭证(且模拟模式关闭),服务器将无法启动。
模拟模式(可选):
无需连接到实时Jama实例即可进行测试:
JAMA_MOCK_MODE:设置为true以使用内置模拟客户端。服务器将返回预定义的样本数据。任何其他值(或省略该变量)禁用模拟模式。设置环境变量:
在MCP客户端将启动服务器进程的环境中设置这些变量。这可能是:
export JAMA_URL=...)。您可以直接运行服务器进行基本检查,确保已设置环境变量:
# 确保您在jama-mcp-server目录中
uv run python -m jama_mcp_server.server
test_mcp_client.py进行测试此仓库包含一个测试客户端脚本(test_mcp_client.py),可用于直接通过标准I/O调用服务器的工具,主要用于调试或快速检查,特别是在模拟模式下。
要运行测试客户端:
# 确保您在jama-mcp-server目录中
# 此脚本自动将JAMA_MOCK_MODE设置为true,以便启动的服务器
uv run python test_mcp_client.py
脚本将启动服务器,调用各种预定义的工具(包括模拟模式下的成功和预期失败案例),打印结果,并提供总结。您可以修改此脚本来测试特定的工具或场景。
配置您的MCP客户端(如Cline、RooCode、Claude Desktop)通过其设置(例如mcp_settings.json)来启动此服务器。
示例Docker配置(mcp_settings.json):
{
"mcpServers": {
"jama-mcp": {
"command": "docker",
"args": ["run", "--rm", "-i",
"-e", "JAMA_URL", "-e", "JAMA_CLIENT_ID", "-e", "JAMA_CLIENT_SECRET", "-e", "JAMA_MOCK_MODE",
"jama-mcp-server"
],
"env": {
"JAMA_URL": "https://your-jama-instance.com",
"JAMA_CLIENT_ID": "your-client-id",
"JAMA_CLIENT_SECRET": ""
}
},
}
}
示例UV配置(m_cpc_settings.json`):
{
"mcpServers": {
"jama-mcp": {
"command": "uv",
"args": [
"run",
"python",
"-m",
"jama_mcp_server.server"
],
"cwd": "/path/to/your/clone/jama-mcp-server",
"env": {
"JAMA_URL": "https://your.jama.instance.com",
"JAMA_CLIENT_ID": "your_client_id",
"JAMA_CLIENT_SECRET": "your_client_secret",
"JAMA_AWS_SECRET_PATH": "/path/to/your/jama/secret",
"JAMA_AWS_PROFILE": "your-aws-profile-name",
"JAMA_MOCK_MODE": "false"
}
}
}
}
关键点:
cwd路径对于uv找到项目上下文至关重要。此服务器提供了多种只读工具。连接后,请参阅您的MCP客户端界面以获取完整列表。示例包括get_jama_projects、get_jama_item、get_jama_relationships等。
此项目根据MIT许可证授权。详情请参阅LICENSE文件。
欢迎贡献和反馈!请参阅CONTRIBUTING.md文件了解指南。
JAMA_URL是否正确。JAMA_CLIENT_ID和JAMA_CLIENT_SECRET是否设置正确。这些优先级最高。JAMA_AWS_SECRET_PATH是否正确。{"client_id": "...", "client_secret": "..."}。boto3是否正确安装(uv sync)。JAMA_AWS_PROFILE,确保配置文件存在且配置正确。JAMA_MOCK_MODE环境变量设置为确切的true。