James Smith's recommended approach could work for you unless you're just looking for something simpler e.g. similar to fields that can be used across channels.
A starting place for that is as Jeremy said, i.e. SEO Lite. However, it is very basic, it's limited to those specific inputs and entries alone.
SurgeEO($) ties SEO/meta data to urls as opposed to content, but it seems to have the same limitation as SEO Lite, i.e. hardcoded inputs so you can't really get variety of metadata out of it.
SEOverride($) is a similar concept with a different interface, except instead of individual hardcoded inputs you have a simple grid/matrix-like option, where the type of meta data and its values for a given URL are entirely up to you.
I haven't used any of these yet but I'm personally going with SEOverride as it allows me to add Facebook Open Graph tags and whatever else I want in the future with relative ease. Don't have to think about what fields to add to which channel, minimal effort for templating, content entry is channel/entry/category agnostic, so it can suit the organization's needs if they decide to change or add things on a whim.