shinkuro


Nameshinkuro JSON
Version 0.3.1 PyPI version JSON
download
home_pageNone
SummaryPrompt synchronization MCP server
upload_time2025-10-08 06:43:01
maintainerNone
docs_urlNone
authorNone
requires_python>=3.13
licenseMIT
keywords mcp model-context-protocol prompt
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Shinkuro - Prompt synchronization MCP server

![PyPI - Version](https://img.shields.io/pypi/v/shinkuro)

Loads markdown files from a local folder or git repository and serves them as [MCP Prompts](https://modelcontextprotocol.io/specification/2025-06-18/server/prompts).

Useful when you need to share prompts across organizations.

## Usage

**IMPORTANT**: make sure your MCP client supports the MCP Prompts capability. See the [feature support matrix](https://modelcontextprotocol.io/clients#feature-support-matrix).

### Local Files

Add to your MCP client configuration:

```json
{
  "mcpServers": {
    "shinkuro": {
      "command": "uvx",
      "args": ["shinkuro"],
      "env": {
        "FOLDER": "/path/to/prompts"
      }
    }
  }
}
```

### Git Repository

Add to your MCP client configuration:

```json
{
  "mcpServers": {
    "shinkuro": {
      "command": "uvx",
      "args": ["shinkuro"],
      "env": {
        "GIT_URL": "https://github.com/owner/repo.git",
        "FOLDER": "prompts" // optional, subfolder within git repo
      }
    }
  }
}
```

> This will clone the repository into a local cache dir. Make sure you have correct permission.

### Environment Variables

- `FOLDER`: Path to local folder containing markdown files, or subfolder within git repo
- `GIT_URL`: Git repository URL (supports GitHub, GitLab, SSH, HTTPS with credentials)
- `CACHE_DIR`: Directory to cache cloned repositories (optional, defaults to `~/.shinkuro/remote`)
- `AUTO_PULL`: Whether to pull latest changes if repo exists locally (optional, defaults to `false`)

## Prompt Loading

Each markdown file in the specified folder (including nested folders) is loaded as a prompt.

Example folder structure:

```
my-prompts/
├── think.md
└── dev/
     ├── code-review.md
     └── commit.md
```

The example above will be loaded to 3 prompts: `think`, `code-review` and `commit`.

## Example Prompt Files

### Simplest

```markdown
Commit to git using conventional commit.
```

### Prompt with Metadata

```markdown
---
name: "code-review" # optional, defaults to filename
title: "Code Review Assistant" # optional, defaults to filename
description: "" # optional, defaults to file path
---

# Code Review

Please review this code for best practices and potential issues.
```

### Prompt with Arguments

```markdown
---
name: "greeting"
description: "Generate a personalized greeting message"
arguments:
  - name: "user"
    description: "Name of the user"
    # no default = required parameter
  - name: "project"
    description: "Project name"
    default: "MyApp"
---

Say: Hello {user}! Welcome to {project}. Hope you enjoy your stay!
```

Variables like `{user}` and `{project}` will be replaced with actual values when the prompt is retrieved. Use `{{var}}` (double brackets) to escape and display literal brackets.

## Example Prompt Repositories

- [DiscreteTom/prompts](https://github.com/DiscreteTom/prompts).

## [CHANGELOG](./CHANGELOG.md)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "shinkuro",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.13",
    "maintainer_email": null,
    "keywords": "mcp, model-context-protocol, prompt",
    "author": null,
    "author_email": "DiscreteTom <discrete_tom@outlook.com>",
    "download_url": "https://files.pythonhosted.org/packages/c2/3b/3ed23c224dddd0305978279cc12c911590d7599f6bf52a9e3db30578d2a6/shinkuro-0.3.1.tar.gz",
    "platform": null,
    "description": "# Shinkuro - Prompt synchronization MCP server\n\n![PyPI - Version](https://img.shields.io/pypi/v/shinkuro)\n\nLoads markdown files from a local folder or git repository and serves them as [MCP Prompts](https://modelcontextprotocol.io/specification/2025-06-18/server/prompts).\n\nUseful when you need to share prompts across organizations.\n\n## Usage\n\n**IMPORTANT**: make sure your MCP client supports the MCP Prompts capability. See the [feature support matrix](https://modelcontextprotocol.io/clients#feature-support-matrix).\n\n### Local Files\n\nAdd to your MCP client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"shinkuro\": {\n      \"command\": \"uvx\",\n      \"args\": [\"shinkuro\"],\n      \"env\": {\n        \"FOLDER\": \"/path/to/prompts\"\n      }\n    }\n  }\n}\n```\n\n### Git Repository\n\nAdd to your MCP client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"shinkuro\": {\n      \"command\": \"uvx\",\n      \"args\": [\"shinkuro\"],\n      \"env\": {\n        \"GIT_URL\": \"https://github.com/owner/repo.git\",\n        \"FOLDER\": \"prompts\" // optional, subfolder within git repo\n      }\n    }\n  }\n}\n```\n\n> This will clone the repository into a local cache dir. Make sure you have correct permission.\n\n### Environment Variables\n\n- `FOLDER`: Path to local folder containing markdown files, or subfolder within git repo\n- `GIT_URL`: Git repository URL (supports GitHub, GitLab, SSH, HTTPS with credentials)\n- `CACHE_DIR`: Directory to cache cloned repositories (optional, defaults to `~/.shinkuro/remote`)\n- `AUTO_PULL`: Whether to pull latest changes if repo exists locally (optional, defaults to `false`)\n\n## Prompt Loading\n\nEach markdown file in the specified folder (including nested folders) is loaded as a prompt.\n\nExample folder structure:\n\n```\nmy-prompts/\n\u251c\u2500\u2500 think.md\n\u2514\u2500\u2500 dev/\n     \u251c\u2500\u2500 code-review.md\n     \u2514\u2500\u2500 commit.md\n```\n\nThe example above will be loaded to 3 prompts: `think`, `code-review` and `commit`.\n\n## Example Prompt Files\n\n### Simplest\n\n```markdown\nCommit to git using conventional commit.\n```\n\n### Prompt with Metadata\n\n```markdown\n---\nname: \"code-review\" # optional, defaults to filename\ntitle: \"Code Review Assistant\" # optional, defaults to filename\ndescription: \"\" # optional, defaults to file path\n---\n\n# Code Review\n\nPlease review this code for best practices and potential issues.\n```\n\n### Prompt with Arguments\n\n```markdown\n---\nname: \"greeting\"\ndescription: \"Generate a personalized greeting message\"\narguments:\n  - name: \"user\"\n    description: \"Name of the user\"\n    # no default = required parameter\n  - name: \"project\"\n    description: \"Project name\"\n    default: \"MyApp\"\n---\n\nSay: Hello {user}! Welcome to {project}. Hope you enjoy your stay!\n```\n\nVariables like `{user}` and `{project}` will be replaced with actual values when the prompt is retrieved. Use `{{var}}` (double brackets) to escape and display literal brackets.\n\n## Example Prompt Repositories\n\n- [DiscreteTom/prompts](https://github.com/DiscreteTom/prompts).\n\n## [CHANGELOG](./CHANGELOG.md)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Prompt synchronization MCP server",
    "version": "0.3.1",
    "project_urls": {
        "Homepage": "https://github.com/DiscreteTom/shinkuro",
        "Issues": "https://github.com/DiscreteTom/shinkuro/issues",
        "Repository": "https://github.com/DiscreteTom/shinkuro"
    },
    "split_keywords": [
        "mcp",
        " model-context-protocol",
        " prompt"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bb6e10df05921041491d55a11adbe2931af860b6f003d2a3654549b650261aae",
                "md5": "e172cdf91a6768e5b7a2e5c25398710c",
                "sha256": "5bc08f34364c3cc10dbbd2733f1d60be798f7bf1185a5a2093f9fb7cd9fa3b5f"
            },
            "downloads": -1,
            "filename": "shinkuro-0.3.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e172cdf91a6768e5b7a2e5c25398710c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.13",
            "size": 9133,
            "upload_time": "2025-10-08T06:42:59",
            "upload_time_iso_8601": "2025-10-08T06:42:59.916222Z",
            "url": "https://files.pythonhosted.org/packages/bb/6e/10df05921041491d55a11adbe2931af860b6f003d2a3654549b650261aae/shinkuro-0.3.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c23b3ed23c224dddd0305978279cc12c911590d7599f6bf52a9e3db30578d2a6",
                "md5": "b546ecccb979f0bb4f10e1de567d28ae",
                "sha256": "26d658f4e1daba4e303a6f44333fde4741920fa387abbd8e0f0a16659ded776b"
            },
            "downloads": -1,
            "filename": "shinkuro-0.3.1.tar.gz",
            "has_sig": false,
            "md5_digest": "b546ecccb979f0bb4f10e1de567d28ae",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.13",
            "size": 9592,
            "upload_time": "2025-10-08T06:43:01",
            "upload_time_iso_8601": "2025-10-08T06:43:01.372522Z",
            "url": "https://files.pythonhosted.org/packages/c2/3b/3ed23c224dddd0305978279cc12c911590d7599f6bf52a9e3db30578d2a6/shinkuro-0.3.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-08 06:43:01",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "DiscreteTom",
    "github_project": "shinkuro",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "shinkuro"
}
        
Elapsed time: 0.53130s